GH GambleHub

ETL/ELT过程

1)目的和上下文

ETL/ELT流水线为报告(GGR/NGR,调节器),分析/ML和操作面板提供可预测的加载,转换和发布数据。

ETL:在DWH/Lakehouse中转换为下载(在现代堆栈中较少见)。
ELT:首先装载到Lakehouse (Bronze/Silver),然后使用SQL/引擎进行转换(推荐)。

2)参考体系结构

1.Ingest/Edge:HTTP/gRPC/Batch,OLTP的CDC,上载S3/FTP提供商。
2.青铜(raw, append-only):不变的付费,按日期/市场/tenant分期付款。
3.Silver (clean/conform):正常化、演绎、参考、SCD、FX/时间段。
4.黄金(serve): BI/调节/模型下的非正规店面。
5.编排:Airflow/Dagster/Prefect(DAG'i,SLA,retrai,移位)。

6.DQ/Contracts: Schema Registry + DQ-как-код, consumer-driven tests.

7.可观察性:piplines,lineage,logi,cost-dashbords的度量。

3)选择ETL vs ELT

标准ETLELT(建议)
重新计算的灵活性低点高级(时间旅行、重新提供)
成本身材更高缩放时是最佳的
质量控制在ingest上在Silver/Gold+DQ代码上
历史性/forenzics有限的完整(Bronze append-only)

练习:在iGaming-ELT+CDC中:快速装载,然后标准化并计算。

4)Increments和CDC

三角洲的方法:
  • CDC (Debezium/log复制):将OLTP →青铜→ MERGE更改为Silver。
  • Watermark按时间:'updated_at> max_loaded_ts'。
  • Hash-diff:比较更改检测器的"md5 (row)"。
  • Upsert/MERGE:下载的平均值。
MERGE示例(Delta/Iceberg):
sql
MERGE INTO silver. payments s
USING stage. payments_delta d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;

5)合同和计划

Schema-first:Registry中的JSON/Avro/Protobuf;事件/文件中的"schema_version"。
演变:可匹配(不可分割的添加);破解-"/v2"+双重记录。
必填字段:'event_time (UTC)'、'event_id'、'trace_id'、'user_pseudo_id'、'market'。

6) DQ编码(最低设置)

yaml table: silver. payments owner: data-payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: unique_tx # uniqueness of transactions type: unique columns: [transaction_id]
severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical

7)乐团: DAG'i,成瘾,SLA

DAG设计:从源头到橱窗;任务之间的显式依赖关系。
Retrai和等效性:backoff,"干净"的重复,checkpoint's。
移位(catchup):错过时间的整齐的追赶。
SLA:例如,黄金。每日准备到当地时间06:00;违规警报。
参数化:市场/tenant/日期通过 vars;一个单一的工作模式。

8)异位性和异位性

在ingest上:可以通过"(→,source)"来event_id重复。
在处理中:upsert/merge;"纯"变换函数。
在sink中:事务性公文或idempotent写作;"双重核算"控制。
Outbox/Inbox:从OLTP对域事件进行事务性发布。

9) Backfill и reprocessing

Backfill:主要填充/历史范围。
Reprocessing:在逻辑/修补程序更改时重新计算。
Guardrails:范围限制,配额,时间窗口,dry-run与度量比较。
标记:"logic_version","reprocessed_at","recalc_reason"。

10)Silver/Gold建模

Silver(3NF/BCNF):事实'fact_bets/payments/payouts',测量'dim_users/games/providers/markets(SCD II)',货币标准化/时间区。
黄金:BI/调节/模型下的非正规店面;不可更改的出口包(WORM)+签名。

黄金示例: 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;

11)隐私和居留权

PII最小化:令牌化;在隔离电路中模彷真实的ID。
RLS/CLS:角色/司法管辖区的访问策略,掩盖。
住宅:EEA/UK/BR的单独目录/密钥;无故禁止跨区域合作。
DSAR/RTBF&Legal Hold:选择性编辑、报告WORM存档、出口审核。

12)可观察性和SLO

SLI/SLO基准:
  • Freshness Silver p95 ≤ 15分钟;黄金日报准备到06:00 lock。时间。
  • Completeness ≥ 99.5%,Validity(方桉)≥ 99。9%.
  • Job 's的成功率≥ 99。0%,MTTR事件≤ 24-48小时。

Dashbords:Freshness heatmap,DQ损失漏斗,成本/查询和成本/GB,线性图。

13)生产力和成本

参与:日期/市场/特南特;通过过滤器聚类/Z顺序。
格式:Parquet+ACID(Delta/Iceberg/Hudi),压缩和统计。
复合:与小文件作斗争(OPTIMIZE/VACUUM)。
实物化:稳定单元;避免巨型飞跃。
Chargeback:预算,反冲配额/反冲配额;调度到低负载窗口。

14)典型的DAG任务示例(Airflow伪代码)

python with DAG("elt_payments_daily", schedule="@daily", start_date=..., catchup=True) as dag:
extract = BashOperator(task_id="extract_cdc", bash_command="run_cdc_to_bronze. sh {{ ds }}")
load  = BashOperator(task_id="load_to_silver", bash_command="sql/run_merge_silver. sql {{ ds }}")
dq   = BashOperator(task_id="dq_checks", bash_command="dq/run_checks. sh silver. payments {{ ds }}")
gold  = BashOperator(task_id="build_gold_ggr", bash_command="sql/build_gold_ggr. sql {{ ds }}")
export = BashOperator(task_id="export_regulator", bash_command="export/run_worm_pack. sh {{ ds }}")

extract >> load >> dq >> gold >> export

15)流程和RACI

R(响应):数据工程(DAG'i,Silver/Gold模型),数据平台(infra,Registry,DQ)。

A (Accountable): Head of Data/CDO.

C (Consulted): Compliance/Legal/DPO (PII/residency/Legal Hold), Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).

I (Informed): BI/产品/营销/运营。

16)实施路线图

MVP(3-5周):

1.湖畔青铜/银色(ACID)+Payments/Gameplay的CDC/镶嵌物。

2.DQ编码(10-15个规则)和基本的Freshness/Completeness dashbords。

3.第一个金色展示(GGR Daily)带有SLA"直到06:00",带有签名的WORM导出。

4.在SLA/DQ上编排DAG和Alerta。

第二阶段(5-10周):
  • 域扩展,users/games/providers的SCD II。
  • 语义层度量;线性/影响分析;backfill/reprocessing过程。
  • 区域化(EEA/UK),RLS/CLS,成本控制(配额/滞后)。
第三阶段(10至16周):
  • 重复模拟器(what-if),自动生成店面/度量文档。
  • 成本优化(聚类,实现,TTL,复合)。
  • DR演习和时间旅行恢复。

17)售前支票清单

  • Registry中的合同/计划,兼容性测试为绿色。
  • CDC/increments和MERGE是幂等的;在ingest上的恶作剧。
  • DQ规则是活动的(critical → fail+DLQ), SLA-dashbords是自定义的。
  • 金色店面已记录下来,语义层中的度量公式。
  • RBAC/ABAC,加密,驻留,DSAR/RTBF/Legal Hold验证。
  • 合并/OPTIMIZE/VACUUM时间表;backfill/replay限制。
  • Runbook'以及事件和重新设计,出口审计(WORM+hash)。

18)反模式和风险

"以防万一":使用CDC/increments。
原始数据和报告数据的溷合:将Bronze/Silver/Gold分开。
缺少DQ和线性:没有可证明和可重复性。
分析层中的PII:隔离面膜,应用CLS/RLS。
整体的"夜间"乔巴:粉碎,分批并行。
忽略成本:注意小型文件,实现聚合,输入配额。

19)词汇表(简短)

ETL/ELT-提取/转化/下载(下载前/下载后)。
CDC-捕获更改。
SCD-测量历史化(I/II/III)。
WORM-报告包的不可更改存储。
时间旅行-阅读表格的历史版本。

20)结果

现代ETL/ELT不是脚本,而是可管理的平台:合同和DQ,等效嵌合/CDC,青铜/银/金层学科,可观察性和SLO,隐私性和经济性。按照本指南,您将获得可复制和可审核的输送机,这些输送机始终如一地为报告,产品和模型提供大规模且没有惊喜。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

Telegram
@Gamble_GC
开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。