Arricchimento dei dati
1) Assegnazione e valore aziendale
L'arricchimento trasforma gli eventi crudi in fatti utili, aggiungendo contesto e segni:- Finanza/rendicontazione: fx-normalizzazione degli importi, riferimento ai mercati/tassi d'imposta, calcolo GGR/NGR.
- Compilazione/AML/RG: schemi di rischio, indicatori di sanzioni/RR, limiti RG, segni comportamentali.
- Marketing/prodotto: fonti di traffico, segmenti, missioni/ricerche, personalizzazione.
- SRE/operazioni: geo/ASN per il traffico, tipo di client/dispositivo, fittiflagi e release.
Il risultato chiave è l'accuratezza dei modelli, la qualità dei report e la velocità decisionale.
2) Fonti di arricchimento (catalogo approssimativo)
Deposito/cataloghi: giochi, provider, mercati/giurisdizione, valute, tabelle fiscali, calendario delle festività.
KYC/KYB/RG - Livelli di controllo, stato, auto-esclusione, limiti, gruppi di età.
AML/sanzioni/PEP: hit screening, elenchi, livelli di rischio.
Reti e dispositivi: IP→geo/ASN, dispositivo/OS/browser, device fingerprint.
Provider di pagamento (PSP): tabelle BIN, metodi, MCC, etichette di rischio.
FX/ora: tasso di cambio alla data dell'evento, fuso orario locale/DST.
Contenuti e marketing: fonti/campagne/UTM, affiliati, segmenti.
Modelli e euristici: schizzi preesistenti, embedding, mupping categorici.
3) Tipi di arricchimento
Lookup-joyn: mappatura a punti per chiave (game _ id, BIN, ip _ range, user _ pseudo _ id).
Dimensione attach - Attacco di misurazione (dim.) ai fatti.
Derived fields - Colonne calcolate (amount _ base, locale _ time, tax _ rate).
Aggregations/velocity: contatori per finestre (N scommesse/min, importo deposito/ora).
Risk/behavioral feures: «Tempo dall'ultimo evento», share-of-wallet, attività notturna.
Geo/ASN/Device: codice paese, regione, operatore, tipo di dispositivo/browser.
Semantic mappings: classificazione dei provider/giochi, cluster di giocatori.
Fici ML - Segni per la simulazione online/offline (Feature Store).
4) Dove arricchire: Batch vs Stream
Stream (real-time): antifrode, trigger RG, alert SRE - ritardi p95-2-5 c; lookup in cache (Redis/Scylla), richieste asincrone ai provider con timeout.
Batch (micro-batch/giornalieri) - Le vetrine Gold (GGR/RG/AML), i controlli, i rapporti - stabilità e completezza sono più importanti della latitanza.
Ibrido: segno online rapido + riassorbimento notturno (riconciliazione/accuracy).
5) Arbitro architettonico
1. Bronze - eventi crudi (append-only).
2. Silver (clean/conform) - Normalizzazione, chiavi, lookup primari e (fx, geo, dim.) .
3. Enrichment Layer - Segni estesi, unità finestre, marcature di rischio.
4. Feature Store - Registro dei segni (coerenza online/offline).
5. Vetrine Gold sotto BI/regolatore/modello; manufatti immutabili.
6. Servizi - API/GraphQL, rapporti, real-time alert.
Componenti: Kafka/Redpanda, Flink/Spark/Beam, Redis/Scylla (lookup), ClickHouse/Pinot (lettura online), Lakehouse (Delta/Iceberg/Hudi).
6) Contratti e schemi
Schema-first: 'event _ time', 'schema _ version', chiavi stabili (user _ pseudo _ id, game _ id, communication _ id).
I segni di arricchimento sono: 'enrichment. version`, `enrichment. sources`, `fx_source`, `geo_source`, `model_version`.
Versioning: i nuovi segni vengono aggiunti come nullable; modifiche breaking - attraverso «/v2 »e doppia voce.
7) Esempi di arricchimento (SQL/pseudocode)
7. 1 FX normalizzazione e tempo locale
sql
SELECT p.transaction_id,
p.amount_orig,
p.currency,
r.rate AS fx_rate_used,
p.amount_orig r.rate AS amount_base,
p.event_time,
convert_timezone(m.tz, 'UTC', p.event_time) AS local_time,
r.fx_source
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'
JOIN dim.markets m ON m.code = p.market;
7. 2 Geo/ASN per IP (pseudocode)
python geo = geo_db.lookup(ip)
asn = asn_db.lookup(ip)
record["geo_country"] = geo.country record["asn"] = asn.number record["enrichment"]["geo_source"] = "mmdb:2025-10-01"
7. 3 Segni di velocità di deposito delle finestre (stream)
sql
SELECT user_pseudo_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS deposits_sum_10m
FROM silver.payments
GROUP BY user_pseudo_id, TUMBLE(event_time, INTERVAL '10' MINUTE);
7. 4 Blend con limiti RG
sql
SELECT b., r.daily_deposit_limit, r.self_exclusion
FROM silver.bets b
LEFT JOIN dim.rg_limits r USING (user_pseudo_id);
8) Qualità di arricchimento (DQ)
Regole minime:- FX: 'fx _ rate _ used'non NULL,' fx _ source 'da whitelist, calcolato'amount _ base' 0 '.
- Geo/ASN: percentuale di successo dei lookups al 98% (mercato), 'country'nel manuale.
- etichette RG/AML: 'valid _ from/valid _ to' (SCD II) non si intersecano; Nessun buco nella storia.
- Unità/finestre: correttezza delle finestre (nessuna doppia contabilità), completeness ≥ 99. 5%.
- Le versioni dei modelli'model _ version'sono disponibili, controllo della deriva dei segni.
yaml table: enriched.payments rules:
- name: fx_present type: not_null column: fx_rate_used severity: critical
- name: country_known type: in_set column: geo_country set_ref: ref.countries severity: major
- name: rg_scd_valid type: scd_validity columns: [valid_from, valid_to]
severity: major
9) Privacy e compliance
Riduce al minimo PII: arricchisci con pseudo-ID e gli ID reali con un tracciato separato.
Geo-localizzazione e residenza: routing regionale (EEA/UK/BR), chiavi di crittografia separate.
DSAR/RTBF: le proiezioni arricchite devono mantenere nascoste/redatte; Conservare la base legale per le eccezioni.
Legale Hold: congelamento delle cancellazioni per gli artefatti/valigette segnalati.
10) Osservabilità e lineage
Linedge: da un evento crudo → lookup/unità → vetrine/modelli; fissa le versioni delle sorgenti ('fx _ source', 'geo _ source', 'bin _ source').
SLI/SLO: freshness p95 (Silver) ≤ 15 мин; geo-lookups di successo 98%; La percentuale di record con i segni chiave compilati è del 99%; latency enrich-striom p95 ≤ 2-5.
Dashboard: mappa termica completeness per sorgente, mappa delle linee guida/modelli, monitor join'ov «costoso», deriva dei segni.
11) Costi e prestazioni
Cache/materializzazione: frequenti lookup'e in Redis/Scylla; snapshot periodici.
Segni compatti: conservare le unità (non gli elenchi crudi) Utilizzare i formati Parquet/Colinvertebrati.
Partitura per data/mercato/tenante; clustering su campi spesso filtrati.
Frequenza adattiva: enrich-jobs pesanti - notti realtime - solo critici.
Chargeback: contabilità cost/query e cost/GB per comandi/fitch.
12) Pattern e anti-pattern
Pattern:- Dimensione Lookup + SCD II per RG/KYC/provider.
- Async Entrichment con timeout e fallback (etichetta «unknown» + ripetizione).
- Feature Store con negoziazione in linea/offline e test di reimpostazione.
- Rule-as-Code per gli arricchimenti (soglie/mappe categoriche).
- Aggancia rigidamente le API esterne in un percorso caldo senza cache.
- Versioni non indicate delle sorgenti ('fx _ source', 'geo _ source').
- Denormalizzazione «tutto con tutto» in Silver (esplosioni di costo/complessità).
- Inserisce PII nei livelli analitici.
13) Processi e RACI
R (Responsibile): Data Engineering (pipline enrich/stream), Domain Owners (semantica dei segni), MLops (Feature Store).
A (Accountable): Head of Data / Chief Data Officer.
C (Consulted): Compliance/Legal/DPO, Finance (FX/налоги), Risk (RG/AML), SRE.
I (Informed): BI/Prodotto/Marketing/Operazioni.
14) Road map di implementazione
MVP (2-4 settimane):1. Catalogo delle fonti di arricchimento (fx, geo, markets, rg/KYC).
2. Regolazione silver + lookup base 'e (fx/geo/dim.) .
3. Prime unità velocity (depositi/tassi) e enriched. v1 della tabella.
4. Dashboard completeness/freshness, versioni delle sorgenti.
Fase 2 (4-8 settimane):- Connetti sanzioni/RER/KUV, BIN PSP, device fingerprint.
- Feature Store (kernel) + cache online, realtime-arricchimento Flink.
- Regole DQ per il livello enrich, lineage e «dry-run» della simulazione.
- Personalizzazione (missioni/ricerche) e rilevatori RG/AML online.
- Gestione del valore (quote, materializzazione, Z-order), multi-regione.
- Generazione automatica della documentazione dei segni e della directory (feature cards).
15) Scontrino di qualità prima della vendita
- Chiavi e schemi coerenti, versioni delle origini firmate.
- Regole DQ su fx/geo/RG/sanzioni/finestre; alert e SLO.
- Cache/timeout e fallback per lookup esterni.
- Linage e dashboard costo/prestazioni.
- Procedure DSAR/RTBF/Legale Hold per le tabelle arricchite.
- Documentazione dei segni (owner, formule, slo, influenza).
16) Errori frequenti e come evitarli
Versioni di riferimenti/modelli non elencate: fissa sempre «_ source» e «model _ variante».
Calcolo fx «retroattivo»: utilizzare il corso al momento dell'evento. memorizzare l'origine FX.
Miscelare PII - Toccare e isolare i muppings.
Doppia contabilità delle unità: controlla finestre e deduzioni.
Chiamate esterne sincronizzate senza cache: immettere async + cache/retrai.
Nessuna riconducibilità: un unico codice di trasformazione online/offline, test di conformità.
17) Glossario (brevemente)
Lookup/Dimension attach - Consente di allegare la guida al fatto della chiave.
Feature Store - minuscolo e cerving segni per ML.
SCD II - storializzazione delle misurazioni a intervalli di validità.
FX - tassi di cambio e normalizzazione degli importi.
ASN - Sistema di rete autonomo utile per antifrode e geo-analisti.
18) Totale
L'arricchimento è una disciplina per trasformare gli eventi in conoscenza: chiavi e schemi coerenti, lookup controllati e aggregazioni, sorgenti versionate, privacy predefinita, DQ e osservabilità. Seguendo i pattern descritti, si otterranno vetrine riproduttive, economiche e complesse e segni pronti per la segnalazione, la personalizzazione e i rilevatori di rischio real-time.