Iteratori e transizioni di contesto nelle query DAX

Iteratori e transizioni di contesto nelle query DAX

Questo tutorial discuterà la transizione del contesto e gli iteratori nidificati. Imparerai l'importanza di queste entità e come possono essere una buona fonte per l'ottimizzazione.

Se ricordi, la transizione del contesto avviene quando un contesto di riga cambia in un contesto di filtro equivalente. Devi essere consapevole di ciò che accade quando si verifica una transizione di contesto nei tuoi iteratori perché spesso può generare risultati lenti.

Sommario

Iteratori nidificati rispetto a CALCULATE

Se durante un'iterazione viene richiamata una transizione di contesto, viene creata una tabella di materializzazione. Ciò significa che la transizione del contesto viene richiamata tramite le formule nel DAX. La tabella è un dato non compresso che viene inviato al motore delle formule.

Per dimostrare, la prima misura è per Grandi vendite che ottiene il prezzo corrente se è maggiore o uguale a 500.

Iteratori e transizioni di contesto nelle query DAX

La misura successiva è per la media delle grandi vendite con iteratori nidificati.

Iteratori e transizioni di contesto nelle query DAX

L'ultima misura ottiene la media di Big Sales senza un iteratore nidificato e un CallBackDataID.

Iteratori e transizioni di contesto nelle query DAX

Eseguire la misura con l'iteratore annidato. Assicurarsi di svuotare la cache prima dell'esecuzione, quindi attivare Server Timings e Query Plan.

Iteratori e transizioni di contesto nelle query DAX

Puoi vedere che ha generato 3 scansioni, 2 CallBackDataID e 15.003 righe. Questo è un motivo di preoccupazione perché ci sono solo 101 righe per l'output. Ciò è accaduto perché la misura ha due iteratori o funzioni X.

Questa è la forma completamente espansa della misura che è stata eseguita:

Iteratori e transizioni di contesto nelle query DAX

Sta iterando la tabella Fact Sales con . Quindi ripete nuovamente con CallBackDataID utilizzando . implicita che richiama la transizione del contesto e materializza la tabella. Ecco perché ha estratto 15.003 righe, anche se ci sono solo 101 righe per l'output.

Eseguire l'altra misura che non ha iteratori nidificati. Sta ancora iterando la tabella Fact Sales utilizzando AVERAGEX ma il prezzo corrente è al di fuori della funzione. Filtra i prodotti in cui il prezzo corrente è maggiore o uguale a 500 e quindi calcola la media.

Iteratori e transizioni di contesto nelle query DAX

Puoi vedere che ha solo 2 scansioni, 104 righe e non ha un CallBackDataID. Quindi, se usi CALCULATE , puoi eliminare gli iteratori nidificati e CallBackDataIDs .


Funzioni DAX in LuckyTemplates: utilizzo di iteratori
Come utilizzare una funzione di iterazione in LuckyTemplates
Calcolo DAX: filtrare le transizioni del contesto

Conclusione

Ci sono molte cause per un DAX lento. Uno di questi è dovuto agli iteratori annidati che causano transizioni di contesto non necessarie. Questi iteratori materializzano più righe del necessario, il che rallenta le query.

La soluzione migliore per questo è inserirlo all'interno di CALCULATE . Questo crea meno lavoro per il motore di formula e massimizza le capacità del motore di archiviazione.


Power Automate si applica a ogni azione nei flussi di lavoro

Power Automate si applica a ogni azione nei flussi di lavoro

Scopri l

Tecniche di modellazione dei dati per organizzare le misure DAX

Tecniche di modellazione dei dati per organizzare le misure DAX

Tecniche di modellazione dei dati per organizzare meglio le misure DAX per un flusso di lavoro più efficiente.

Filtro Power Apps: cosè e come si usa?

Filtro Power Apps: cosè e come si usa?

Scopri come utilizzare la funzione di filtro in Power Apps e come incorporarla nelle formule esistenti all

Come commentare più righe in Python: una guida semplice e veloce

Come commentare più righe in Python: una guida semplice e veloce

Come commentare più righe in Python: una guida semplice e veloce

Connettori Power Automate: numero, testo e data e ora

Connettori Power Automate: numero, testo e data e ora

Acquisisci familiarità con i connettori Power Automate per la manipolazione di numeri, testo e date/ore.

Budget Vs Actual Vs Last Year - Suggerimenti per la rendicontazione finanziaria

Budget Vs Actual Vs Last Year - Suggerimenti per la rendicontazione finanziaria

Ora, è molto facile studiare il budget rispetto all

Come salvare e caricare un file RDS in R

Come salvare e caricare un file RDS in R

Imparerai come salvare e caricare oggetti da un file .rds in R. Questo articolo tratta anche come importare oggetti da R a LuckyTemplates.

Che cosè Power Query e M Language: una panoramica dettagliata

Che cosè Power Query e M Language: una panoramica dettagliata

Scopri tutto su Power Query e il linguaggio M per la trasformazione e la preparazione dei dati nel desktop di LuckyTemplates.

Cosè il sé in Python: esempi del mondo reale

Cosè il sé in Python: esempi del mondo reale

Cos'è il sé in Python: esempi del mondo reale

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.