Funkcia CALCULATE DAX: Problémy a riešenia

V dnešnom blogu sa pozrieme na to, prečo by ste nemali používať funkciu DAX na získanie Priemeru na kategóriu a poskytneme niekoľko alternatívnych riešení na dosiahnutie rovnakých výsledkov, aké chcete. Celé video tohto návodu si môžete pozrieť v spodnej časti tohto blogu .

Získanie priemeru na kategóriu v jazyku DAX je zvláštne komplikované. Použitím funkcie CALCULATE na vyriešenie týchto výpočtov môžu noví používatelia jazyka DAX považovať kód DAX za zrozumiteľnejší, než by mal byť. Dobrou správou je, že na tento problém existujú jednoduchšie riešenia. 

Obsah

Prehľad funkcie CALCULATE DAX

Pred niekoľkými mesiacmi som prezentoval na pre LuckyTemplates. Volalo sa to DAX Counterculture, kde som poskytol niekoľko alternatívnych pohľadov na DAX. 

Jeden z hlavných sa týka použitia funkcie CALCULATE. Hovoril som o tom, prečo by ste nemali používať CALCULATE, najmä ak ste novým používateľom jazyka DAX. 

CALCULATE je skutočne komplexná funkcia na pochopenie a použitie. Vytvára určité predpoklady o vašom dátovom modeli a môže vás dostať do mnohých problémov. 

Tiež som sa dokopal k Running Total od Microsoftu, pretože nefunguje v situáciách s jednou tabuľkou a na správne fungovanie potrebuje hviezdicovú schému.

Takže som ukázal jednoduchšiu alternatívu, ktorá funguje, či už ide o hviezdicovú schému alebo model s jednou tabuľkou bez potreby CALCULATE. 

VYPOČÍTAJTE vzorec DAX

Tento blog sa bude zaoberať rýchlym meraním s názvom Priemer na kategóriu . Ak sa nachádzate na pracovnej ploche LuckyTemplates, začnite prechodom na tablu Polia a vytvorením nového rýchleho opatrenia .

Funkcia CALCULATE DAX: Problémy a riešenia

V okne Rýchle meranie, ktoré sa zobrazí, vyberte v rozbaľovacej ponuke Výpočet Priemer na kategóriu . Potom potiahnite ? Hodnota v textovom poli Základná hodnota a Mesiac v poli Kategória .

Funkcia CALCULATE DAX: Problémy a riešenia

Potom kliknite na tlačidlo OK a získate vizuál, ktorý vyzerá takto. 

Funkcia CALCULATE DAX: Problémy a riešenia

Na osi x sú štvrtiny – štvrtina 1, 2, 3 a 4. 

A čo chcete urobiť, je zhrnúť hodnoty za každý mesiac uvedený nižšie a potom použiť priemer týchto hodnôt. V skratke Priemer na kategóriu, ktorý je témou nášho blogu. 

Funkcia CALCULATE DAX: Problémy a riešenia

Náš dátový model je na to veľmi jednoduchý. V samostatných stĺpcoch  máme tabuľku s dátumami , hodnotami , ktoré sa generujú náhodne, a mesiacmi , triedením podľa mesiacov a štvrťrokmi .

Funkcia CALCULATE DAX: Problémy a riešenia

A to isté máme s tabuľkou kalendára, mesiacom, triedením podľa mesiacov a štvrťrokom. To znamená, že si môžeme vybrať štvrťrok alebo mesiac buď z tabuľky dátumov alebo z prvej tabuľky. 

Funkcia CALCULATE DAX: Problémy a riešenia

Dobrou správou s priemerom na kategóriu je, že v skutočnosti funguje bez ohľadu na to, či máte model jednej tabuľky alebo hviezdicovú schému.

V týchto vizuáloch používame štvrť z prvého stola...

Funkcia CALCULATE DAX: Problémy a riešenia

 ...zatiaľ čo tento používa štvrťrok z našej tabuľky dátumov. Funguje to tak či tak. 

Funkcia CALCULATE DAX: Problémy a riešenia

Ale problém s priemerom na kategóriu je jednoducho kód DAX. 

Funkcia CALCULATE DAX: Problémy a riešenia

Tento kód DAX je zvláštny, pretože aj keď ste odborníkom na jazyk DAX, pravdepodobne vás na prvý pohľad zmätie. Je to zvláštne skonštruované pomocou príkazu CALCULATE bez klauzuly filtra a iba zabalí príkaz súčtu. 

V skutočnosti je to jedna z tých mojich mrzutých vecí, keď vidím na fórach ľudí, ktorí používajú CALCULATE, ktorí len bezdôvodne zabalia sumu. Ale v tomto prípade to má vlastne svoj dôvod.

Keď ich vidím, vrtá mi hlavou, pretože je to len okamžitý náznak toho, že nemajú potuchy, čo robia pomocou funkcie VYPOČÍTAŤ. Preto odporúčam radšej sa od toho držať ďalej. 

Kód DAX pre priemer na kategóriu

Kód DAX uvedený vyššie používa . Táto funkcia nie je v segmente CALCULATE, čo je opäť zvláštne. Údajne je táto funkcia vytvorená na použitie v príkazoch CALCULATE na základe dokumentácie.

Kód tiež používa , s čím nesúhlasím. Nikdy by nemali používať VALUES, pretože odlišné hodnoty majú tendenciu vrátiť prázdny riadok, ak existuje riadok, ktorý sa nezhoduje. To vás môže dostať do mnohých problémov, ale to je téma na iné video.

V podstate sa tu deje, že používajú funkciu VALUES na získanie všetkých našich kategórií. Napríklad v 1. štvrťroku je to január, február a marec. VALUES tiež vráti tabuľku, ale používajú príkaz KEEPFILTER, aby bol platný ako prvý parameter v . 

Tiež si ponechávajú funkciu CALCULATE na vykonanie v kontexte KEEPFILTERS. Kvôli spôsobu, akým AVERAGEX funguje, vezme druhý výraz a vykoná ho v kontexte prvého výrazu. 

Aký je teda problém?

Celkovo to funguje dobre, ale nie pre niekoho nového v jazyku DAX. Myslím si, že Microsoftu sa pri vytváraní tohto rýchleho opatrenia skutočne ušlo, pretože rýchle opatrenia sú údajne pre ľudí, ktorí sú v jazyku DAX noví.

Rýchle miery sú skvelý nápad, napríklad: „Napíšme pre vás niekoľko bežných mier s rôznymi výpočtami, pretože ste v jazyku DAX nováčik a neviete všetko, čo by ste o jazyku DAX mali vedieť.“ Ale prečo by ich stavali takým zvláštnym, komplikovaným spôsobom? 

Ako sa má na to niekto nový v DAX pozrieť a zistiť, čo sa deje, keď sa nad tým aj pravdepodobne DAX profesionáli trochu škrabú na hlave? 

Takže pre mňa premeškali jedinečnú príležitosť pomôcť ľuďom naučiť sa DAX svojimi rýchlymi opatreniami tým, že trvali na tom, aby zahrnuli CALCULATE a museli skákať cez obruče, aby tam dostali CALCULATE. 

Jednoduchšie riešenie

Použitie funkcie SUMMARIZE

Ako som už spomenul, existuje lepší a jednoduchší spôsob, ako to urobiť.

Najprv vytvorte premennú tabuľky pomocou VAR_Table . Potom použijeme tabuľku, zhrnieme ju podľa mesiacov, vytvoríme stĺpec Hodnota a zhrnieme naše hodnoty.

Nakoniec vezmeme priemer našich hodnôt pomocou funkcie AVERAGEX

Funkcia CALCULATE DAX: Problémy a riešenia

Tento kód je jednoduchší a oveľa logickejší. Neobsahuje CALCULATE, ktorý aj tak nepotrebujete. 

Môžete naraziť na blogový článok, ktorý kritizuje SUMMARIZE. Blog hovorí, že spôsob, akým SUMMARIZE interne funguje, je dosť komplikovaný.

Tiež naznačuje, že sa môžete dostať do problémov v jednom konkrétnom prípade, ale nikdy sa do nich nedostanete. To by sa stalo iba vtedy, ak by váš výpočet zahŕňal veľmi zložitý výpočet a veľmi veľkú tabuľku. Iba potom vám SUMMARIZE poskytne neisté výsledky. 

Aspoň to tvrdí článok na blogu. A je v poriadku, ak sa chcete vyhnúť SUMMARIZE. V takom prípade použite funkciu.

Používanie funkcie GROUPBY

Nikto nemá problém s používaním funkcie GROUPBY, poďme sa preto naučiť používať aj túto. Opäť vytvorte premennú Table pomocou VAR_Table. Potom zoskupíme mesiac a vytvoríme stĺpec Hodnota.

Ďalej aplikujeme pomocou CURRENTGROUP , ako funguje GROUPBY. Zhrňme si našu hodnotu a znova zvážme AVERAGEX

Náš kód by mal vyzerať takto.

Funkcia CALCULATE DAX: Problémy a riešenia

Porovnanie výsledkov: SUMMARIZE vs GROUPBY vs CALCULATE DAX funkcie

Teraz sa pozrime, či skratky, ktoré sme urobili, vracajú rovnaké výsledky. 

Ako môžete vidieť na obrázkoch nižšie, SUMMARIZE označené ako Lepší priemer na kategóriu a GROUPBY označené ako Lepší priemer na kategóriu 2 vracajú rovnaké čísla. 

Funkcia CALCULATE DAX: Problémy a riešenia

Obidva naše vzorce vrátia 3,4 K pre Q1, 3,6 K pre Q2, 3,4 K pre Q3 a 3,5 K pre Q4. A opäť pracujú v dátovom modeli jednej tabuľky pomocou Quarters pre našu tabuľku.

Fungujú aj v hviezdnej schéme, kde v tabuľke dátumov používame štvrtiny. 

Funkcia CALCULATE DAX: Problémy a riešenia




Záver

Nepotrebujeme sa nútiť do prevrátenej logiky kontextu, len aby sme dostali CALCULATE do našich vzorcov. Stačí použiť jednoduché štandardné funkcie DAX a môžete dosiahnuť rovnaké veci. 

V skutočnosti pravdepodobne v 80 % – 90 % prípadov nie je absolútne žiadny dôvod obťažovať sa používaním CALCULATE na čokoľvek. Namiesto toho môžete použiť funkcie SUMMARIZE a GROUPBY, ktoré sú jednoduchšie a logickejšie.

Ak chcete preskúmať tento súbor PBIX, už som ho zverejnil v Galérii rýchlych opatrení a pomenoval som ho Lepší priemer na kategóriu . Stačí posunúť stránku úplne nadol, aby ste našli súbor PBIX, ktorý si môžete stiahnuť, a môžete sa hrať sami so sebou. 

Všetko najlepšie,

Greg Deckler


Vyhledávací pole PowerApps: Jak přidat a přizpůsobit

Vyhledávací pole PowerApps: Jak přidat a přizpůsobit

Naučte se, jak vytvořit vyhledávací pole PowerApps úplně od začátku a přizpůsobit je tak, aby odpovídalo celkovému tématu vaší aplikace.

Příklad SELECTEDVALUE DAX – Výběr kráječe sklizně

Příklad SELECTEDVALUE DAX – Výběr kráječe sklizně

Sklízejte nebo zachycujte hodnotu uvnitř míry a znovu ji použijte v jiném taktu pro dynamické výpočty pomocí SELECTEDVALUE DAX v LuckyTemplates.

Historie verzí v seznamech SharePoint

Historie verzí v seznamech SharePoint

Zjistěte, jak vám historie verzí na SharePointu může pomoci vidět vývoj určitých dat a kolika změn prošla.

Výběr barevných hexadecimálních kódů pro zprávy LuckyTemplates

Výběr barevných hexadecimálních kódů pro zprávy LuckyTemplates

Zde je nástroj pro vytváření sestav a vizuálů, výběr barevných hexadecimálních kódů, který můžete použít ke snadnému získání barev pro vaše sestavy LuckyTemplates.

Dynamický datový výřez v LuckyTemplates pomocí tabulky období

Dynamický datový výřez v LuckyTemplates pomocí tabulky období

Pomocí tabulky období můžete v přehledu snadno zobrazit časové období jako průřez. Použijte M kód k vytvoření dynamického datového výřezu v LuckyTemplates.

Tabulky proporcí a četností v Excelu

Tabulky proporcí a četností v Excelu

Chtěli jsme se ponořit do tabulek četností v Excelu a také do tabulek proporcí. Podívejte se, co to je a kdy je použít.

Ako nainštalovať DAX Studio & Tabular Editor v LuckyTemplates

Ako nainštalovať DAX Studio & Tabular Editor v LuckyTemplates

Zistite, ako stiahnuť a nainštalovať DAX Studio a Tabular Editor 3 a ako ich nakonfigurovať na použitie v LuckyTemplates a v Exceli.

LuckyTemplates Vizualizácia tvarovej mapy pre priestorovú analýzu

LuckyTemplates Vizualizácia tvarovej mapy pre priestorovú analýzu

Tento blog obsahuje vizualizáciu Shape Map pre priestorovú analýzu v LuckyTemplates. Ukážem vám, ako môžete efektívne využiť túto vizualizáciu s jej funkciami a prvkami.

LuckyTemplates Finančné výkazníctvo: Prideľovanie výsledkov šablónam v každom jednom riadku

LuckyTemplates Finančné výkazníctvo: Prideľovanie výsledkov šablónam v každom jednom riadku

V tomto návode predstavujem jedinečný nápad týkajúci sa finančného výkazníctva, ktorý spočíva v prideľovaní výsledkov na vopred určené šablóny tabuliek v rámci LuckyTemplates.

DAX měří v LuckyTemplates pomocí Measure Branching

DAX měří v LuckyTemplates pomocí Measure Branching

Vytvářejte míry DAX v LuckyTemplates pomocí existujících mír nebo vzorců. Tomu říkám technika větvení opatření.