Procesarea loturilor
1) Scop și valoare
Transportoarele de lot formează cazuri de afișare zilnică/orară fiabile pentru:- Raportare financiară și de reglementare (GGR/NGR, impozite, registre RG/AML).
- BI și analiza produselor (cohorte, LTV, pâlnii de conversie).
- Verificarea preciziei (OLTP↔DWH, furnizori/PSP), istorisire (SCD).
- Pregătirea caracteristicilor și a seturilor de antrenament pentru ML.
Proprietăți cheie: predictibilitate, integralitate, reproductibilitate, cost redus pe unitate de date.
2) Arhitectură (referință)
1. Ingera (captură brută): HTTP/gRPC, CDC de la OLTP, uploads furnizor → Bronze.
2. Lakehouse: Bronz (brut, numai cu adaos) → Argint (curat/conform) → Aur (servi).
3. Orchestrație: Airflow/Dagster/Prefect (DAG 'și, dependențe, retroys, SLA).
4. Procesare: Spark/Trino/DBT/SQL motoare; formate de partiționare și ACID (Delta/Iceberg/Hudi).
5. DQ și contracte: Registrul schemei, reguli DQ (YAML/SQL), teste de consum.
6. Servire: BI/strat semantic, exporturi raportabile (CSV/PDF/JSON + hash), API/GraphQL.
7. Observabilitate: măsurători ale conductelor, descendență, jurnale, cost (cost/GB, cost/interogare).
3) Frecvențe și SLA
Zilnic (D + 1 la 06:00 de blocare.) : rapoarte GGR, încărcări de reglementare, reconcilieri.
Oră/cvasi-timp: panouri operaționale pentru Ops/Finance.
Săptămânal/lunar: finconsolidare, modele și retroprocese.
- Vitrinele de zi cu zi sunt gata până la ora locală 06:00.
- Prospețime Argint p95 ≤ 15 min pentru microbați/ ≤ 2 h pentru timpul zilei.
- Integralitatea ≥ 99. 5%, Valabilitate (schemă) ≥ 99. 9%.
4) Descărcări incrementale și CDC
Abordări:- CDC (Change Data Capture): Replicarea Debezium/log → incremente de bronz → în Silver.
- Filigran de timp: 'update _ at> max_loaded_ts'.
- Comparație hash: „md5 (rând)” pentru detectarea schimbării.
- Upsert/Merge: Actualizări Idempotent 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 (istoric de măsurare)
SCD I: suprascriere (ortografie, corecții minore).
SCD II: istoric complet ('valid _ from/valid _ to/is _ current').
SCD III: „înainte/după” pentru comparații scurte.
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 и Reprocesare
Backfill: Umplere inițială/Backfill istoric.
Reprocesare: recalcularea ferestrelor magazinelor după editarea logicii/corectarea datelor.
- Idempotency (MERGE/upsert), Imutabilitate bronz, versioning logic.
- Călătorie în timp pentru instantanee de metadate repetate.
- Guardrails: Limitarea intervalelor, cotelor și a locurilor de muncă competitive.
- Documentație: runbook cu pași și criterii de finalizare.
7) Modelarea straturilor
Bronz:- Adăugați-numai, partițiile 'event _ date', 'jurisdicție', 'chiriaș'.
- Stocăm sarcina utilă originală (pentru criminalistică), fixăm "ingested _ at'.
- Normalizare și standardizare: FK/directoare, dedup, FX/fusuri orare.
- Tabele de fapt/dimensiune (3NF/BCNF), SCD pentru dimensiuni cheie.
- Standuri denormalizate pentru BI/reglementare/finanțe, pregătire SLA.
- Materializarea agregatelor; artefacte imuabile de export (hash + WORM).
8) Calitatea datelor (DQ-as-code)
Un exemplu de reguli YAML pentru Silver: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
Politici de reacție: → critice nu funcționează + DLQ; major/minor → tag + raport.
9) Strat semantic și raportare
Definiții unificate ale metricii (GGR/NGR, ARPPU, retenție) în stratul semantic/metrica-store.
Măsurători de versionare; Integrarea cu pachete BI/export
Rapoarte: CSV/JSON/PDF + sha256, jurnal de descărcare și Legal Hold, dacă este necesar.
10) Confidențialitate, rezidență, securitate
Minimizarea PII: pseudonimizarea utilizatorilor; cartografiere - într-o buclă protejată separat.
Rezidența datelor: directoare/chei separate pentru SEE/UK/BR; interzicerea unirii transregionale fără temeiuri legale.
Criptare: TLS în tranzit; KMS/CMK în repaus; comenzi de export.
DSAR/RTBF: proiecții calculabile, editări selective; audit de acces.
Legal Hold: arhive WORM pentru artefacte de reglementare.
11) Performanță și cost
Împărțirea după dată/piață/chiriaș; Z-ordine/cluster de predicate frecvente.
Formate: Parchet + tabele ACID; compresie/statistici, OPTIMIZARE/VID.
Materializare: agregări stabile în aur; evita „monolit” locuri de muncă.
Cote/bugete: chargeback pe echipe; limite de rambursare/cereri grele.
Programare: ferestre cu încărcare redusă (noapte/weekend), priorități de coadă.
12) Observabilitate și management
Măsurători de conducte: durată, rata de succes, retries, rânduri procesate, cost/interogare.
Măsurători DQ: exhaustivitate, valabilitate, unicitate, erori FK, derivă.
Foaie de căldură pentru prospețime: pe domenii și piață; Tablouri de bord SLA.
Descendență: Originile bronzului la rapoarte; analiza impactului înainte de schimbări.
Alerte: bugete SLO, degradarea DQ, întârzieri, creșterea costurilor.
13) Exemple SQL/Model
Normalizarea valutei (argint):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 Daily Showcase (Aur):
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;
Controlul integralității (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) Procese și RACI
R (Responsabil): Ingineria datelor (modele DAG ', Silver/Gold), Platforma de date (infra, registru de circuite, DQ).
A (Responsabil): șef de date/responsabil cu datele.
C (Consultat): Compliance/Legal/DPO (PII/retenție), Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informat): BI/Produs/Marketing/Operațiuni.
15) Foaia de parcurs privind implementarea
MVP (4-6 săptămâni):1. Lakehouse Bronze/Silver (format ACID), CDC/incremente pentru 2-3 domenii.
2. DQ-ca-cod: 10-15 reguli pentru plăți/Gameplay + CI validare.
3. Prima vitrină Gold (GGR Daily) cu SLA până la ora 06:00; export raportat + hash.
4. Prospețime/Completitudine/Tablouri de bord cost, alerte de bază.
Faza 2 (6-12 săptămâni):- SCD II для utilizatori/jocuri/furnizori; extinderea domeniului.
- Strat semantic de metrică; verificări cu OLTP/furnizori (precizie).
- Proceduri de rambursare/reprocesare, descendență și analiză a impactului, regionalizare (SEE/UK).
- Auto-simularea modificărilor (dry-run), bugete/cote, chargeback.
- Documentație automată (pagini de produse de date), exerciții DR și timp de călătorie-recuperare.
- Optimizarea costurilor (clustering, materializare, TTL, vid).
16) Lista de verificare pre-vânzare
- Contractele și schemele din Registru, testele de compatibilitate sunt verzi.
- Descărcări incrementale/lucrări CDC, MERGE este idempotent.
- Regulile DQ sunt active; → critice eșuează + DLQ; raport privind încălcările.
- Tablouri de bord SLA/prospețime/plenitudine; alertele sunt stabilite.
- Politicile PII/DSAR/RTBF/Legal Hold confirmate de Legal/DPO.
- Runbook 'și backfill/reprocesare/DR testat.
- Costul sub control (cost/interogare, cost/GB, cote).
17) Anti-modele și cum să evite
Jabs noapte monolit: împărțit în pași independenți, paralel cu partidele.
Reîncărcați complet inutil: utilizați trepte/CDC/îmbinare.
Amestecarea PII în analitică: păstrați mapările separate, aplicați CLS/RLS.
Fără DQ/descendență: Introduceți codul DQ și originea urmelor.
„Manual” rambursează: automatizarea și documentul, intervalele limită.
Cost imposibil de gestionat: clustering, materializare, politici de retenție.
18) Glosar (scurt)
CDC - Modificări de captură de la OLTP.
SCD - măsurători cu schimbare lentă (I/II/III).
Lakehouse - lac de date + tabele ACID.
MERGE/Upsert - operațiuni de actualizare idempotente.
Călătoria în timp - citirea versiunilor istorice ale tabelelor.
WORM - depozitare neschimbabilă a artefactelor.
19) Linia de jos
Procesarea loturilor este o disciplină de conducte predictibile, reproductibile și gratuite. Urmând principiile schemei-first, increments/CDC, istorisirea SCD, DQ-as-code, observabilitate și economie conștientă, veți primi vitrine și rapoarte stabile Gold, verificate prin paiete și gata de audit în orice moment.