La medallion architecture è il pattern di riferimento per organizzare i dati in un lakehouse basato su Delta Lake (tipicamente con Azure Databricks o Delta tables in Microsoft Fabric). Invece di distinguere “staging” e “warehouse”, il dato attraversa tre layer di qualità crescente — bronze, silver, gold — ognuno con responsabilità precise. L’obiettivo è che ogni trasformazione sia tracciabile, ripetibile e riprocessabile senza corrompere lo stato.
I tre layer
Bronze — raw as-is
Il layer bronze contiene i dati ingeriti così come arrivano dalla sorgente, senza pulizia semantica. Si aggiunge solo metadata tecnico: timestamp di ingestion, nome file/source, un batch id. Si scrive in append, mantenendo la storia completa: bronze è il tuo system of record riproducibile, la rete di sicurezza da cui puoi ricostruire tutto a valle. Formati sorgente eterogenei (JSON, CSV, Avro, eventi) diventano Delta tables append-only.
Silver — pulito e conformato
Nel layer silver applichi qualità e struttura: parsing dei tipi, deduplicazione, gestione dei null, enforcement dello schema, join di conformazione tra sorgenti, applicazione di regole di data quality e, dove serve, logica SCD (slowly changing dimensions). Il risultato è un modello conformato e normalizzato, granulare ma affidabile, non ancora orientato al consumo di business. È il layer su cui i data scientist e gli engineer costruiscono, perché è pulito ma non ha ancora perso dettaglio.
Gold — aggregati di business
Il layer gold contiene tabelle business-ready: aggregati, KPI, feature per ML e soprattutto modelli dimensionali a star schema (fact + dimension) ottimizzati per Power BI, per il SQL analytics endpoint di Fabric o per un serving layer. Qui il dato è denormalizzato per performance di lettura e allineato al linguaggio del business.
Mapping su Delta e sui job
Ogni layer è un insieme di Delta tables; le trasformazioni sono job (notebook o pipeline) che leggono dal layer precedente e scrivono nel successivo. Due proprietà sono decisive all’esame:
- Idempotenza: rieseguire lo stesso job sullo stesso input deve produrre lo stesso risultato, senza duplicare righe. In pratica si usa il
MERGE INTOdi Delta (upsert su chiave) invece dell’INSERTcieco, così un retry non raddoppia i dati.
MERGE INTO silver.orders t
USING staging_batch s
ON t.order_id = s.order_id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *
- Reprocessing: poiché bronze conserva il raw storico, puoi ricostruire silver e gold dopo un bug di trasformazione semplicemente rieseguendo i job, senza tornare alla sorgente. Delta abilita anche time travel e ripartenza incrementale con Structured Streaming + checkpoint (o Auto Loader) per processare solo i nuovi dati.
Confronto con il data warehouse classico
Nel DW tradizionale (ETL → staging → warehouse) la trasformazione avviene prima del caricamento e il dato raw non viene conservato: se cambi una regola devi re-ingerire dalla sorgente, spesso non più disponibile. La medallion è ELT: carichi prima il raw (bronze) e trasformi dopo, ottenendo separazione di responsabilità, storicizzazione e possibilità di riprocessare a costo basso. Gold resta comunque uno star schema: la modellazione dimensionale non sparisce, cambia dove e quando la applichi.
Trappole tipiche d’esame
- Scenario: vogliono poter ricostruire i dati puliti dopo un errore di logica senza ri-scaricare dalla sorgente → la risposta è conservare il raw storico in bronze (append-only) e riprocessare, non trasformare direttamente in ingestion.
- Scenario: dashboard Power BI lente su tabelle normalizzate di dettaglio → non far leggere il BI da silver; costruisci aggregati/star schema nel layer gold.
- Scenario: un retry della pipeline duplica le righe → serve una scrittura idempotente con
MERGE INTOsu chiave, nonINSERTappend. - Scenario: proposta di andare da bronze direttamente a gold “per velocità” → è la trappola: saltare silver significa perdere deduplica, conformazione e qualità; gli aggregati risulterebbero inaffidabili.
- Scenario: pulizia e regole di business messe insieme nello stesso job bronze→silver → non mescolare le responsabilità dei layer: silver conforma e ripulisce, gold aggrega per il business.