Iteratori și tranziții de context în interogările DAX

Acest tutorial va discuta tranziția contextului și iteratorii imbricați. Veți afla importanța acestor entități și cum pot fi o sursă bună de optimizare.

Dacă vă amintiți, tranziția de context are loc atunci când un context de rând se schimbă într-un context de filtru echivalent. Trebuie să fiți conștienți de ceea ce se întâmplă atunci când are loc o tranziție de context în iteratoarele dvs., deoarece poate genera adesea rezultate lente.

Cuprins

Iteratoare imbricate versus CALCULATE

Dacă o tranziție de context este invocată în timpul unei iterații, este creat un tabel de materializare. Aceasta înseamnă că tranziția contextului este invocată prin formulele din DAX. Tabelul este o dată necomprimată care este trimisă la motorul de formule.

Pentru a demonstra, prima măsură este pentru vânzări mari care primește prețul curent dacă este mai mare sau egal cu 500.

Iteratori și tranziții de context în interogările DAX

Următoarea măsură este pentru media vânzărilor mari cu iteratoare imbricate.

Iteratori și tranziții de context în interogările DAX

Ultima măsură obține media vânzărilor mari fără un iterator imbricat și un CallBackDataID.

Iteratori și tranziții de context în interogările DAX

Rulați măsura cu iteratorul imbricat. Asigurați-vă că ștergeți memoria cache înainte de a rula, apoi activați Timingurile serverului și Planul de interogare.

Iteratori și tranziții de context în interogările DAX

Puteți vedea că a generat 3 scanări, 2 CallBackDataID-uri și 15.003 rânduri. Acesta este un motiv de îngrijorare, deoarece există doar 101 de rânduri pentru ieșire. Acest lucru s-a întâmplat deoarece măsura are doi iteratoare sau funcții X.

Aceasta este forma complet extinsă a măsurii care a fost rulată:

Iteratori și tranziții de context în interogările DAX

Repetează tabelul Fact Sales cu . Apoi reiterează din nou cu CallBackDataID folosind . Formatul scurtat al acestei măsuri are o funcție implicită care invocă tranziția contextului și materializează tabelul. De aceea a extras 15.003 de rânduri, chiar dacă există doar 101 de rânduri pentru ieșire.

Rulați cealaltă măsură care nu are iteratoare imbricate. Încă repetă tabelul Vânzări reale folosind AVERAGEX , dar prețul curent este în afara funcției. Filtrează produsele pentru care prețul actual este mai mare sau egal cu 500 și apoi calculează pentru medie.

Iteratori și tranziții de context în interogările DAX

Puteți vedea că are doar 2 scanări, 104 rânduri și nu are un CallBackDataID. Deci, dacă utilizați CALCULATE , puteți scăpa de iteratoarele imbricate și de CallBackDataIDs .


Funcții DAX în LuckyTemplates: Utilizarea iteratoarelor
Cum să utilizați o funcție de iterare în
Calcul LuckyTemplates DAX – Filtrați tranzițiile contextului

Concluzie

Există multe cauze pentru un DAX cu performanță lentă. Una dintre ele se datorează iteratoarelor imbricate care provoacă tranziții inutile de context. Aceste iteratoare materializează mai multe rânduri decât este necesar, ceea ce face ca interogările dvs. să încetinească.

Cea mai bună soluție pentru aceasta este să o plasați în interiorul CALCULATE . Acest lucru creează mai puțină muncă pentru motorul de formulă și maximizează capacitățile motorului de stocare.

Leave a Comment

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