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.


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

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 blog tratterà anche come importare oggetti da R a LuckyTemplates.

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.

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.

Introduzione al filtraggio del contesto in LuckyTemplates

Introduzione al filtraggio del contesto in LuckyTemplates

In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.

Idee di materializzazione per cache di dati in DAX Studio

Idee di materializzazione per cache di dati in DAX Studio

Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.

Reporting aziendale tramite LuckyTemplates

Reporting aziendale tramite LuckyTemplates

Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere