DAX CALCULATETABLE Vs Funcția FILTER

DAX CALCULATETABLE Vs Funcția FILTER

Atât , cât și sunt instrumente puternice pentru manipularea și analiza datelor în interogarea DAX, dar au câteva diferențe cheie care sunt importante de înțeles.

În acest blog, vom trece peste funcția CALCULATETABLE și planul său de interogare în DAX studio și vom înțelege cum diferă de funcția FILTER . Până la sfârșit, veți înțelege mai bine cum să alegeți funcția potrivită pentru nevoile dvs. de analiză a datelor.

Pentru a demonstra, vom folosi codul DAX de mai jos.

DAX CALCULATETABLE Vs Funcția FILTER

Când rulați acest cod, veți obține un tabel care arată marca și culoarea.

DAX CALCULATETABLE Vs Funcția FILTER

În fila Planuri de interogare , veți obține un cod corespunzător operatorului CrossApply din Formula Engine .

DAX CALCULATETABLE Vs Funcția FILTER

În același timp, puteți vedea că codul preia doar culoarea și marca produsului în fila Timings server .

DAX CALCULATETABLE Vs Funcția FILTER

Cuprins

DAX Studio Server Timings Rezultat pentru CALCULATETABLE

De exemplu, să filtram culoarea produsului pentru a afișa doar roșu și/sau negru.

Puteți face acest lucru utilizând funcția FILTER. Când îl rulați, Timingurile serverului vor arăta că argumentul FILTER nu este aplicat codului xmSQL .

DAX CALCULATETABLE Vs Funcția FILTER

Dar dacă utilizați funcția CALCULATETABLE, interogarea din fila Server Timings va arăta că rezultatele au fost filtrate după culoarea produsului.

DAX CALCULATETABLE Vs Funcția FILTER

Planul de interogări CALCULATETABLE în DAX Studio

Să ne uităm la Planul de interogare pentru fiecare funcție.

CALCULATETABLE se află pe prima linie a Planului de interogare logic , deoarece este o funcție de nivel superior în cod și, prin urmare, nu depinde de nicio cerință.

DAX CALCULATETABLE Vs Funcția FILTER

Când citiți planul de interogare al unei funcții CALCULATETABLE, nu începeți cu primul argument. Mai întâi trebuie să înțelegeți contextul filtrului utilizat. Deci, să trecem la rândul 5.

Puteți vedea că operatorul VertiPaq necesită coloana de culoare a produsului din cauza filtrului aplicat. Apoi scanează această coloană și folosește combinația Not IsEmpty Filter pentru a verifica culoarea produsului pe fiecare rând.

După ce contextul de filtru a fost pregătit, argumentul este executat.

În retrospectivă, dacă utilizați funcția FILTER, veți vedea un plan de interogare diferit, astfel încât argumentul CROSSJOIN este efectuat înainte de a identifica contextul filtrului.

DAX CALCULATETABLE Vs Funcția FILTER

Dezavantajul acestei abordări este că nu împinge condiția filtrului către motorul de stocare. Nu veți putea folosi clauza WHERE în interiorul xmSQL, ceea ce va pune o povară grea pentru Formula Engine.

Și când lucrați cu mai multe tabele, combinația de filtre a funcției CROSSJOIN va fi uriașă. Acest lucru încetinește performanța codului DAX. Astfel, în majoritatea cazurilor, se recomandă utilizarea funcției CALCULATETABLE.

Deci, în loc să efectuați toate calculele în Formula Engine, puteți injecta condiția de filtru în clasa WHERE a codului XMSQL.

Tranziție de context pentru funcții DAX similare

Timpurile serverului

Acest concept este aplicabil și funcției CALCULATE. Să folosim codul DAX de mai jos ca exemplu.

DAX CALCULATETABLE Vs Funcția FILTER

O măsură are automat o funcție CALCULATE în jurul ei.

Când rulați acest cod, veți obține un tabel care arată valoarea totală a vânzărilor pentru fiecare culoare.

DAX CALCULATETABLE Vs Funcția FILTER

În fila Server Timings, puteți vedea că codul execută două interogări. Prima interogare este calcularea sumei sumei vânzărilor din tabelul Vânzări în raport cu tabelul Produse.

DAX CALCULATETABLE Vs Funcția FILTER

Pe de altă parte, a doua interogare preia din nou culoarea produsului din tabelul Produse. Corespunde funcției din codul DAX.

DAX CALCULATETABLE Vs Funcția FILTER

Formula Engine plasează cache-urile de date ale celor două interogări una lângă alta. Începe prin preluarea valorilor din al doilea cache de date și apoi efectuează o căutare în primul cache de date.

Plan de interogare

În fila Plan de interogare, Planul de interogare logic scanează culoarea produsului din cauza argumentului .

Apoi, VertiPaq însumează suma totală a vânzărilor în funcție de culoarea produsului. Efectuează tranziția de context care convertește valoarea culorii produsului într-un context de filtru echivalent.

DAX CALCULATETABLE Vs Funcția FILTER

Filtrul creat de tranziția contextului este tradus într-o proprietate DependOnCols în Planul de interogare. După ce VertiPaq scanează coloanele necesare pentru a calcula vânzările totale, înmulțește cantitatea de vânzări cu prețul net.

Vânzările totale sunt apoi returnate ca rezultat sub forma unui tip de date valutare. Și, în sfârșit, ADDCOLUMNS returnează un tabel cu două coloane care conțin culoarea și valoarea vânzărilor totale.

Concluzie

Planul de interogare poate avea un impact semnificativ asupra performanței unei interogări, deoarece diferitele planuri de interogare pot avea niveluri diferite de eficiență.

Când utilizați funcțiile CALCULATETABLE și FILTER într-o interogare DAX, planul de interogare poate diferi în funcție de scenariul specific și de o varietate de factori, cum ar fi expresia specifică a formulei utilizate și capacitățile motorului de interogare.

În general, este o idee bună să testați și să comparați performanța diferitelor planuri de interogare pentru a determina cea mai eficientă abordare pentru un anumit scenariu.

Toate cele bune,


Ce este Sinele în Python: Exemple din lumea reală

Ce este Sinele în Python: Exemple din lumea reală

Ce este Sinele în Python: Exemple din lumea reală

Cum să salvați și să încărcați un fișier RDS în R

Cum să salvați și să încărcați un fișier RDS în R

Veți învăța cum să salvați și să încărcați obiecte dintr-un fișier .rds în R. Acest blog va trata, de asemenea, cum să importați obiecte din R în LuckyTemplates.

Primele N zile lucrătoare revizuite – O soluție de limbaj de codare DAX

Primele N zile lucrătoare revizuite – O soluție de limbaj de codare DAX

În acest tutorial despre limbajul de codare DAX, aflați cum să utilizați funcția GENERATE și cum să schimbați în mod dinamic titlul unei măsuri.

Prezentați perspective utilizând tehnica vizuală dinamică cu mai multe fire în LuckyTemplates

Prezentați perspective utilizând tehnica vizuală dinamică cu mai multe fire în LuckyTemplates

Acest tutorial va acoperi cum să utilizați tehnica Multi Threaded Dynamic Visuals pentru a crea informații din vizualizările dinamice de date din rapoartele dvs.

Introducere la filtrarea contextului în LuckyTemplates

Introducere la filtrarea contextului în LuckyTemplates

În acest articol, voi trece prin contextul filtrului. Contextul de filtrare este unul dintre subiectele majore despre care orice utilizator LuckyTemplates ar trebui să învețe inițial.

Cele mai bune sfaturi pentru utilizarea aplicațiilor din serviciul online LuckyTemplates

Cele mai bune sfaturi pentru utilizarea aplicațiilor din serviciul online LuckyTemplates

Vreau să arăt cum serviciul online LuckyTemplates Apps poate ajuta la gestionarea diferitelor rapoarte și informații generate din diverse surse.

Analizați modificările marjei de profit ore suplimentare – Analytics cu LuckyTemplates și DAX

Analizați modificările marjei de profit ore suplimentare – Analytics cu LuckyTemplates și DAX

Aflați cum să vă calculați modificările marjei de profit folosind tehnici precum măsurarea ramificării și combinarea formulelor DAX în LuckyTemplates.

Idei de materializare pentru cache-urile de date în DAX Studio

Idei de materializare pentru cache-urile de date în DAX Studio

Acest tutorial va discuta despre ideile de materializare a cache-urilor de date și despre modul în care acestea afectează performanța DAX-ului în furnizarea de rezultate.

Raportare de afaceri folosind LuckyTemplates

Raportare de afaceri folosind LuckyTemplates

Dacă încă utilizați Excel până acum, atunci acesta este cel mai bun moment pentru a începe să utilizați LuckyTemplates pentru nevoile dvs. de raportare a afacerii.

Ce este LuckyTemplates Gateway? Tot ce trebuie să știți

Ce este LuckyTemplates Gateway? Tot ce trebuie să știți

Ce este LuckyTemplates Gateway? Tot ce trebuie să știți