Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il piano di query per Power Query è una funzionalità che offre una visualizzazione migliore della valutazione della query. È utile determinare il motivo per cui una determinata query potrebbe non essere piegata in un determinato passaggio.
Tramite un esempio pratico, questo articolo illustra il caso d'uso principale e i potenziali vantaggi derivanti dall'uso della funzionalità del piano di query per esaminare i passaggi della query. Gli esempi usati in questo articolo sono stati creati usando il database di esempio AdventureWorksLT per Azure SQL Server, che è possibile scaricare da database di esempio AdventureWorks.
Nota
La funzionalità del piano di query per Power Query è disponibile solo in Power Query Online.
Questo articolo è suddiviso in una serie di passaggi consigliati per interpretare il piano delle query. Questi passaggi sono i seguenti:
- Esaminare gli indicatori di riduzione delle query.
- Selezionare il passaggio del query per rivedere il piano di query.
- Implementare le modifiche apportate alla query.
Usare la procedura seguente per creare la query nel proprio ambiente Power Query Online.
Da Power Query - Scegliere origine dati, selezionare Query vuota.
Sostituire lo script della query vuota con la query seguente.
let Source = Sql.Database("servername", "database"), Navigation = Source{[Schema = "Sales", Item = "SalesOrderHeader"]}[Data], #"Removed other columns" = Table.SelectColumns( Navigation, { "SalesOrderID", "OrderDate", "SalesOrderNumber", "PurchaseOrderNumber", "AccountNumber", "CustomerID", "TotalDue" } ), #"Filtered rows" = Table.SelectRows(#"Removed other columns", each [TotalDue] > 1000), #"Kept bottom rows" = Table.LastN(#"Filtered rows", 5) in #"Kept bottom rows"Modificare
servernameedatabasecon i nomi corretti per il proprio ambiente.(Facoltativo) Se si sta provando a connettersi a un server e a un database per un ambiente locale, assicurarsi di configurare un gateway per tale ambiente.
Seleziona Avanti.
Nell'editor di Power Query, seleziona Configura connessione e specifica le credenziali per l'origine dati.
Nota
Per ulteriori informazioni su come connettersi a SQL Server, consultare il database di SQL Server.
Dopo aver seguito questi passaggi, la query sarà simile a quella nell'immagine seguente.
Questa query si connette alla tabella SalesOrderHeader e seleziona alcune colonne degli ultimi cinque ordini con un valore TotalDue superiore a 1000.
Nota
Questo articolo usa un esempio semplificato per presentare questa funzionalità, ma i concetti descritti in questo articolo si applicano a tutte le query. È consigliabile avere una buona conoscenza della riduzione delle query prima di leggere il piano di query. Per saperne di più sulla riduzione delle query, vedere Nozioni di base sulla riduzione delle query.
1. Esaminare gli indicatori di piegatura delle query
Nota
Prima di leggere questa sezione, è consigliabile esaminare l'articolo sugli indicatori di riduzione delle query .
Il primo passaggio di questo processo consiste nel esaminare la query e prestare particolare attenzione agli indicatori di riduzione della query. L'obiettivo è esaminare i passaggi contrassegnati come non piegati. È quindi possibile verificare se apportare modifiche alla query complessiva potrebbe far completare completamente le trasformazioni.
Per questo esempio, l'unica fase che non può essere compressa è Righe inferiori conservate, che è facile da individuare tramite l'indicatore del passaggio non piegato . Questo passaggio è anche l'ultimo passaggio della query.
L'obiettivo è ora esaminare questo passaggio e comprendere cosa viene restituito all'origine dati e cosa non può essere restituito.
2. Selezionare il passaggio della query per esaminare il relativo piano di query
Hai identificato il passaggio Righe inferiori mantenute come passaggio di interesse poiché non viene riconnesso all'origine dati. Fare clic con il pulsante destro del mouse sul passaggio e selezionare l'opzione Visualizza piano di query. Questa azione visualizza una nuova finestra di dialogo contenente un diagramma per il piano di query del passaggio selezionato.
Power Query tenta di ottimizzare la query sfruttando la valutazione differita e la riduzione delle query, come indicato in Nozioni di base sulla riduzione delle query. Questo piano di query rappresenta la conversione ottimizzata della query M nella query nativa inviata all'origine dati. Include anche tutte le trasformazioni eseguite dal motore di Power Query. L'ordine in cui vengono visualizzati i nodi segue l'ordine della query a partire dall'ultimo passaggio o output della query, rappresentato all'estrema sinistra del diagramma. In questo caso, è il nodo Table.LastN che rappresenta il passaggio Righe inferiori mantenute.
Nella parte inferiore della finestra di dialogo è disponibile una barra con icone che consentono di ingrandire o ridurre la visualizzazione del piano di query e altri pulsanti per gestire la visualizzazione. Per l'immagine precedente, è stata usata l'opzione Adatta alla visualizzazione da questa barra per apprezzare meglio i nodi.
Nota
Il piano delle query rappresenta il piano ottimizzato. Quando il motore valuta una query, cerca di integrare tutti gli operatori in una fonte di dati. In alcuni casi, potrebbe anche eseguire un riordinamento interno dei passaggi per massimizzare la piegatura. Tenendo presente questo processo, i nodi/operatori rimasti in questo piano di query ottimizzato in genere contengono la query dell'origine dati "piegata". Tutti gli operatori che non possono essere piegati vengono valutati in locale.
Identificare i nodi piegati tra altri nodi
È possibile identificare i nodi in questo diagramma come due gruppi:
-
nodi piegati: questo nodo può essere
Value.NativeQueryo nodi "origine dati", ad esempioSql.Database. Questi nodi possono anche essere identificati con l'etichetta remoti sotto il nome della funzione. -
nodi non piegati: altri operatori di tabella, ad esempio
Table.SelectRows,Table.SelectColumnse altre funzioni che non possono essere piegate. Questi nodi possono essere identificati anche con le etichette analisi completa e Streaming.
L'immagine seguente mostra i nodi piegati all'interno del rettangolo rosso. Il resto dei nodi non può essere ripiegato nell'origine dati. È necessario esaminare il resto dei nodi poiché l'obiettivo è tentare di ripiegare tali nodi nell'origine dei dati.
È possibile selezionare Visualizza dettagli nella parte inferiore di alcuni nodi per visualizzare informazioni estese. Ad esempio, i dettagli del nodo Value.NativeQuery mostrano la query nativa (in SQL) inviata all'origine dati.
La query illustrata qui potrebbe non essere esattamente la stessa query inviata all'origine dati, ma si tratta di un'approssimazione ottimale. In questo caso, indica esattamente quali colonne vengono sottoposte a query dalla tabella SalesOrderHeader. Quindi, come filtra tale tabella usando il campo TotalDue per ottenere solo le righe in cui il valore per tale campo è maggiore di 1000. Il nodo accanto, Table.LastN, viene calcolato localmente dal motore di Power Query, perché non può essere piegato.
Nota
Gli operatori potrebbero non corrispondere esattamente alle funzioni usate nello script della query.
Esaminare i nodi non piegati e prendere in considerazione le azioni per rendere la trasformazione pieghevole
A questo punto sono stati determinati i nodi che non possono essere piegati e possono essere valutati in locale. Questo caso include solo il nodo Table.LastN, ma in altri scenari potrebbe avere molti altri.
L'obiettivo è applicare modifiche alla query in modo che il passaggio possa essere semplificato. Alcune delle modifiche che è possibile implementare potrebbero variare dalla riorganizzazione dei passaggi all'applicazione di una logica alternativa alla query più esplicita all'origine dati. Ciò non significa che tutte le query e tutte le operazioni siano piegabili applicando alcune modifiche. È comunque una buona pratica determinare tramite tentativi ed errori se la tua query potrebbe essere riformulata.
Poiché l'origine dati è un database di SQL Server, se l'obiettivo è recuperare gli ultimi cinque ordini dalla tabella, è consigliabile sfruttare i vantaggi delle clausole TOP e ORDER BY in SQL. Poiché non esiste alcuna clausola BOTTOM in SQL, la trasformazione Table.LastN in PowerQuery non può essere convertita in SQL. È possibile rimuovere il passaggio Table.LastN e sostituirlo con:
- Un passaggio decrescente dalla colonna SalesOrderID della tabella, poiché questa colonna determina quale ordine passa per primo e quale è stato immesso per ultimo.
-
Seleziona le prime cinque righe poiché la tabella è stata ordinata, questa trasformazione ha lo stesso effetto di un Righe inferiori mantenute (
Table.LastN).
Questa alternativa equivale alla query originale. Anche se questa alternativa in teoria sembra valida, è necessario apportare le modifiche per verificare se questa alternativa fa sì che questo nodo si riallinei completamente all'origine dei dati.
3. Implementare le modifiche alla query
Implementare l'alternativa illustrata nella sezione precedente:
Chiudere la finestra di dialogo del piano delle query e tornare all'Editor di Power Query.
Rimuovi il passaggio Mantieni le righe inferiori.
Ordinare la colonna SalesOrderID in ordine decrescente.
Selezionare l'icona della tabella nell'angolo superiore sinistro della visualizzazione anteprima dati e selezionare l'opzione Mantieni le prime righe. Nella finestra di dialogo passare il numero cinque come argomento e premere OK.
Dopo aver implementato le modifiche, controllare di nuovo gli indicatori di riduzione della query e verificare se viene mostrato un indicatore piegato.
A questo punto è possibile esaminare il piano di query dell'ultimo passaggio, che è ora Mantieni le prime righe. Ora sono presenti solo nodi piegati. Selezionare Visualizza dettagli in Value.NativeQuery per verificare quale query viene inviata al database.
Anche se questo articolo suggerisce quale alternativa applicare, l'obiettivo principale per te è imparare a usare il piano di query per analizzare il query folding. Questo articolo fornisce anche visibilità su ciò che viene inviato alla tua origine dati e sulle trasformazioni eseguite in locale.
È possibile modificare il codice per visualizzare l'impatto che ha nella query. Usando gli indicatori di piegatura delle query, è possibile avere un'idea migliore dei passaggi che impediscono la piegatura della query.