GH GambleHub

Procese ETL/ELT

1) Scop și context

Conductele ETL/ELT asigură încărcarea, transformarea și publicarea previzibilă a datelor pentru raportare (GGR/NGR, autorități de reglementare), analiză/ML și panouri operaționale.

ETL: transforma înainte de încărcare în DWH/Lakehouse (mai rar în stive moderne).
ELT: prima sarcină în Lakehouse (bronz/argint), apoi transforma SQL/motoare (recomandat).

2) Arhitectura de referință

1. Ingera/Edge: HTTP/gRPC/Lot, CDC de la OLTP, furnizor încărcați S3/FTP.
2. Bronz (brut, numai cu adaos): sarcini utile imuabile, părți după dată/piață/chiriaș.
3. Argint (curat/conform): normalizare, dedup, directoare, SCD, FX/fus orar.
4. Aur (servire): vitrine denormalizate pentru BI/regulator/modele.
5. Orchestrație: Airflow/Dagster/Prefect (DAG 'i, SLA, Retrai, Schimburi).
6. DQ/Contracte: Schema Registry + DQ - как - код, teste conduse de consumatori.
7. Observabilitate: măsurători ale conductelor, descendență, busteni, tablouri de cost.

3) Selecția ETL vs ELT

CriteriulETLELT (recomandat)
Flexibilitatea alocărilorscăzutmare (călătorie în timp, reprocesare)
Costmai scump atunci când creșteoptimă la scalare
Controlul calitățiipe ingerala Silver/Gold + DQ-as-code
Istoricitate/criminalisticălimitatfull (numai pentru bronz)

Practică: în iGaming - ELT + CDC: încărcați rapid, apoi standardizați și numărați.

4) incremente și CDC

Delta se apropie:
  • CDC (replicare Debezium/jurnal): modificări OLTP → bronz → MERGE în argint.
  • Filigran de timp: 'update _ at> max_loaded_ts'.
  • Hash diff: „md5 (rând)” comparație pentru detectarea schimbării.
  • Upsert/MERGE: idempotența descărcărilor.
Exemplu 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) Contracte și scheme

Schema-first: JSON/Avro/Protobuf în Registru; 'schema _ versiune' în evenimente/fișiere.
Evoluție: back-compatibil (adăugiri nullable); breaking - '/v2 '+ intrare dublă.
Câmpurile obligatorii sunt 'event _ time (UTC)', 'event _ id',' trace _ id', 'user _ pseudo _ id',' market '.

6) DQ-as-code (set minim)

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) Orchestrație: DAG și, dependențe, SLA

Design DAG: de la surse la vitrine; dependențe explicite între sarcini.
Retrai și idempotence: backoff, reluări „curate”, puncte de control.
Catchup: o captură curată a perioadelor pierdute.
De exemplu, aur. zilnic este gata înainte de ora locală 06:00; alerte cu privire la încălcări.
Parametrizare: piețe/chiriași/date prin vars; un singur șablon de locuri de muncă.

8) Idemptence și exact o dată

În ingerare: duplicatele sunt posibile → dedup prin „(event_id, sursă)”.
În procesare: upsert/fuziune; funcții de transformare „pure”.
În chiuvetă: comite tranzacționale sau scrie idempotent; controlul „dublei numărători”.
Outbox/Inbox: publicarea tranzactionala a evenimentelor de domeniu de la OLTP.

9) Backfill и reprocesare

Backfill: umplere primară/intervale istorice.
Reprocesare - recalculare atunci când schimbările logice/corecții.
Guardrails: limite de interval, cote, ferestre de timp, uscate cu comparație metrică.
Marcare: 'logic _ version', 'reprocesed _ at', 'recalc _ reason'.

10) Modelare argint/aur

Argint (3NF/BCNF): fapte 'fapt _ pariuri/plăți/plăți', dimensiuni 'dim _ users/games/providers/markets (SCD II)', standardizare valută/fusul orar.
Aur: vitrine denormalizate pentru BI/regulator/modele; pachete de export imuabile (WORM) + semnătură.

Exemplu de aur: GGR Daily

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) Confidențialitate și rezidență

Minimizare PII: tokenizare; mapări de ID-uri reale în bucla izolată.
RLS/CLS: politici de acces după rol/jurisdicție, mascare.
Rezidență: directoare/chei separate pentru SEE/UK/BR; interzicerea intrărilor transregionale fără motiv.
DSAR/RTBF & Legal Hold: editări selective, arhive WORM pentru raportare, audituri de export.

12) Observabilitate și SLO

Criterii de referință SLI/SLO:
  • Prospețime Argint p95 ≤ 15 min; Aur de zi cu zi este gata până 06:00 de blocare. timp.
  • Integralitatea ≥ 99. 5%, Valabilitate (schemă) ≥ 99. 9%.
  • Succesul locurilor de muncă ≥ 99. 0%, incidente MTTR ≤ 24-48 h.

Tablouri de bord: Freshness heatmap, DQ pierdere pâlnie, cost/interogare & cost/GB, descendență grafic.

13) Performanță și cost

Partiționare: dată/piață/chiriaș; clustering/Z-ordine de filtre.
Formate: Parchet + ACID (Delta/Iceberg/Hudi), compresie și statistici.
Compactare: combaterea fișierelor mici (OPTIMIZARE/VID).
Materializare: agregate stabile; evita aderarea gigant pe-the-fly.
Chargeback: bugete, reluarea cotelor/rambursare; programarea în ferestre cu sarcină redusă.

14) Exemple de sarcini DAG tipice (pseudocodul fluxului de aer)

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) Procese și RACI

R (Responsabil): Ingineria datelor (modele DAG, Silver/Gold), Platforma de date (infra, Registry, DQ).
A (Responsabil): șef de date/CDO.
C (Consultat): Compliance/Legal/DPO (PII/residency/Legal Hold), Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informat): BI/Produs/Marketing/Operațiuni.

16) Foaia de parcurs privind implementarea

MVP (3-5 săptămâni):

1. Lakehouse Bronze/Silver (ACID) + CDC/incremente pentru plăți/Gameplay.

2. DQ-like-code (10-15 reguli) și tablouri de bord de bază prospețime/completitudine.

3. Prima vitrină de aur (GGR Daily) cu SLA „până la ora 06:00”, export WORM cu semnătură.

4. DAG și orchestrarea de alertă pe SLA/DQ.

Faza 2 (5-10 săptămâni):
  • Extensie domeniu, SCD II pentru utilizatori/jocuri/furnizori.
  • Strat semantic de metrică; descendența/analiza impactului; proceduri de rambursare/reprocesare.
  • Regionalizarea (SEE/UK), RLS/CLS, controlul costurilor (cote/chargeback).
Faza 3 (10-16 săptămâni):
  • Replay simulator (ce-dacă), auto-generare de documentație vitrină/metrică.
  • Optimizarea costurilor (clustering, materializare, TTL, compresie).
  • Exerciții DR și recuperarea călătoriei în timp.

17) Lista de verificare pre-vânzare

  • Contracte/scheme în Registru, teste de compatibilitate verde.
  • CDC/incremente și MERGE sunt idempotente; Dedup pentru a ingera.
  • Regulile DQ sunt active (critice → nu reușesc + DLQ), tablourile de bord SLA sunt configurate.
  • Vitrinele de aur sunt documentate, formule metrice în stratul semantic.
  • RBAC/ABAC, criptare, rezidență, DSAR/RTBF/Legal Hold verificat.
  • Compresie/OPTIMIZARE/VACUUM pe un program; limitele de rambursare/reluare.
  • Runbook 'și incidente și reprocesare, exporturile de audit (WORM + hash).

18) Anti-modele și riscuri

Reîncărcați complet „doar în caz”: utilizați CDC/incremente.
Amestecarea datelor brute și raportate: Păstrați bronzul/argintul/aurul separat.
Lipsa de DQ și descendență: fără provabilitate și reproductibilitate.
PII în straturi analitice: izolați maparea, aplicați CLS/RLS.
Monolit „noapte” jabs: zdrobi, paralel în loturi.
Ignorați costul: urmăriți fișierele mici, materializați agregatele, introduceți cotele.

19) Glosar (scurt)

ETL/ELT - extracție/transformare/încărcare (înainte/după încărcare).
CDC - Schimbarea capturii.
SCD - istoric de măsurare (I/II/III).
WORM - depozitarea neschimbabilă a pachetelor de rapoarte.
Călătoria în timp - citirea versiunilor istorice ale tabelelor.

20) Linia de jos

Modern ETL/ELT nu este un script, ci o platformă gestionată: contracte și DQ, incremente idempotente/CDC, Bronze/Silver/Gold layer discipline, observabilitate și SLO, intimitate și economie. Urmând acest ghid, veți obține conducte reproductibile și auditive care alimentează constant raportarea, produsul și modelele la scară și fără surprize.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Telegram
@Gamble_GC
Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.