GH GambleHub

Elaborazione batch dei dati

1) Assegnazione e valore

I trasportatori Batch formano vetrine giornaliere/orarie affidabili per:
  • Rapporti regolatori e finanziari (GGR/NGR, tasse, RG/AML registri).
  • BI e gli analisti alimentari (coorti, LTV, vortici di conversione).
  • Foglio di precisione (OLTP↔DWH, provider/PSP), storytelling (SCD).
  • Preparazione di fitte e insiemi di apprendimento per ML.

Proprietà chiave: prevedibilità, completezza, riproduzione, basso costo per unità di dati.

2) Architettura (arbitro)

1. Ingest (raw capture) - HTTP/gRPC, CDC da OLTP, caricamenti di provider da → Bronze.
2. Lakehouse: Bronze (raw, append-only) → Silver (clean/conform) → Gold (serve).
3. Orchestra: Airflow/Dagster/Preferect (DAG 'e, dipendenze, retrai, SLA).
4. Elaborazione Spark/Trino/DBT/SQL partitura e formati ACID (Delta/Iceberg/Hudi).
5. DQ e Contratti: Schema Registry, regole DQ (YAML/SQL), consumer-test.
6. Cerving: livello BI/semantico, esporti di report (CSV/PDF/JSON + hash), API/GraphQL.
7. Osservabilità: metriche di pipline, lineage, fogli, costo (cost/GB, cost/query).

3) Frequenze e SLAs

Giornalieri (D + 1 fino alle 06:00) - rapporti GGR, scarichi regolatori, controlli.
Ore/quasi - pannelli operativi per Ops/Finanza.
Settimana/mese: finconsolidazione, modelli e retroprocessi.

SLO consigliato:
  • Le vetrine gold-giornaliere sono pronte fino alle 6:00 locali.
  • Freshness Silver p95 ≤ 15 min per microbi/ ≤ 2 ore per diurni.
  • Completeness ≥ 99. 5%, Validity (schema) 99. 9%.

4) Download incrementali e CDC

Approcci:
  • CDC (Change Data Capture): Debezium/Logo-Replica → Bronze → gli incantesimi in Silver.
  • Watermark in base al tempo: 'updated _ at> max _ loaded _ ts'.
  • Confronto hash: «md5 (row)» per l'oggetto di modifica.
  • Upsert/Merge: aggiornamenti Idempotent Silver/Gold.
Esempio 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 (storializzazione delle misurazioni)

SCD I: sovrascrivi (ortografia, correzioni minori).
SCD II: cronologia completa ('valid _ from/valid _ to/is _ current').
SCD III: «prima/dopo» per brevi confronti.

SCD II (esempio):
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: riempimento primario/sovraccarico storico.
Riprocessing - Ricalca le vetrine dopo aver modificato la logica/correzione dei dati.

Principi:
  • Idampotenza (MERGE/upsert), invariabilità Bronze, versioning logica.
  • Time-travel per ripetizioni frammenti di metadati.
  • Guardrails - Limitare gli intervalli, le quote e il jobs competitivo.
  • Documentazione: runbook con passaggi e criteri di completamento.

7) Modellazione dei livelli

Bronze:
  • Append-only, partiti'event _ date ',' jurisdiction ',' tenant '.
  • Memorizziamo il payload originale (forensico), fissiamo «ingested _ at».
Silver:
  • Normalizzazione e standardizzazione: FK/guide, deadup, FX/timsons.
  • Tabelle fatti/misurazioni (3NF/BCNF), SCD per misure chiave.
Gold:
  • Vetrine denormalizzate sotto BI/regolatore/finanza, SLA pronto.
  • Materializzazione delle unità; Artefatti di esportazione invariati (hash + WORM).

8) Qualità dei dati (DQ-come-codice)

Esempio di regole YAML per 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

Criteri di reazione: critical → fail job + DLQ; maggiore/minore tag + report.

9) Livello semantico e reporting

Definizioni di metriche comuni (GGR/NGR, ARPU, Retention) in semantic-layer/metrics-store.
Versioning delle metriche; integrazione con BI/pacchetti di esportazione.
Report: CSV/JSON/PDF + sha256, registro di carico e Legale Hold se necessario.

10) Privacy, residenza, sicurezza

Minimizzazione PII: alias utente mapping - in un tracciato protetto separato.
Data residency: cataloghi/chiavi separati per EEA/UK/BR; divieto di join'ov crocifissori senza fondamento giuridico.
Crittografia: TLS in-transit; KMS/CMK at-rest; Controllo delle esportazioni.
DSAR/RTBF: proiezioni calcolate, modifiche selettive Controllo delle disponibilità.
Legale Hold: archivi WORM per gli artefatti regolatori.

11) Prestazioni e costi

Partitura per data/mercato/tenante; Z-order/cluster per predici frequenti.
Formati: Parquet + tabelle ACID; compressione/statistica, OTTIMIZE/VACUUM.
Materiali: aggregazioni stabili in Gold; evitare i «monolitici» jobs.
Quote/budget: marceback per comando; limiti di backfill/richieste pesanti.
Pianificazione: finestre a basso carico (notte/fine settimana), priorità code.

12) Osservabilità e controllo

Metriche di pipline: duration, success rate, retries, rows processed, cost/query.
Metriche DQ: completeness, validity, uniqueness, errori FK, draft.
Freshness heatmap per domini e mercati SLA-dashboard.
Lineage: origine da Bronze a report Analisi impact prima delle modifiche.
Budget SLO, degrado DQ, ritardi, aumento dei costi.

13) Esempi SQL/modelli

Regolazione valuta (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';
Vetrina giornaliera GGR (Gold):
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;
Controllo completezza (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) Processi e RACI

R (Responsibile) - Data Engineering (DAG 'e, modelli Silver/Gold), Data Platform (Infra, Minuscolo di schema, 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/Prodotto/Marketing/Operazioni.

15) Road map di implementazione

MVP (4-6 settimane):

1. Lakehouse Bronze/Silver (formato ACID), CDC/incarichi per 2-3 domini.

2. DQ-come-codice: 10-15 regole per Payments/Gameplay + convalida CI.

3. Prima vetrina Gold (GGR Daily) con SLA fino alle 6:00; esportazione in esame + hash.

4. Dashboard Freshness/Completeness/Cost, alert di base.

Fase 2 (6-12 settimane):
  • SCD II для users/games/providers; Estensione dei domini.
  • Strato semantico delle metriche; compressione con i provider OLTP (accuracy).
  • Procedure backfill/reprocessing, lineage e influencer, regionalizzazione (EEA/UK).
Fase 3 (12 + settimane):
  • Correzione automatica delle modifiche (dry-run), budget/quote, conformeback.
  • Documentazione automatica (data product pages), esercitazioni DR e time-travel-recovery.
  • Ottimizzazione dei costi (clustering, materializzazione, TTL, vuoto).

16) Foglio di assegno prima della vendita

  • Contratti e schemi in Registry, test di compatibilità verde.
  • I download incrementali/CDC funzionano, MERGE è idipotente.
  • Le regole DQ sono attive; critical → fail + DLQ; Rapporto sulle violazioni.
  • SLA/dashboard di freschezza/completezza; Gli alert sono sintonizzati.
  • I criteri PII/DSAR/RTBF/Legale Hold sono confermati da Legale/DPO.
  • Runbook 'e backfill/reprocessing/DR testati.
  • Costo sotto controllo (cost/query, cost/GB, quouti).

17) Anti-pattern e come evitare

Job notturni monolitici: fraziona in passi indipendenti paralleli alle partizioni.
Full-reload senza bisogno: usa gli incantesimi/CDC/merjee.
Miscelazione PII nell'analisi: tenete separati i muppings, applicate CLS/RLS.
Nessun DQ/lineage - Immettere un DQ-come-codice e monitorare l'origine.
Backfill manuali - Automatizzare e documentare, limitare gli intervalli.
Costi non controllati: clustering, materializzazione, retensching policy.

18) Glossario (breve)

CDC - Cattura modifiche da OLTP.
SCD - Dimensioni che cambiano lentamente (I/II/III).
Lakehouse - data lake + tabelle ACID.
MERGE/Upsert - Update Idempotent Update.
Time-travel - Lettura delle versioni storiche delle tabelle.
WORM - Memorizzazione invariata degli artefatti.

19) Totale

L'elaborazione in batch è una disciplina di linee di montaggio prevedibili, riproduttive e complesse. Seguendo i principi schema-first, incrementali/CDC, storytelling SCD, DQ-come-codice, osservabilità ed economia consapevole, otterrete delle vetrine Gold stabili e dei rapporti, verificati da incroci e pronti per essere verificati in qualsiasi momento.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.