批处理数据
1)目的和价值
Batch流水线形成可靠的每日/每小时店面,用于:- 监管和财务报告(GGR/NGR,税收,RG/AML注册表)。
- BI和产品分析师(队列,LTV,转换漏斗)。
- 精度对比(OLTP↔DWH,提供商/PSP),历史化(SCD)。
- 为ML准备菲奇和训练包。
关键属性:可预测性、完整性、可重复性、每单位数据成本低。
2)体系结构(参考)
1.Ingest(原始捕获):HTTP/gRPC,OLTP的CDC,Bronze →的上载提供商。
2.Lakehouse: Bronze (raw, append-only) → Silver (clean/conform) → Gold (serve).
3.编排:Airflow/Dagster/Prefect(DAG'i,成瘾,retrai,SLA)。
4.处理:Spark/Trino/DBT/SQL引擎;派对和ACID格式(Delta/Iceberg/Hudi)。
5.DQ和合同:计划注册,DQ规则(YAML/SQL),消费者测试。
6.伺服器:BI/语义层,报告导出(CSV/PDF/JSON+hash),API/GraphQL。
7.可观察性:piplines,lineage,logi,成本(cost/GB,cost/query)度量。
3)频率和SLA
每日(D+1至06:00 lock)*GGR报告,监管卸载,对账。
每小时/准现实:Ops/Financial的操作面板。
每周/每月:精炼、模型和逆转录过程。
- 黄金每日店面准备就绪,直到当地时间06:00。
- Freshness Silver p95 ≤ 15分钟,用于日间微蝙蝠/≤ 2小时。
- Completeness ≥ 99.5%,Validity(方桉)≥ 99。9%.
4)增量下载和CDC
方法:- CDC(更改数据捕获):Debezium/log复制→ Bronze → Silver中的填充物。
- Watermark按时间:'updated_at> max_loaded_ts'。
- 哈希比较:"md5(row)"用于更改检测。
- Upsert/Merge: Silver/Gold等效更新。
sql
MERGE INTO silver. payments AS s
USING staging. payments_delta AS d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
5) SCD(测量历史)
SCD I:重写(拼写、次要修补程序)。
SCD II:全功能历史("valid_from/valid_to/is_current")。
SCD III:简要比较的"之前/之后"。
sql
MERGE INTO dim. users_scd t
USING stage. users u
ON t. user_pseudo_id = u. user_pseudo_id AND t. is_current = TRUE
WHEN MATCHED AND (t. country <> u. country OR t. rg_status <> u. rg_status)
THEN UPDATE SET t. is_current = FALSE, t. valid_to = CURRENT_TIMESTAMP
WHEN NOT MATCHED
THEN INSERT (user_pseudo_id, country, rg_status, valid_from, valid_to, is_current)
VALUES (u. user_pseudo_id, u. country, u. rg_status, CURRENT_TIMESTAMP, NULL, TRUE);
6) Backfill и Reprocessing
Backfill:主要填充/历史填充。
Reprocessing:在编辑逻辑/修复数据后重新计算店面。
- 相等性(MERGE/upsert),青铜不变性,逻辑转换。
- 重复运行的时间旅行;元数据快照。
- Guardrails:限制范围、配额和竞争性乔布斯。
- 文档:包含步骤和完成标准的运行手册。
7)图层建模
Bronze:
仅适用于"event_date","jurisdiction","tenant"的部分。
我们保留原始的payload(用于forenzika),并固定"ingested_at"。
Silver:
规范化和标准化:FK/参考书,dedup,FX/时间段。
事实/测量表(3NF/BCNF),用于关键测量的SCD。
Gold:
BI/监管机构/财务,准备就绪的SLA之下的非正规店面。
聚合物实现;不可变导出工件(hash+WORM)。
8)数据质量(DQ代码)
Silver的YAML规则示例:yaml table: silver. payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: unique_tx type: unique columns: [transaction_id]
severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical
反应策略:critical → fail job+DLQ;major/minor →标记+报告。
9)语义层和报告
在Semantic layer/metrics商店中统一度量定义(GGR/NGR,ARPPU,Retention)。
测试指标;与BI/出口套件的集成。
报告:CSV/JSON/PDF+sha 256,上载日志和法律保留。
10)隐私,居住,安全
PII最小化:用户化名;mapping-在单独的保护环中。
数据驻留:EEA/UK/BR上的单独目录/密钥;禁止在没有法律依据的情况下进行跨区域合作。
加密:transit中TLS;KMS/CMK at-rest;出口管制。
DSAR/RTBF:可计算的投影,选择性编辑;可用性审核。
法律保留:用于监管工件的WORM档案。
11)性能和成本
按日期/市场/特南特分期付款;Z-order/cluster按频繁谓词排列。
格式:Parquet+ACID表;压缩/统计,OPTIMIZE/VACUUM。
实现:黄金稳定聚集;避免"整体"乔布斯。
配额/预算:按团队分列的chargeback;后退限制/繁重查询。
计划:低负荷窗口(夜间/周末),队列优先级。
12)可观察性和控制
Piplines度量标准:持续时间,成功率,retries, rows processed, cost/query。
DQ度量标准:完整性,validity, uniqueness, FK错误,漂移。
Freshness heatmap:按领域和市场;SLA-dashbords。
线性:从青铜到报告的起源;变更前的影响分析。
Alerts: SLO预算、DQ降级、延迟、成本上升。
13) SQL/模型示例
货币正常化(Silver):sql
CREATE OR REPLACE TABLE silver. payments AS
SELECT p. transaction_id,
p. user_pseudo_id,
p. currency,
p. amount_orig,
r. rate AS fx_rate_used,
p. amount_orig r. rate AS amount_base,
p. market,
CAST(p. event_time AS TIMESTAMP) AS event_time
FROM bronze. payment_events p
JOIN dim. fx_rates r
ON r. date = DATE(p. event_time)
AND r. ccy_from = p. currency AND r. ccy_to = 'EUR';
GGR(黄金)每日展示:
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
b. market,
g. provider_id,
SUM(b. stake_base) AS stakes_eur,
SUM(p. amount_base) AS payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) AS ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
完整性控制(DQ SQL):
sql
SELECT market, event_date, COUNT() AS n
FROM silver. fact_bets
GROUP BY market, DATE(event_time) AS event_date
HAVING n = 0;
14)流程和RACI
R(响应):数据工程(DAG'i,Silver/Gold模型),数据平台(infra,电路寄存器,DQ)。
A (Accountable): Head of Data / Chief Data Officer.
C (Consulted): Compliance/Legal/DPO (PII/retention), Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informed): BI/产品/营销/运营。
15)实施路线图
MVP(4-6周):1.Lakehouse Bronze/Silver(ACID格式),CDC/2-3域的增量。
2.DQ代码:Payments/Gameplay+CI验证的10-15规则。
3.从SLA到06:00的第一个黄金展示(GGR Daily);报告export+hash。
4.Freshness/Completeness/Cost Dashbords,基本的Alertes。
第二阶段(6至12周):- SCD II для users/games/providers;域扩展。
- 语义层度量;与OLTP/提供商进行对账(accuracy)。
- Backfill/reprocessing,lineage和impact分析,区域化(EEA/UK)程序。
- 更改的自动仿真(dry-run),预算/配额,chargeback。
- 自动文档(数据产品页)、DR练习和时间旅行恢复。
- 价值优化(聚类,实现,TTL,真空)。
16)售前支票清单
- Registry中的合同和计划,兼容性测试是绿色的。
- 增量下载/CDC正在运行,MERGE是偶数。
- DQ规则是活跃的;critical → fail + DLQ;违规报告。
- SLA/dashboard新鲜/完整;Alertes设置。
- PII/DSAR/RTBF/法律保留政策已得到法律/DPO的确认。
- Runbook'和backfill/reprocessing/DR测试。
- 控制成本(成本/查询、成本/GB、量)。
17)反模式以及如何避免
整体夜间乔巴:分成独立步骤,按批次平行。
Full reload不需要:使用increment/CDC/mergies。
在分析中溷合PII:保持贴片分开,应用CLS/RLS。
缺少DQ/lineage:输入DQ代码并跟踪来源。
"手动"背景:自动化和记录,限制范围。
非管理成本:聚类,实现,重建策略。
18)词汇表(简短)
CDC-捕获来自OLTP的更改。
SCD-缓慢变化的测量(I/II/III)。
Lakehouse是数据湖+ACID表。
MERGE/Upsert-等效更新操作。
时间旅行-阅读表格的历史版本。
WORM是不可变的工件存储。
19)结果
批处理是可预测,可复制和兼容流水线的学科。遵循计划第一,增量/CDC,SCD历史,DQ编码,可观察性和有意识的经济学原则,您将获得稳定的黄金店面和报告,并随时进行核对并准备审核。