Funzione DAX CALCULATETABLE Vs FILTER

Funzione DAX CALCULATETABLE Vs FILTER

Sia che sono strumenti potenti per la manipolazione e l'analisi dei dati nelle query DAX, ma presentano alcune differenze fondamentali che è importante comprendere.

In questo blog esamineremo la funzione CALCULATETABLE e il relativo piano di query in DAX Studio e capiremo in che modo differisce dalla funzione FILTER . Alla fine, avrai una migliore comprensione di come scegliere la funzione giusta per le tue esigenze di analisi dei dati.

Per dimostrarlo, utilizzeremo il codice DAX riportato di seguito.

Funzione DAX CALCULATETABLE Vs FILTER

Quando esegui questo codice, otterrai una tabella che mostra Brand e Color.

Funzione DAX CALCULATETABLE Vs FILTER

Nella scheda Piani di query , otterrai un codice corrispondente all'operatore CrossApply in Formula Engine .

Funzione DAX CALCULATETABLE Vs FILTER

Allo stesso tempo, puoi vedere che il codice recupera solo il colore e il marchio del prodotto nella scheda Server Timings .

Funzione DAX CALCULATETABLE Vs FILTER

Sommario

Risultato tempistiche server DAX Studio per CALCULATETABLE

Ad esempio, filtriamo il colore del prodotto per mostrare solo il rosso e/o il nero.

Puoi farlo usando la funzione FILTRO. Quando lo esegui, i tempi del server mostreranno che l'argomento FILTER non è applicato al codice xmSQL .

Funzione DAX CALCULATETABLE Vs FILTER

Ma se utilizzi la funzione CALCULATETABLE, la query nella scheda Server Timings mostrerà che i risultati sono stati filtrati per colore del prodotto.

Funzione DAX CALCULATETABLE Vs FILTER

Piano di query CALCULATETABLE in DAX Studio

Diamo un'occhiata al piano di query per ciascuna funzione.

CALCULATETABLE si trova sulla prima riga del Logical Query Plan perché è una funzione di primo livello nel codice e pertanto non dipende da alcun requisito.

Funzione DAX CALCULATETABLE Vs FILTER

Quando leggi il piano di query di una funzione CALCULATETABLE, non inizi con il primo argomento. Devi prima capire il contesto del filtro utilizzato. Quindi andiamo alla riga 5.

Puoi vedere che l' operatore VertiPaq richiede la colonna del colore del prodotto a causa del filtro applicato. Quindi esegue la scansione di questa colonna e utilizza la combinazione del filtro Not IsEmpty per controllare il colore del prodotto rispetto a ciascuna riga.

Dopo che il contesto del filtro è stato preparato, viene eseguito l' argomento .

Col senno di poi, se utilizzi la funzione FILTER, vedrai un piano di query diverso, quindi l'argomento CROSSJOIN viene eseguito prima di identificare il contesto del filtro.

Funzione DAX CALCULATETABLE Vs FILTER

Lo svantaggio di questo approccio è che non invia la condizione del filtro allo Storage Engine. Non sarai in grado di utilizzare la clausola WHERE all'interno di xmSQL che metterà un pesante fardello sul Formula Engine.

E quando lavori con più tabelle, la combinazione di filtri della funzione CROSSJOIN sarà enorme. Ciò rallenta le prestazioni del codice DAX. Pertanto, nella maggior parte dei casi, si consiglia di utilizzare la funzione CALCULATETABLE.

Quindi, invece di eseguire tutti i calcoli nel Formula Engine, puoi inserire la condizione del filtro all'interno della classe WHERE del codice XMSQL.

Transizione di contesto per funzioni DAX simili

Tempistiche del server

Questo concetto è applicabile anche alla funzione CALCULATE. Usiamo il codice DAX riportato di seguito come esempio.

Funzione DAX CALCULATETABLE Vs FILTER

Una misura ha automaticamente una funzione CALCULATE attorno ad essa.

Quando esegui questo codice, otterrai una tabella che mostra l'importo totale delle vendite per ciascun colore.

Funzione DAX CALCULATETABLE Vs FILTER

Nella scheda Server Timings, puoi vedere che il codice sta eseguendo due query. La prima query calcola la somma dell'importo Sales dalla tabella Sales rispetto alla tabella Products.

Funzione DAX CALCULATETABLE Vs FILTER

La seconda query, invece, recupera nuovamente il colore del prodotto dalla tabella Prodotti. Corrisponde alla funzione nel codice DAX.

Funzione DAX CALCULATETABLE Vs FILTER

Il Formula Engine affianca le cache dei dati delle due query. Inizia recuperando i valori dalla seconda cache di dati e quindi esegue una ricerca nella prima cache di dati.

Piano di interrogazione

Nella scheda Piano di query, il Piano di query logico esegue la scansione del colore del prodotto a causa dell'argomento .

Quindi, VertiPaq riassume l'importo delle vendite totali in base al colore del prodotto. Esegue la transizione del contesto che converte il valore del colore del prodotto in un contesto di filtro equivalente.

Funzione DAX CALCULATETABLE Vs FILTER

Il filtro creato dalla transizione del contesto viene convertito in una proprietà DependOnCols nel piano della query. Dopo che VertiPaq ha scansionato le colonne necessarie per calcolare le vendite totali, moltiplica la quantità di vendita per il prezzo netto.

Le vendite totali vengono quindi restituite come risultato sotto forma di un tipo di dati valuta. Infine, ADDCOLUMNS restituisce una tabella con due colonne contenenti il ​​colore e l'importo delle vendite totali.

Conclusione

Il piano di query può avere un impatto significativo sulle prestazioni di una query, poiché diversi piani di query possono avere diversi livelli di efficienza.

Quando si usano le funzioni CALCULATETABLE e FILTER in una query DAX, il piano di query può variare a seconda dello scenario specifico e di una varietà di fattori, ad esempio l'espressione della formula specifica utilizzata e le funzionalità del motore di query.

In generale, è consigliabile testare e confrontare le prestazioni di diversi piani di query per determinare l'approccio più efficiente per un determinato scenario.

Ti auguro il meglio,


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