Lezione 2.2
Le 3 modalità
Modulo 02 · Lezione 2.2 · Livello Base

Import, DirectQuery e Direct Lake: quando scegliere quale

Questa è la decisione più importante di tutto Power BI. Tre modalità di connessione, tre filosofie diverse. Sbagliare significa report lenti, dati stantii o costi alle stelle. Ti do un metodo per decidere in 30 secondi.

  • ⏱ Tempo stimato: ~25 min + esercitazioni
  • 🎯 Prerequisiti: L1.1, L2.1
  • 🛠 Software: nessuno (concettuale)
1

Import — i dati 'dentro' il modello (default storico)

Import mode: al refresh, Power BI copia i dati dalla sorgente dentro il modello, comprimendoli con il motore in-memory VertiPaq. Quando l'utente apre il report e interagisce con un visual, il calcolo avviene in memoria sul motore Power BI, non sulla sorgente.

  • Pro: velocissimo (millisecondi), interattività fluida, indipendente dalla sorgente.
  • Pro: nessun carico sulla sorgente durante l'uso del report.
  • Contro: i dati sono "fotografati al momento del refresh" — freschezza = ultimo refresh.
  • Contro: limite dataset (10 GB su Pro/PPU, fino a centinaia di GB su capacità Fabric).
  • Contro: richiede pianificazione refresh (8/giorno su Pro, 48 su PPU/F-SKU).
VertiPaq: perché Import è così veloce
VertiPaq è una colonna-store in memoria con compressione brutale (dictionary encoding, run-length encoding, value encoding). Su dati reali ottiene 5x–20x di compressione rispetto alla sorgente. Per questo dataset da 50 GB di SQL diventano 5 GB nel .pbix.
2

DirectQuery — query live alla sorgente

DirectQuery: i dati non vengono copiati. Ogni volta che l'utente interagisce con un visual, Power BI genera una query SQL (o equivalente) e la manda live alla sorgente. La sorgente risponde, Power BI mostra.

  • Pro: dati sempre freschi (al secondo, se la sorgente è viva).
  • Pro: niente limiti di dimensione dataset.
  • Pro: nessun refresh schedulato (la "freschezza" è gratuita).
  • Contro: ogni click sull'utente = una query alla sorgente → performance dipendono dalla sorgente.
  • Contro: alcune funzioni DAX non funzionano o sono limitate.
  • Contro: carico costante sulla sorgente (può servire scaling).
DirectQuery può uccidere la sorgente
Se 200 utenti aprono un report DirectQuery su un SQL non dimensionato, la sorgente collassa. Prima di scegliere DirectQuery, parla col DBA della sorgente per dimensionare e capire i tempi di risposta tipici.
3

Direct Lake — la modalità Fabric che cambia le regole (GA)

Direct Lake è la modalità nata in Fabric. Legge direttamente le tabelle Delta/Parquet da OneLake senza copiarle e senza fare query live alla sorgente. Il motore VertiPaq carica le colonne on-demand al primo uso, poi tiene tutto in memoria.

Combina i due mondi:

  • Velocità di Import — usa VertiPaq in memoria una volta caricato.
  • Freschezza di DirectQuery — se la tabella Delta viene aggiornata, Direct Lake la rilegge senza refresh schedulato.
  • Zero copia — niente storage duplicato, niente refresh ETL.
Requisiti Direct Lake
  • Capacità Fabric F-SKU (non Pro/PPU).
  • Dati in OneLake in formato Delta (tabelle Lakehouse o shortcut).
  • Modello semantico creato dentro Fabric (non un .pbix Import).
Fallback automatico a DirectQuery
Quando Direct Lake non può servire una richiesta (es. memoria piena, partizione mancante), fa fallback automatico a DirectQuery sulla sorgente. È trasparente ma può rallentare — controlla i log delle query "framing" per scoprire fallback frequenti.
4

I modelli compositi (Import + DirectQuery, oppure Direct Lake + Import)

Puoi mescolare. Esempi:

  • Composite Import + DirectQuery: le tabelle dimensione (Prodotti, Clienti, Date) in Import per velocità; la tabella fatti (Vendite con miliardi di righe) in DirectQuery per non duplicare lo storage.
  • Composite Direct Lake + Import: il fatto live da Lakehouse via Direct Lake; tabelle dimensione importate (es. da Excel o sistema separato).
Composite ≠ banale
I modelli compositi sono potenti ma vanno disegnati con cura: cross-source relationships, security, performance richiedono attenzione. Approfondiamo nel Modulo 7.
5

Tabella decisionale — quale scegliere

AspettoQuandoModalità consigliata
Dataset ≤ 1 GB, refresh notturno sufficienteSempreImport
Dati che cambiano ogni minuto, devo vedere in tempo realeSempreDirectQuery (o Direct Lake)
Decine di GB di dati, capacità Fabric disponibile, dati in Delta su OneLakeSempreDirect Lake
SQL piccolo, pochi utenti, dati semi-staticiSempreImport
500 utenti, dashboard interattivi, sorgente non sopporta caricoSempreImport (o Direct Lake)
Dimensioni piccole + fatto enorme che non vuoi duplicareCompositeImport + DirectQuery
Stack Fabric moderno con Lakehouse, voglio "best of both"CompositeDirect Lake + Import
6

Cose che non funzionano in DirectQuery

DirectQuery impone vincoli che è importante conoscere prima di scegliere:

  • Funzioni DAX "complesse" che richiedono iterazione sull'intero dataset (alcune time intelligence avanzate, calcoli su intero virtual table) sono limitate o lente.
  • Quick measures e alcune funzioni AI non disponibili.
  • Power Query in DirectQuery ha step limitati: non puoi fare unpivot, merge complessi, alcune trasformazioni — perché devono essere "translatable" in SQL.
  • Calcoli misure devono fare query folding giù alla sorgente: se rompi il folding (es. step custom in M), la performance crolla.
Query folding — concetto chiave
Quando Power Query genera UN'unica query SQL che la sorgente può eseguire nativamente, si dice che "il folding regge". Se uno step (es. una colonna calcolata custom) lo rompe, Power Query deve scaricare i dati e elaborarli localmente — addio performance DirectQuery.
7

Esercitazioni

Esercizio 1Base

Match scenario → modalità

Consegna

Per ognuno indica modalità consigliata e perché in 1 frase:

  1. Dashboard finanza con dati ERP mensili (vendite, costi, P&L).
  2. Monitor real-time di traffico web (eventi al secondo) per il team marketing.
  3. Report su miliardi di righe di transazioni in un Lakehouse Fabric.
  4. Report su 10k clienti per un piccolo CRM (Pro license, niente F-SKU).
  5. Dashboard ops con scorte di magazzino + vendite real-time.
Esercizio 2Base

Vero o falso

Consegna
  1. Import copia i dati nel .pbix.
  2. DirectQuery richiede refresh schedulato.
  3. Direct Lake legge tabelle Delta da OneLake senza copiarle.
  4. Direct Lake è disponibile anche con licenza Pro.
  5. VertiPaq comprime i dati nel modello Import.
Esercizio 3Intermedia

Troubleshooting — il report DirectQuery è lentissimo

Consegna

Hai un report DirectQuery su Snowflake. Un visual a barre con 10 categorie impiega 12 secondi ad apparire. Cosa controlli, in ordine, per diagnosticare?

Esercizio 4Avanzata

Stack scelto, giustificalo

Consegna

Sei chiamato in un'azienda manifatturiera. Hanno: 2 anni di vendite (15 GB in SQL), anagrafica clienti (50k righe in Excel), uno stream IoT da 200 sensori in tempo reale (Azure Event Hub → Lakehouse Fabric). Vogliono un cruscotto unico per il management. Quale architettura Power BI proponi e con quali modalità?

8

Quick check finale

Quick check

Quale modalità copia i dati dentro il modello al refresh?

Quick check

Che cosa richiede Direct Lake?

Hai finito la Lezione 2.2 ✓

Hai in tasca la decisione architetturale più importante di Power BI. Nella 2.3 torniamo concreti: carichiamo Excel, CSV e SQL passo-passo.