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.
- 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.
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.
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.
- 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».
- Normalizzazione e standardizzazione: FK/guide, deadup, FX/timsons.
- Tabelle fatti/misurazioni (3NF/BCNF), SCD per misure chiave.
- 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).
- 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.