アナリティクスとETLパイプライン
(セクション: 技術とインフラ)
概要
分析パイプラインは、「生の」iGaming運用イベント(賭け、預金、PSPのwebhook、ゲームログ)を安定したメトリックショーケース(GGR/NGR、 LTV、保持、不正防止信号)に変えます。支持の主義:単一の層モデル(青銅/銀/金)、器械の訓練DQ/lineage、 incrementalityおよびidempotence、 observabilityおよびSLOの費用管理。ロードプロファイル(トーナメントのピーク)、規制(PII/ローカライズ)、およびデータの鮮度のためのビジネス要件を考慮して決定が行われます。
1)アーキテクチャ: ETL対ELT、バッチ対ストリーム
DWHにロードする前に、Extract→Transform→Load-Transformを実行します。変換が「クラウド」の前に制御された環境/秘密を必要とする場合に適しています。
ELT (Extract→Load→Transform): Lake/Lakehouse/DWHの原材料、SQL/engine (dbt/SQLスクリプト)。カラムエンジンや柔軟な反復作業に便利です。
バッチ:スケジュールされたウィンドウ(毎晩5/15/60分)。安くて予測可能です。
ストリーム:リアルタイム(Kafka→Flink/ksqlDB→OLAP)。ほぼリアルタイムのウィンドウ(5〜60秒)と不正防止/CRM信号の場合。
ハイブリッド:ブロンズはストリーム、シルバー/ゴールド-インクリメンタルバッチモデルで満たします。
推奨事項:iGamingではELT+ストリーミングを維持します:CDC/アウトボックス経由のイベント→ブロンズ(分の新鮮さ)、シルバー/ゴールドの増分変換。
2)メダリオン
ブロンズ(Raw):ビジネスロジックなしのRaw イベント/CDC。Parquet/ORCフォーマット、スキームはそのまま、最小限の検証。
シルバー(適合):クリーニング、重複排除、ID正規化、寸法SCD、通貨/タイムゾーン統一。
ゴールド(マーツ):ビジネスケース(事実/寸法、立方体)、実体化ビュー、事前集計(日/国/製品)。
長所:再現性、透明な進化、レイヤー別の異なるSLOとTTL。
3)ソースとロード: CDC、アウトボックス、ファイル
CDC (Change Data Capture): orderとidempotencyを保証するOLTP (Postgres/MySQL)からの変更フロー。
Outboxパターン:イベントはサービストランザクションのoutboxテーブル/コレクションに書き込まれ、コネクタはバス/レイクにパブリッシュされます。
ファイルアップロード:PSPアップロード、パートナーレポート;マニフェスト、チェックサム、および受信ディレクトリを使用します。
プラクティス:ソースは、各ソースのバージョン(スキーマバージョン)-フィールドと品質の期待の契約。
4)オーケストレーション: DAG、依存関係、展開
DAG:明示的な依存関係(raw→staging→dims→facts→marts)。
タスクidempotency:副作用なしで再実行(partition-overwrite、 'MERGE '/upsert)。
環境の分離:Dev/Stage/Prod、アーティファクトのプロモーション、高価なバックフィルのための「手動承認」。
スケジュール:cron/timeウィンドウ+イベントトリガー(ファイル/パーティーの到着に応じて)。
秘密:秘密のマネージャーから;DAGコードの秘密を禁止します。
python with DAG("dwh_daily", schedule="0 ") as dag:
bronze = ingest_cdc(source="payments", partition=hour())
silver = dedup_normalize(input=bronze)
dims = build_dimensions(input=silver)
facts = build_facts(input=silver, dims=dims)
marts = build_marts(input=facts)
bronze >> silver >> [dims, facts] >> marts
5)データ品質(DQ)と系統
DQ-checks:完全性(count、 late arrivals)、キーの一意性、範囲/ドメインルール(amount ≥ 0、ディレクトリ内の通貨)。
トリガーしきい値:テーブルの重大性に応じてアラートでハードストップ/ソフトフェイル。
Lineage/catalog:レポートからソース(テーブル、列、メトリック)、所有者、ドキュメント、PII分類まで。
スキーマコントロール:自動互換性テスト(後方/前方互換)、「破断」変更のアラート。
6)シミュレーション: SCDの代理のキー、正規化
寸法のSCD2は'valid_from/valid_to/is_current'、サロゲートキー('_sk')、および自然キー('_id')です。
マイナー属性のSCD1-Overwrites(インターフェイスのロケールなど)。
サロゲートキー:結合のための安定した'_sk'、独自性のための自然なキー。
寸法正規化:階層が深いスノーフレーク;それ以外の場合は、速度のための星。
7)増分モデルおよび仕切り
ウォーターマーク('updated_at'、 'ingest_ts'):新しい行/変更された行のみを読み込みます。
増分戦略:ビジネスキーによる'MERGE'、ロットによる'INSERT OVERWRITE'、小ロットの'DELETE+INSERT'。
パーティショニング:日付/時間/地域;クラスタリング(sort keys/Z-order)は、キーをフィルタリングして結合します。
マテリアライズドビュー:GGR/NGRプリアグリゲーション、人気セクションのキャッシュ。
約ユニット:安価なトップNショーケースのためのHLL/approx_distinct。
sql
MERGE INTO fact_deposits f
USING staging_deposits s
ON (f. deposit_id = s. deposit_id)
WHEN MATCHED THEN UPDATE SET amount = s. amount, status = s. status, updated_at = s. updated_at
WHEN NOT MATCHED THEN INSERT (...)
VALUES (...);
8) Backfill、再処理および物語管理
Backfill: リソース制限とウィンドウを持つ個々のDAG;明確な「真実の窓」(例:2024-01-01..2025-11-05).
再処理:決定論的変換→繰り返し実行すると、同じ結果が得られます。モデルコードのロギングバージョン。
タイムトラベル/テーブルバージョン:調査やDRの「論理エラー」に便利です。
リトラクション:ログを使用してポリシーをリトラクト(削除/修正)します。
9)コンベヤーCLO/SLA/SLO
鮮度:ブロンズ≤ 1-5分、シルバー≤ 15分、ゴールド≤ 60分(例)。
信頼性:DAG ≥ 99パスレートx%。
性能:p95/p99ノードの持続期間;パーティー時間の予算。
遅延監視:インジェストストリームの遅延、キューの深さ、「遅いデータ」の共有。
アラート:新鮮さ/ボリュームの違反、DQファイル、スキャンのコストの増加、MVの劣化。
10)コスト: 予測と最適化
パーティションとクラスタはスキャン量を最小限に抑えます。
ホットマーカー(日/国/製品)の具現化。
頻繁に使用されるダッシュボードの結果キャッシュ/MV。
モニターの再起動周波数(理由なく「5分ごと」はありません)。
TTL:積極的なブロンズ保持、ミディアムシルバー、ロングゴールド(集計のみ)。
キャパシティプランニング:カタログメトリック、トーナメント/キャンペーンピークの予測。
11)安全性、PII、ローカリゼーション
データ分類:PII/財務/運用。
暗号化:休息中および通過中;KMS/ロールベースのアクセス。
識別解除:ハッシュ/マスキング、キー付きの列を分離します。
マルチテナンシー用のRLS/blizzards ('tenant_id'による)。
ローカリゼーション:地域別の保管および処理領域(EU/TR/LATAM);許可された場所にのみエクスポートします。
監査:重要なテーブル、ディレクトリアクセスへの読み取り/書き込み。
12)観測可能性: メトリック、ログ、トレイル
パイプラインメトリクス:タスクの期間、キュー、エラー、再試行、処理されたバイト/行、コスト。
ログ:構造化;'trace_id'/'run_id'の相関関係。
トレース:ソースからショーケースへ(ingest→transform→load→BI)。
ダッシュボード:レイヤーの鮮度、DAGの成功、最高の高価な要求、p95/p99。
13)器械(役割のベンチマーク)
オーケストレーション:DAGオーケストレーター(スケジューラ、リトレイ、アラート、シークレット付き)。
変換:SQLモデリング(「models as code」)、モデルのユニットテスト、ドキュメント。
DQ/contracts:データセットの検証フレームワークとSLA。
Lineage/Catalog:自動依存グラフ、find owner。
ストリーミング:ウィンドウ/集計プロセッサ、シンク/ソースコネクタ。
(特定のベンダーは、同社のスタックとセキュリティ要件のために選択されています。)
14)サンプルテンプレート
GGRショーケーステンプレート(Generic SQL)
sql
CREATE OR REPLACE TABLE mart_ggr_daily AS
SELECT
DATE(b. ts) AS d,
c. country_code,
SUM(b. stake) AS stake_sum,
SUM(b. win) AS win_sum,
SUM(b. stake - b. win) AS ggr
FROM fact_bets b
JOIN dim_country c ON c. country_sk = b. country_sk AND c. is_current
WHERE b. ts >= DATE_SUB(CURRENT_DATE, INTERVAL 60 DAY)
GROUP BY d, c. country_code;
インクリメンタルウォーターマークモデル
sql
INSERT INTO fact_bets PARTITION (dt)
SELECT
FROM staging_bets
WHERE updated_at > (SELECT COALESCE(MAX(watermark), '1970-01-01') FROM _meta_watermarks WHERE table='fact_bets');
-- then update watermark
DQチェック(アイデア)
sql
-- 1) key uniqueness
SELECT deposit_id FROM fact_deposits GROUP BY deposit_id HAVING COUNT()>1;
-- 2) negative amounts (error)
SELECT FROM fact_deposits WHERE amount < 0;
15)実装チェックリスト
1.メトリクス辞書(GGR/NGR/LTV/Retention)と所有者を定義します。
2.ブロンズ/シルバー/ゴールドのレイヤーでSLOの鮮度を記録します。
3.ソースコントラクト(スキーマ、DQ、 SLA)を標準化します。
4.特異なステップと分離された秘密を持つDAGグラフを構築します。
5.インクリメンタリティ(MERGE/パーティーによる上書き)と透かしを実装します。
6.DQ(クリティカル/ソフトチェック)、lineage、データディレクトリを含める。
7.観測可能性(メトリック、ログ、トレイル)とアラートを設定します。
8.保持/TTLおよびバックフィル/再処理ポリシーを入力します。
9.PII制御、暗号化、RLS、ローカライズを提供します。
10.ゲームデーを過ごす:ソースドロップの模倣、「破る」スキーム、大量のバックフィル。
16) Antipatterns
「One Night ETL for Everything」はパーティーなしでインクリメンタリティなし。
DQと血統の欠如→相反するレポートとゴーストハンティング。
各打ち上げ時のテーブルの完全な改訂(コストの爆発)。
バッファ/リトレースなしでリアルタイムでハードバンドル。
セグメンテーションとマスキングなしでPIIと公共の店頭をブレンドします。
リトラクション/削除ポリシーはありません(エラーは修正できません)。
概要
iGamingの堅牢な分析パイプラインは、hard DQ/lineage、 incremental model、 transparent orchestrator、および測定可能なSLOを備えたレイヤードモデルへのELT+ストリーミングロードです。コストコントロール、PII/ローカリゼーションポリシー、定期的なバックフィル/DRエクササイズを追加すると、分析プラットフォームはトーナメントピークに確実に拡張し、望ましい新鮮さと品質のデータでビジネスに対応します。