Perché la query viene eseguita più volte?
Quando si esegue l'aggiornamento in Power Query, c'è molto da fare dietro le quinte per tentare di offrire un'esperienza utente fluida e per eseguire le query in modo efficiente e sicuro. Tuttavia, in alcuni casi è possibile notare che più richieste di origine dati vengono attivate da Power Query quando i dati vengono aggiornati. A volte queste richieste sono normali, ma altre volte possono essere impedite.
Le sezioni seguenti descrivono alcune istanze quando Power Query può inviare più richieste a un'origine dati.
I connettori possono effettuare più chiamate a un'origine dati per vari motivi, tra cui metadati, memorizzazione nella cache dei risultati, paginazione e così via. Questo comportamento è normale ed è progettato per funzionare in questo modo.
Se più query eseguono il pull da tale origine dati, possono verificarsi più richieste alla stessa origine dati. Queste richieste possono verificarsi anche in un caso in cui una sola query fa riferimento all'origine dati. Se una o più query fanno riferimento a tale query, ogni query, insieme a tutte le query da cui dipende, viene valutata in modo indipendente.
In un ambiente desktop viene eseguito un singolo aggiornamento di tutte le tabelle nel modello di dati usando una singola cache condivisa. La memorizzazione nella cache può ridurre la probabilità che più richieste vengano inviate alla stessa origine dati, poiché una query può trarre vantaggio dalla stessa richiesta già eseguita e memorizzata nella cache per una query diversa. Anche qui, tuttavia, è possibile ottenere più richieste perché:
- L'origine dati non viene memorizzata nella cache ,ad esempio file CSV locali.
- La richiesta all'origine dati è diversa da una richiesta già memorizzata nella cache a causa di operazioni downstream (che possono modificare la riduzione).
- La cache è troppo piccola (che è relativamente improbabile).
- Le query vengono eseguite approssimativamente contemporaneamente.
In un ambiente cloud ogni query viene aggiornata usando la propria cache separata. Una query non può quindi trarre vantaggio dalla stessa richiesta già memorizzata nella cache per una query diversa.
A volte il livello di riduzione di Power Query può generare più richieste a un'origine dati, in base alle operazioni eseguite a valle. In questi casi, è possibile evitare più richieste usando Table.Buffer
. Altre informazioni: Memorizzare nel buffer la tabella
In Power BI Desktop Analysis Services (AS) aggiorna i dati usando due valutazioni: una per recuperare lo schema, che AS esegue richiedendo zero righe, e una per recuperare i dati. Se il calcolo dello schema di riga zero richiede il recupero dei dati, possono verificarsi richieste di origine dati duplicate.
La privacy dei dati esegue le proprie valutazioni di ogni query per determinare se le query sono sicure da eseguire insieme. Questa valutazione può talvolta causare più richieste a un'origine dati. Un segno telltale che una determinata richiesta proviene dall'analisi della privacy dei dati è che ha una condizione "TOP 1000" (anche se non tutte le origini dati supportano tale condizione). In generale, la disabilitazione della privacy dei dati, presupponendo che sia accettabile, eliminerebbe "TOP 1000" o altre richieste relative alla privacy dei dati durante l'aggiornamento. Altre informazioni: Disabilitare il firewall per la privacy dei dati
Analogamente alle valutazioni eseguite per la privacy dei dati, l'editor di Power Query scarica per impostazione predefinita un'anteprima delle prime 1.000 righe di ogni passaggio della query. Il download di queste righe consente di garantire che l'anteprima dei dati sia pronta per la visualizzazione non appena viene selezionato un passaggio, ma può anche causare richieste di origine dati duplicate. Altre informazioni: Disabilitare l'analisi in background
Diverse attività in background dell'editor di Power Query possono anche attivare richieste di origine dati aggiuntive( ad esempio, analisi della riduzione delle query, profilatura delle colonne, aggiornamento automatico dell'anteprima di 1000 righe attivata da Power Query dopo il caricamento dei risultati in Excel e così via).
È possibile isolare le istanze di più query disattivando parti specifiche del processo di query per isolare la provenienza delle richieste duplicate. Ad esempio, se si inizia:
- Nell'editor di Power Query
- Con il firewall disabilitato
- Con l'analisi in background disabilitata
- Con la profilatura delle colonne e qualsiasi altra attività in background disabilitata
- [Facoltativo] Fare un
Table.Buffer
In questo esempio è disponibile una sola valutazione M che si verifica quando si aggiorna l'anteprima dell'editor di Power Query. Se le richieste duplicate si verificano a questo punto, sono in qualche modo intrinseche nel modo in cui viene creata la query. In caso contrario, e se si abilitano le impostazioni descritte in precedenza una alla volta, è possibile osservare in quale punto si verificano le richieste duplicate.
Le sezioni seguenti descrivono questi passaggi in modo più dettagliato.
Non è necessario riconnettersi o ricreare la query, è sufficiente aprire la query da testare nell'editor di Power Query. Se non si vuole creare confusione con la query esistente, è possibile duplicare la query nell'editor.
Il passaggio successivo consiste nel disabilitare il firewall per la privacy dei dati. Questo passaggio presuppone che non ci si preoccupi della perdita di dati tra le origini, quindi la disabilitazione del firewall per la privacy dei dati può essere eseguita usando le impostazioni del livello di privacy sempre ignorate descritte nell'opzione Imposta combinazione rapida in Excel o usando l'impostazione Ignora i livelli di privacy e potenzialmente migliorare le prestazioni descritte in Livelli di privacy di Power BI Desktop in Power BI Desktop.
Assicurarsi di annullare questo passaggio prima di riprendere il test normale.
Il passaggio successivo consiste nel disabilitare l'analisi in background. L'analisi in background è controllata dall'impostazione Consenti il download dei dati nell'impostazione in background descritta in Disabilitare l'aggiornamento in background di Power Query per Power BI. È anche possibile disabilitare questa opzione in Excel.
Facoltativamente, è anche possibile usare Table.Buffer
per forzare la lettura di tutti i dati, che imita ciò che accade durante un caricamento. Per usare Table.Buffer
nell'editor di Power Query:
Nella barra della formula dell'editor di Power Query selezionare il pulsante fx per aggiungere un nuovo passaggio.
Nella barra della formula racchiudere il nome del passaggio precedente con Table.Buffer(<il nome del passaggio precedente viene qui>). Ad esempio, se il passaggio precedente è stato denominato
Source
, la barra della formula visualizza= Source
. Modificare il passaggio nella barra della formula per dire= Table.Buffer(Source)
.
Altre informazioni: Table.Buffer
Per eseguire il test, eseguire un aggiornamento nell'editor di Power Query.