In Microsoft Fabric l’ingestion e la trasformazione dei dati si possono realizzare con tre strumenti diversi, che vivono tutti nell’esperienza Data Factory e Data Engineering: la data pipeline, il Dataflow Gen2 e il notebook Spark. Non sono alternative equivalenti: ciascuno ha un modello di esecuzione, un profilo di costo e un pubblico ideale differenti. Nella DP-700 buona parte delle domande scenario chiede proprio di scegliere lo strumento giusto dato un vincolo di volume, complessità o competenze del team.
Data pipeline: orchestrazione e movimento massivo
La data pipeline è il motore di orchestrazione. Il suo compito primario non è trasformare i dati, ma coordinare attività: la Copy activity per il movimento massivo da sorgenti esterne (database on-prem via on-premises data gateway, API, storage, altri cloud) verso OneLake, più attività di controllo del flusso come ForEach, If Condition, Lookup, Invoke pipeline e l’esecuzione di notebook o dataflow.
- Ideale per ingestion ad alto volume senza trasformazioni complesse (pattern copy-then-transform).
- Gestisce scheduling, dipendenze, retry e parametrizzazione.
- Non è il posto giusto per logica di trasformazione riga-per-riga: al massimo mapping e conversioni di tipo nella Copy activity.
Scenario tipico: “copiare quotidianamente 200 tabelle da un SQL Server on-prem al Lakehouse”. Qui la risposta è pipeline con Copy activity (spesso in un pattern metadata-driven con ForEach), non un dataflow.
Dataflow Gen2: trasformazione low-code
Il Dataflow Gen2 porta l’esperienza Power Query (linguaggio M) dentro Fabric. È lo strumento low-code/no-code per chi conosce Excel o Power BI e vuole trasformare visivamente: merge, unpivot, tipizzazione, deduplica, gestione errori.
- Ottimo per self-service e team con competenze prevalentemente analitiche, non di programmazione.
- Supporta staging e i data destination configurabili (Lakehouse, Warehouse, KQL Database, SQL Database).
- Riusabilità limitata: la logica vive dentro il dataflow, difficile da versionare e testare come codice.
È la scelta giusta quando la trasformazione è di complessità media, i volumi sono ragionevoli e conta la velocità di sviluppo più della performance di picco.
Notebook Spark: trasformazioni complesse e codice riusabile
Il notebook esegue codice PySpark, Spark SQL, Scala o R sul motore Spark distribuito di Fabric. È la scelta pro-code per alta scala e logica sofisticata.
- Migliore su volumi molto grandi: parallelismo distribuito, ottimizzazioni su Delta Lake / tabelle Lakehouse (partizioni,
OPTIMIZE, V-Order). - Logica riusabile e testabile: moduli condivisi, parametrizzazione via
%%configure, integrazione con Git e CI/CD. - Adatto a trasformazioni complesse (window function, join massivi, machine learning, streaming).
df = spark.read.format("delta").load("Tables/raw_sales")
agg = df.groupBy("region").sum("amount")
agg.write.mode("overwrite").saveAsTable("sales_by_region")
Matrice decisionale
| Criterio | Data pipeline | Dataflow Gen2 | Notebook Spark |
|---|---|---|---|
| Volume | Alto (solo copia) | Basso-medio | Molto alto |
| Complessità trasformazione | Minima | Media, visuale | Alta, arbitraria |
| Riusabilità / versioning | Media (parametri) | Bassa | Alta (Git, moduli) |
| Competenze richieste | Basse-medie | Basse (Power Query) | Alte (Spark/Python) |
| Focus | Orchestrazione + movimento | Trasformazione low-code | Trasformazione a scala |
Nella pratica gli strumenti si combinano: una pipeline orchestra la Copy activity per l’ingestion, poi invoca un notebook per la trasformazione pesante nel layer Silver/Gold di un’architettura medallion.
Trappole tipiche d’esame
- Scenario: dataset di svariati miliardi di righe, trasformazioni complesse, ottimizzazione di costo e performance. → Risposta: notebook Spark, non Dataflow Gen2. Il dataflow è comodo ma su volumi molto grandi diventa più lento e più costoso perché consuma più Capacity Unit rispetto a Spark.
- Scenario: copiare in blocco molte tabelle da una sorgente on-prem verso il Lakehouse, senza trasformare. → Risposta: data pipeline con Copy activity (e on-premises data gateway), non un notebook o un dataflow.
- Scenario: analisti senza competenze di coding devono creare trasformazioni self-service con logica di merge e pulizia. → Risposta: Dataflow Gen2 (Power Query), non un notebook.
- Scenario: serve schedulare, gestire dipendenze e retry tra più step di ingestion e trasformazione. → Risposta: data pipeline come orchestratore che invoca dataflow e notebook; l’orchestrazione non si fa dentro un singolo notebook.
- Scenario: la stessa logica di trasformazione va riusata su più progetti, versionata in Git e testata. → Risposta: notebook (codice modulare), non un dataflow difficile da versionare.