Ce este Sinele în Python: Exemple din lumea reală
Ce este Sinele în Python: Exemple din lumea reală
În blogul de astăzi, vom explora de ce nu ar trebui să utilizați funcția DAX pentru a obține Media pe categorie și vom oferi câteva soluții alternative pentru a obține aceleași rezultate pe care le doriți. Puteți viziona videoclipul complet al acestui tutorial în partea de jos a acestui blog .
Obținerea unei medii pe categorie în DAX este ciudat de complicată. Folosind funcția CALCULATE pentru a rezolva aceste calcule, noii utilizatori DAX pot găsi codul DAX mai greu de înțeles decât ar trebui. Vestea bună este că există soluții mai simple la această problemă.
Cuprins
Prezentare generală a funcției CALCULATE DAX
Acum câteva luni, am prezentat la pentru LuckyTemplates. S-a numit DAX Counterculture unde am oferit câteva opinii alternative despre DAX.
Una dintre cele principale se referă la utilizarea funcției CALCULATE. Am vorbit despre de ce nu ar trebui să folosești CALCULATE, mai ales dacă ești nou la DAX.
CALCULATE este o funcție cu adevărat complexă de înțeles și utilizat. Face anumite presupuneri despre modelul dvs. de date și vă poate pune în multe probleme.
De asemenea, am săpat în măsura rapidă a Microsoft pentru Running Total, deoarece nu funcționează în situații cu un singur tabel și are nevoie de o schemă stea pentru a funcționa corect.
Așadar, am arătat o alternativă mai ușoară care funcționează fie că este o schemă stea sau un model de tabel unic fără a fi nevoie de CALCULATE.
CALCULATE DAX Formula
Acest blog va analiza o măsură rapidă numită Media pe categorie . Dacă vă aflați în desktopul LuckyTemplates, începeți prin a accesa panoul Câmpuri și a crea o măsură rapidă nouă .
În fereastra Măsurare rapidă care va apărea, alegeți Media pe categorie din meniul derulant Calcul . Atunci, trage ? Valoare în câmpul de text Valoare de bază și Lună în câmpul Categorie .
Apoi faceți clic pe OK și veți obține o imagine care arată astfel.
În axa x sunt sferturile - Sferturile 1, 2, 3 și 4.
Și ceea ce doriți să faceți este să însumați valorile pentru fiecare lună prezentate mai jos și apoi să luați media acestor valori. Pe scurt, media pe categorie, care este subiectul blogului nostru.
Modelul nostru de date pentru aceasta este foarte simplu. Avem un tabel cu Date , Valori care sunt generate aleatoriu și Month , MonthSort și Sferturi în coloane separate.
Și avem același lucru în tabelul nostru de date cu Calendar Table, Month, MonthSort și Trier. Aceasta înseamnă că putem alege trimestrul sau luna fie din tabelul de date, fie din primul tabel.
Vestea bună cu Average Per Category este că de fapt funcționează indiferent dacă aveți un singur model de tabel sau o schemă stea.
În aceste imagini, folosim Trimestrul din primul tabel...
… în timp ce acesta folosește Trimestrul din tabelul nostru de date. Funcționează oricum.
Dar problema cu Media pe categorie este pur și simplu codul DAX.
Acest cod DAX este ciudat, pentru că, chiar dacă ești un expert DAX, probabil că te va deruta la prima vedere. Este construit în mod ciudat cu o instrucțiune CALCULATE fără clauză de filtru și doar include o instrucțiune de sumă.
De fapt, este una dintre acele neplăceri ale mele când văd oameni pe forumuri care folosesc CALCULATE care pur și simplu împachetează o sumă fără niciun motiv. Dar, în acest caz, are de fapt un motiv.
Îmi încurcă mintea ori de câte ori le văd pentru că este doar un indiciu imediat că nu au idee ce fac cu funcția CALCULATE. Așa că recomand să stai departe de el.
Cod DAX pentru medie pe categorie
Codul DAX prezentat mai sus folosește . Această funcție nu este într-un segment CALCULATE, ceea ce, din nou, o face ciudată. Se presupune că această funcție este construită pentru a fi utilizată în instrucțiunile CALCULATE pe baza documentației sale.
Codul folosește și , cu care nu sunt de acord. Nu ar trebui să folosească niciodată VALUES deoarece valorile distincte au tendința de a returna un rând necompletat dacă există un rând care nu se potrivește. Asta te poate pune în multe probleme, dar acesta este un subiect pentru alt videoclip.
În esență, ceea ce se întâmplă aici este că folosesc o funcție VALUES pentru a obține toate categoriile noastre. De exemplu, în trimestrul 1, adică ianuarie, februarie și martie. VALUES returnează, de asemenea, un tabel, dar folosesc o instrucțiune KEEPFILTER pentru a-l face valid ca prim parametru în .
De asemenea, păstrează funcția CALCULATE pentru a fi executată în contextul KEEPFILTERS. Din cauza modului în care funcționează AVERAGEX, ia a doua expresie și o execută în contextul primei expresii.
Care este problema, atunci?
În general, funcționează bine, dar nu pentru cineva nou la DAX. Cred că Microsoft a ratat cu adevărat barca când a creat această măsură rapidă, deoarece măsurile rapide se presupune că sunt pentru cei care nu cunosc DAX.
Măsurile rapide sunt o idee grozavă, cum ar fi „Să scriem câteva măsuri comune cu calcule diferite pentru dvs., deoarece sunteți nou în DAX și nu știți tot ce este de știut despre DAX”. Dar de ce le-ar construi în moduri atât de ciudate și complicate?
Cum ar trebui cineva nou la DAX să arunce o privire la asta și să-și dea seama ce se întâmplă când, probabil, chiar și profesioniștii DAX se zgârie puțin peste asta?
Așa că, pentru mine, au ratat o oportunitate de aur de a ajuta oamenii să învețe DAX cu măsurile lor rapide, insistând să includă CALCULATE și trebuind să sară printre cercuri pentru a obține CALCULATE-ul acolo.
Soluția mai ușoară
Utilizarea funcției SUMMARIZE
După cum am menționat mai devreme, există o modalitate mai bună și mai simplă de a face acest lucru.
Mai întâi, creați o variabilă de tabel folosind VAR_Table . Apoi, vom folosi pentru a lua tabelul, a-l rezuma pe lună, a crea o coloană Valoare și a însuma valorile noastre.
În cele din urmă, vom lua media valorilor noastre folosind funcția AVERAGEX .
Acest cod este mai simplu și mult mai logic. Nu include CALCULATE, de care oricum nu ai nevoie.
S-ar putea să dai peste un articol pe blog care critică REZUMAT. Blogul spune că modul în care funcționează SUMMARIZE în interior este destul de complicat.
De asemenea, sugerează că puteți avea probleme într-un anumit caz, dar nu veți întâlni niciodată. Acest lucru s-ar întâmpla numai dacă calculul dvs. implică un calcul foarte complex și un tabel foarte mare. Numai atunci SUMMARIZE vă va oferi rezultate neplăcute.
Cel puțin așa susține articolul de pe blog. Și este în regulă dacă vrei să te ferești de REZUMAT. În acest caz, utilizați în schimb funcția .
Utilizarea funcției GROUPBY
Nimeni nu are o problemă cu utilizarea funcției GROUPBY, așa că hai să învățăm cum să o folosim și pe aceasta. Din nou, creați o variabilă Table folosind VAR_Table. Apoi, GROUPBY Month și creăm o coloană Valoare.
Apoi, aplicăm folosind CURRENTGROUP , care este modul în care funcționează GROUPBY. Să însumăm valoarea noastră și să luăm din nou valoarea AVERAGEX .
Codul nostru ar trebui să arate așa.
Compararea rezultatelor: funcțiile SUMMARIZE vs GROUPBY vs CALCULATE DAX
Acum, să vedem dacă comenzile rapide pe care le-am făcut returnează aceleași rezultate.
După cum puteți vedea în imaginile de mai jos, atât SUMMARIZE etichetate ca Better Average Per Category, cât și GROUPBY etichetate Better Average Per Category 2 returnează aceleași numere.
Ambele formule returnează 3,4K pentru Q1, 3,6K pentru Q2, 3,4K pentru Q3 și 3,5K pentru Q4. Și, din nou, funcționează într-un singur model de date de tabel folosind Quarters pentru tabelul nostru.
De asemenea, funcționează într-o schemă cu stea în care folosim Sferturi în tabelul nostru de date.
Măsuri rapide – Cum să le folosiți în modelele LuckyTemplates
folosind funcția de calcul din interiorul LuckyTemplates
Modalități eficiente de a utiliza funcția GROUPBY în LuckyTemplates
Concluzie
Nu trebuie să ne forțăm într-o logică de context întortocheată doar pentru a introduce CALCULATE în formulele noastre. Folosiți doar funcții DAX standard simple și puteți realiza aceleași lucruri.
De fapt, probabil, în 80% – 90% din cazuri, nu există absolut niciun motiv să te deranjezi să folosești CALCULATE pentru orice. În schimb, puteți utiliza funcțiile SUMMARIZE și GROUPBY, care sunt mai simple și mai logice.
Dacă doriți să explorați acest fișier PBIX, l-am publicat deja în Galeria de măsuri rapide și am numit fișierul Better Average Per Category . Doar derulați până la capăt în pagină pentru a găsi fișierul PBIX pe care îl puteți descărca și vă jucați singur.
Toate cele bune,
Greg Deckler
Ce este Sinele în Python: Exemple din lumea reală
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.
Î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.
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.
Î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.
Vreau să arăt cum serviciul online LuckyTemplates Apps poate ajuta la gestionarea diferitelor rapoarte și informații generate din diverse surse.
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.
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.
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