データの検証
1)なぜiGamingプラットフォームはそれを必要としていますか?
レポートとKPIへの信頼:GGR/NET、変換、保持、RG信号。
ML/スコアリングの信頼性:不正防止/推奨/RGの正しい機能。
リアルタイム操作:支払い/UXが影響を受ける前のイベントのドリフト/ロス時のアラート。
コンプライアンス:PII/秘密はありません。証明可能なトレーサビリティ。
2)検証する場所: コントロールレベル
1.注入(バッチ/ストリーム):スキーム、タイプ、必須フィールド、idempotency/dedup。
2.ストリーム処理:ウィンドウ/透かし、注文、省略/遅延、正確に一度。
3.ETL/ELTと変換:リンク/喜び、集計、ビジネスバランス。
4.DWH/ストアフロント(ゴールド):テーブル間の整合性、新鮮さ、キーのユニークさ。
5.Feature Store/online:機能範囲、offlayn↔onlayn一貫性。
6.BI/API:カウントとフィルタ、レイテンシ/鮮度のSLA、 k-anonymity。
3)チェックの種類(カタログ)
回路図:type/nullable/enum/regex/JSON-shape;stop→への互換性のない変更。
ドメイン:≥ 0金額、∈通貨{EUR、 USD、 TRY、 BRL}、 ≤制限レート、strana∈litsenzii。
Identity/keys:主キーは一意で、外部キーは「hanging」ではありません。
フィールド品質:フルネス、長さ、フォーマット(IBAN、 BIN、電子メールトークン)。
統計/ベースライン:周波数、分布、量子回廊。
異常:ボリューム/分数スパイク、ゼロ/重複、スキーマドリフト。
新鮮さ:最高(ts) Xよりより古い;ラグインジェスト→ゴールド≤ T。
一貫性:部品の合計=要約;複数のテーブルの和解。
プライバシー/セキュリティ:許可されたゾーン外のゼロPII;トークン化/マスク。
規制:RG/AMLフィールドが存在し、もっともらしい。
4)データ契約
契約は、スキーム+品質ルール+ソースと消費者の間のSLOを修正します。
最低契約(フラグメント):yaml dataset: payments_ingest_v2 owner: team-payments schema:
id: {type: string, pattern: "^[a-f0-9]{32}$", unique: true}
ts: {type: timestamp, timezone: "UTC", nullable: false}
amount: {type: decimal(18,2), min: 0. 00}
currency: {type: string, enum: ["EUR","USD","TRY","BRL"]}
psp: {type: string, required: true}
quality:
freshness_max: "PT5M"
completeness_min: 0. 995 duplicate_rate_max: 0. 001 pii_allowed: false slo:
p95_ingest_latency_ms: 30000 success_rate: 0. 995
契約の変更-センバーとマイグレーションを介して:'MAJOR'ブレーク、'MINOR'はフィールドを追加し、'PATCH'は説明を修正します。
5)期待と方針
期待-パイプライン(バッチ/ストリーム)で実行される宣言的チェック。
期待(YAML)の例:yaml expectations:
- name: unique_primary_key check: "unique(id)"
severity: "error"
- name: amount_non_negative check: "amount >= 0"
severity: "error"
- name: currency_enum check: "currency in ['EUR','USD','TRY','BRL']"
severity: "error"
- name: ts_fresh_enough check: "now() - max(ts) <= interval '5 minutes'"
severity: "warn"
- name: pii_absent check: "no_plain_pii(columns: ['email','card','iban'])"
severity: "error"
レスポンスポリシー:
- 'error'→party/batch検疫、alert+ticket;下流のブロック。
- 'varn'→passを渡しますが、解析タスクを作成します。質の印。
- 'info'→監視のみ。
6)ストリーミング: チェックの詳細
透かし/遅いデータ:'120 ≤遅くなりましょう'、そうでなければ-隔離;有限の窓で補償します。
Idempotency:イベントキー+ハッシュペイロード→ブローカー/スレッドのデッドロック。
正確に一度:重要なフロー(支払い/ラウンド)のトランザクション・シング(+idempotentシンク)。
ボリュームカウンタ:ウィンドウごとの「expected」と「received」;不一致→アラート。
scala val deduped = stream
.keyBy(_.id)
.process(new DeduplicateWithin(Time. minutes(10)))
val validated = deduped
.filter(_.amount >= 0)
.filter(_.currency in Set("EUR","USD","TRY","BRL"))
emitToQuarantineIfLate(validated, allowedLateness = 120. seconds)
7) DWH/SQL: 不変量と和解
SQLチェック(例):sql
-- uniqueness
SELECT id, COUNT() c FROM gold. payments GROUP BY 1 HAVING c>1;
-- freshness
SELECT NOW() - MAX(ts) AS lag FROM gold. payments;
-- reconciliation of totals
SELECT
SUM(amount) AS by_rows,
(SELECT total_amount FROM gold. payments_summary WHERE date=CURRENT_DATE) AS by_summary
FROM gold. payments
WHERE date = CURRENT_DATE;
ウィンドウマッチング:毎日の「詳細→要約」和解、不一致レポート、自動チケット。
8)プライバシーとセキュリティ
デフォルトのPIIエディション:入力マスク/トークン;ログに「生」の電子メール/カード/電話を禁止します。
パーミッションポリシー:PIIを持つテーブル-別々のレイヤー/ディレクトリ、ロールごとのアクセス(RBAC/ABAC)。
レポートのK匿名性:スライスの最小N行。
リークディテクタ:PIIパターンの定期的なチェック、「秘密」(キー/トークン)。
管轄区域:地理/テナント分離(国/ブランド/ライセンス)、別々のキー。
9)品質とSLOの指標
品質測定(D):- 新鮮さ-最大遅延(ts)。
- 完全性-空/期待されていないレコードの割合。
- 一意性-重複キー。
- 一貫性-不変量と残高(テーブル間)。
- 精度-外部ドメインソース/ルールによる検証。
- Validity -/enum/regex型と一致します。
- 'Freshness payments_gold ≤ 5' (p95)。
- '完全性game_rounds ≥ 99。7%/日'。
- 'Duplicate_rate ≤ 0。1‰`.
- 'PII_leak=0'
10)アラート、チケット、ランブック
ルーティング:Slack/PagerDuty→ドメイン所有者;サンプルと差分を自動的に適用します。
グループ化:1セットにつき1つのインシデント「labels: dataset=payments、 brand=TR」。
1.インジェストログとブローカーキューをチェックします。
2.PSPの「期待vs受信」を比較します。
3.Retrai/Switch PSP Routeを有効にします。
4.注釈の原因;背中の再起動;ポスト・モーテム。
11)バージョン管理、テスト、免除プロセス
品質規則のSemver: 'quality@MAJOR。マイナー。PATCH'。
変換のユニットテスト(SQL/DBT/python)とソースの契約テスト。
GOLDEN sets:既知の不一致/漏洩の場合は、回帰に必須です。
免除:規則(説明、所有者、用語、補償措置)に違反する短期的な許可。
12)カタログ/アーティファクト(既製テンプレート)
12.1データセットパスポート
yaml dataset: gold. game_rounds owner: team-games steward: data-governance contracts: ["games_rounds_v3"]
quality_slo:
freshness_p95: "PT10M"
completeness_min: 0. 997 uniqueness_max_dup: 0. 0005 alerts:
channels: ["#dq-incidents","#games-ops"]
severity_map: {error: "P1", warn: "P2"}
12.2検疫ポリシー
yaml quarantine:
storage: "s3://quarantine/payments/"
retention: "P30D"
access: ["team-payments","data-governance"]
auto_reprocess:
cron: "/15 "
max_attempts: 3
12.3期待機能ストア
yaml featureset: fs_payments_online_v1 checks:
- name: feature_freshness check: "now() - max(feature_ts) <= interval '60 seconds'"
severity: "error"
- name: range_amount_avg check: "amount_avg in [0, 2000]"
severity: "warn"
- name: enum_device check: "device in ['ios','android','web']"
severity: "error"
13) iGamingの詳細: 既製ケース
支払い/PSP: PSPレポートへの預金/出金の和解;行方不明の状態→バッチ検疫;成長のためのアラート'decret_rate'。
ゲームプロバイダ:drop 'rounds_per_min' vs baseline+schema drift from the provider→transformation block of provider A、 status banner。
RG/AML:必須フィールド(制限、自己除外、KYCステータス);支払いブロックのoverdue KYC→フラグ、準拠したチケット。
マーケティング/CRM:キャンペーンパラメータの有効性、UTM、イベントのデッドアップ;店頭でのk-anonymity。
14)実装ロードマップ
0-30日(MVP)
1.キーセットの契約を含める:支払い、game_rounds、ユーザー、機能。
2.期待のカタログ(10-15基本)+検疫+アラート。
3.ダッシュボードの新鮮さ/完全性/独自性;インシデント報告書。
4."Runbook"の"Freshness"、 "Duplicates"、 "Schema drift'。
30-90日
1.相互の和解とバランス;放棄プロセスとsemverルール。
2.ストリーム検証(遅延データ、デッドロック、透かし);PII検出器。
3.CI/CDとの統合:ソースと変換の契約テスト。
4.ドメインコマンドOKRの品質SLO。
3〜6ヶ月
1.AIOpsのしきい値のヒント;原因の自動ローカライズ。
2.クロスブランド/ジオクオリティポリシーおよびコンプライアンスレポート。
3.死後のP1事件→ゴールデンセットとルールの補充。
4.フローアラートと異常解析(シングルループ)との連携).
15) RACI
データガバナンス(A/R):標準、契約、ルール監査。
ドメインオーナー(R):ドメインエクスペリエンスと不変量。
データプラットフォーム(R):期待フレームワーク、検疫、アラート、監視。
セキュリティ/DPO (A/R): privacy/PII/k-anonymity、 geo/tenant-isolation。
SRE/Observability (C):インシデントルーティング、SLO/SLI。
製品/ファイナンス(C):ビジネスバランス、インシデントの優先順位。
16)アンチパターン
検証「DWHでのみ」-遅く、高価で、痛みを伴う。
検疫なし-「汚れ」はゴールド/MLに行き、信頼を破ります。
季節性/時間/市場のないハードスレッショルド→警報嵐。
オーナーとセンバーのルールの欠如→例外の混乱。
PIIと「共通チャンネルへのスクリーンショット」でログを記録します。
永久回路の代わりに1回限りの「衛生日」。
17)関連セクション
DataOpsプラクティス、データ監査とバージョン管理、データ起源とパス、データストリームアラート、異常と相関解析、アクセス制御、データセキュリティと暗号化、データ保持ポリシー、MLOps:モデル活用。
合計
検証は最後のフィルタではなく、インジェクションやストリームからストアフロント、オンライン機能まで、エンドツーエンドの品質契約です。明確な期待、隔離、アラート、SLOは、データを信頼できる資産に変えます。レポートは正しいです、モデルは安定しています、支払いは安全です、コンプライアンスは穏やかです。