Riferimento alle query di Power Query

Questo articolo è destinato a un modello di dati che usa Power BI Desktop. Fornisce indicazioni per la definizione di query di Power Query che fanno riferimento ad altre query.

Si esaminerà ora il significato seguente: quando una query fa riferimento a una seconda query, è come se i passaggi della seconda query siano combinati con e vengano eseguiti prima, i passaggi della prima query.

Si considerino diverse query: Query1 origini dati da un servizio Web e il relativo carico è disabilitato. Query2, Query3 e Query4 fanno riferimento a Query1 e i relativi output vengono caricati nel modello di dati.

Diagram showing the Query Dependencies view, displaying queries described in the previous paragraph.

Quando il modello di dati viene aggiornato, si presuppone spesso che Power Query recuperi il risultato di Query1 e che venga riutilizzato dalle query di riferimento. Questo pensiero non è corretto. In effetti, Power Query esegue Query2, Query3 e Query4 separatamente.

Si può pensare che Query2 abbia i passaggi di Query1 incorporati. È anche il caso di Query3 e Query4. Il diagramma seguente presenta un quadro più chiaro del modo in cui vengono eseguite le query.

Diagram showing a modified version of the Query Dependencies view, displaying Query 2, Query 3, and Query 4.

Query1 viene eseguita tre volte. Le esecuzioni multiple possono causare un rallentamento dell'aggiornamento dei dati e un impatto negativo sull'origine dati.

L'uso della funzione Table.Buffer in Query1 non eliminerà il recupero dei dati aggiuntivo. Questa funzione memorizza in memoria una tabella e la tabella memorizzata nel buffer può essere usata solo all'interno della stessa esecuzione di query. Pertanto, nell'esempio, se Query1 viene memorizzato nel buffer quando viene eseguito Query2 , non è stato possibile usare i dati memorizzati nel buffer durante l'esecuzione di Query3 e Query4 . Essi stessi memorizzano i dati nel buffer due volte di più. Questo risultato potrebbe infatti complicare le prestazioni negative, perché la tabella verrà memorizzata nel buffer da ogni query di riferimento.

Nota

L'architettura di memorizzazione nella cache di Power Query è complessa e non è l'obiettivo di questo articolo. Power Query può memorizzare nella cache i dati recuperati da un'origine dati. Tuttavia, quando esegue una query, può recuperare i dati dall'origine dati più volte.

Consigli

In genere, è consigliabile fare riferimento alle query per evitare la duplicazione della logica nelle query. Tuttavia, come descritto in questo articolo, questo approccio di progettazione può contribuire a rallentare gli aggiornamenti dei dati e le origini dati sovraccariche.

È consigliabile creare invece un flusso di dati. L'uso di un flusso di dati può migliorare il tempo di aggiornamento dei dati e ridurre l'impatto sulle origini dati.

È possibile progettare il flusso di dati per incapsulare i dati e le trasformazioni di origine. Poiché il flusso di dati è un archivio permanente di dati nel servizio Power BI, il recupero dei dati è rapido. Pertanto, anche quando si fa riferimento a query generano più richieste per il flusso di dati, è possibile migliorare i tempi di aggiornamento dei dati.

Nell'esempio, se Query1 viene riprogettato come entità del flusso di dati, Query2, Query3 e Query4 può usarlo come origine dati. Con questa progettazione, l'entità originata da Query1 verrà valutata una sola volta.

Per altre informazioni relative a questo articolo, vedere le risorse seguenti: