M365Con 2027 – conferenza online gratuita · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Padroneggiare il query folding in Power BI: sposta l'elaborazione sull'origine dati

By ·

Quando lavori con Power BI, poche cose sono più frustranti che vedere l'aggiornamento dei dati durare un'eternità o, peggio, fallire del tutto perché ha esaurito le risorse…

Automatically translated with AI from the original post. Read the English original

▶ BLOGMastering Query Foldingin Power BI: Push the…M365.FM
Titelbild: Mastering Query Folding in Power BI: Push the Work to Your Data Source

Quando lavori con Power BI, poche cose sono più frustranti che vedere l'aggiornamento dei dati durare un'eternità o, peggio, fallire del tutto perché ha esaurito le risorse. Se stai caricando milioni di righe da un database SQL remoto, da un data warehouse aziendale o da un servizio cloud, il modo in cui gestisci le trasformazioni fa la differenza. Ogni passaggio che esegui in Power Query può essere gestito in modo efficiente dal potente server che ospita i dati oppure, in modo lento, dalla tua macchina locale o dal motore in memoria del servizio Power BI. È qui che entra in gioco la magia del query folding.

In questo articolo approfondiremo il query folding: vedremo come ottimizza le trasformazioni dei dati, quali tecniche concrete usare per assicurarti che i passaggi vengano eseguiti correttamente sull'origine, quali errori comuni interrompono la catena del folding e come migliorare in modo sostanziale l'efficienza complessiva dell'aggiornamento dei report. Riportiamo il lavoro dove deve stare: sull'origine dati.

Introduzione al query folding

Nella sua essenza, il query folding è il meccanismo con cui Power Query traduce i passaggi di trasformazione che costruisci nell'interfaccia in un linguaggio di query nativo, tipicamente SQL, e invia tale query al database di origine per l'esecuzione. Invece di scaricare ogni singola riga, tabella e colonna nella memoria di Power BI per poi filtrarle, raggrupparle o unirle in locale, Power BI chiede al database di origine di svolgere il lavoro pesante.

Pensa alla spesa al supermercato. Se vai in un enorme magazzino, prendi ogni articolo presente, lo porti al tavolo della cucina e poi ne butti via il 90% perché è scaduto o non è quello che ti serviva, stai sprecando una quantità enorme di tempo ed energie. È quello che succede senza il query folding. Con il query folding attivo, dai all'addetto del magazzino un elenco preciso: «Dammi solo le mele che pesano più di mezzo chilo, raggruppate per colore». L'addetto fa la selezione in magazzino e ti consegna una piccola scatola con solo ciò che hai chiesto. La tua cucina resta pulita e finisci di cucinare molto più in fretta.

Come il query folding ottimizza le trasformazioni dei dati

Il query folding è la pietra angolare di un'architettura Power BI scalabile. Quando funziona correttamente, riduce al minimo il trasferimento di dati sulla rete, abbatte drasticamente l'utilizzo della memoria durante la fase di aggiornamento e accelera il flusso di sviluppo.

Quando applichi trasformazioni come il filtraggio di righe, la rimozione di colonne, l'ordinamento o semplici aggregazioni all'inizio dei passaggi applicati in Power Query, il connettore sottostante verifica se l'origine dati è in grado di eseguire tali operazioni in modo nativo. In caso affermativo, quei passaggi vengono racchiusi in un'unica query altamente ottimizzata e inviata all'origine. Il motore del database la esegue sugli indici esistenti, il che significa che può scorrere milioni di righe in pochi millisecondi.

Al contrario, quando il query folding si interrompe, Power BI è costretto a trasferire l'intero set di dati non compresso e non filtrato attraverso la rete fino al motore di valutazione di Power Query (il motore mashup). Una volta che i dati si trovano in locale, Power BI applica filtri e trasformazioni usando CPU e RAM della macchina. Per i grandi set di dati aziendali questa è la ricetta perfetta per timeout del gateway, errori di memoria esaurita e report lenti da aggiornare.

Tecniche pratiche per far sì che i passaggi vengano eseguiti correttamente sull'origine

Non tutti i passaggi di Power Query sono uguali e non tutte le origini dati supportano il query folding. I database relazionali come SQL Server, Oracle e PostgreSQL hanno capacità di folding solide, mentre i file piatti come i CSV o le cartelle di lavoro di Excel non vengono gestiti allo stesso modo perché non dispongono di un processore di query nativo.

Per fare in modo che i passaggi vengano eseguiti correttamente sull'origine, devi strutturare i passaggi applicati seguendo una sequenza precisa e prestare attenzione alle funzioni che usi. Ecco alcune tecniche pratiche per mantenere le query in folding:

Errori comuni che interrompono il query folding

Uno degli aspetti più delicati del query folding è la sua fragilità. Un singolo passaggio di trasformazione, apparentemente innocuo, posizionato nell'ordine sbagliato può interrompere completamente la catena di folding, facendo sì che tutti i passaggi successivi vengano eseguiti localmente, anche se il database sarebbe perfettamente in grado di gestirli.

Vediamo alcuni degli errori più comuni che interrompono il query folding:

  1. Inserire SQL nativo e poi trasformare: se scrivi una query SQL nativa all'inizio del passaggio di origine dati, Power Query tratta il risultato come una scatola nera. Le trasformazioni aggiunte successivamente tramite l'interfaccia di Power Query di solito non vengono propagate, perché Power Query non può inserire in modo affidabile passaggi dell'interfaccia all'interno di un blocco SQL personalizzato.
  2. Conversioni di tipo troppo presto o nell'ordine sbagliato: modificare i tipi di dati è essenziale, ma farlo prima di filtrare o di eseguire operazioni in conflitto con le regole di tipizzazione del database può interrompere il folding. Ad esempio, convertire una colonna numerica in testo e poi applicare su di essa un filtro per intervallo numerico può impedire al database di ottimizzare la query.
  3. Aggiungere colonne indice o usare numeri di riga: le funzioni che dipendono dalla posizione delle righe, come «Aggiungi colonna indice» o le operazioni che fanno riferimento alle righe circostanti tramite un indice assoluto, richiedono che l'intero set di dati venga caricato in memoria per determinare le posizioni. Questo interrompe immediatamente il query folding.
  4. Combinare origini dati diverse: se unisci una tabella di un database SQL con una tabella di un file Excel, il query folding si interrompe nel punto in cui le due origini interagiscono, perché Excel non è in grado di elaborare nativamente le query SQL.

Migliorare l'efficienza dell'aggiornamento in Power BI

Quando padroneggi il query folding, i benefici si estendono all'intera architettura dei dati. Tempi di aggiornamento dei report che un tempo richiedevano ore possono scendere a minuti o persino a secondi. Questa efficienza non solo fa risparmiare risorse di calcolo sui gateway o sui server cloud, ma permette anche agli sviluppatori di iterare più rapidamente.

Per massimizzare l'efficienza degli aggiornamenti, combina il query folding con altre best practice fondamentali di modellazione. Ad esempio, assicurati che le tabelle del database abbiano indici appropriati sulle colonne che filtri o unisci frequentemente. Se le tue tabelle SQL non hanno indici, anche una query correttamente propagata costringerà il motore del database a eseguire costose scansioni di tabella. Inoltre, associa il query folding a un modello dati a stella pulito, eliminando le colonne ridondanti e implementando criteri di aggiornamento incrementale per i grandi set di dati storici.

Monitoraggio e risoluzione dei problemi delle query di Power BI

Non puoi risolvere ciò che non misuri. Quando hai a che fare con aggiornamenti lenti o errori imprevisti nelle query, serve un approccio sistematico per capire dove si trova il collo di bottiglia. Inizia usando lo strumento di diagnostica di Power Query integrato in Power BI Desktop. Questa funzione consente di tracciare i tempi di esecuzione di ogni passaggio, mostrando con precisione quanto tempo richiede ciascuna trasformazione e se i dati vengono recuperati da remoto o elaborati localmente.

Inoltre, monitora i log del gateway e i profiler dei database (come SQL Server Profiler o Extended Events) per osservare le query esatte inviate da Power BI alla tua origine dati. Se noti istruzioni SELECT massicce che recuperano tabelle grezze e non filtrate, invece di query mirate con clausole WHERE e GROUP BY, sai subito che il query folding è fallito in un punto dei passaggi applicati.

Per un quadro completo sull'ordine di esecuzione, sulle insidie operative e sui flussi di ottimizzazione avanzati, non perdere l'episodio del podcast correlato e leggi le note su Power Query Folding and Execution Order in Power BI. Capire l'ordine delle operazioni di fondo ti darà la sicurezza di costruire modelli solidi e velocissimi ogni volta.

Conclusione

Padroneggiare il query folding è una delle competenze più incisive che uno sviluppatore Power BI possa acquisire. Spostando il carico di calcolo dalla tua macchina locale o dal servizio Power BI ai potenti motori, altamente ottimizzati, delle origini dati, elimini i colli di bottiglia delle prestazioni, riduci la congestione della rete e fai in modo che l'aggiornamento dei report avvenga in modo fluido e affidabile. Se definisci con attenzione la sequenza dei passaggi, controlli regolarmente le query native ed eviti insidie comuni come l'indicizzazione prematura o la combinazione di origini incompatibili, puoi sfruttare appieno il potenziale del tuo ambiente di business intelligence.

Per approfondire questi concetti e ascoltare un'analisi dettagliata di come l'ordine di esecuzione delle query incide sulle prestazioni del tuo ambiente di lavoro, ascolta la discussione completa nell'episodio del podcast Power Query Folding and Execution Order in Power BI. Applica queste strategie già da oggi e guarda le prestazioni dei tuoi report migliorare!

Power BI Power Query Power BI Service Connector Microsoft To Do Semantic model

Related articles

RSS