GH GambleHub

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.

SLO-uri recomandate:
  • 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.
Exemplu MERGE (Delta/Iceberg):
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.

SCD II (exemplu):
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.

Principii:
  • 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'.
Argint:
  • Normalizare și standardizare: FK/directoare, dedup, FX/fusuri orare.
  • Tabele de fapt/dimensiune (3NF/BCNF), SCD pentru dimensiuni cheie.
Aur:
  • 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).
Faza 3 (12 + săptămâni):
  • 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.

Contact

Contactați-ne

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

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ă.