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

Leave a Comment

Extrahovanie motívov a obrázkov LuckyTemplates z PBIX

Extrahovanie motívov a obrázkov LuckyTemplates z PBIX

Naučte se, jak rozebrat soubor PBIX a extrahovat motivy a obrázky LuckyTemplates z pozadí pro váš report!

Prehľad a vytvorenie domovskej stránky SharePointu

Prehľad a vytvorenie domovskej stránky SharePointu

Naučte sa, ako vytvoriť domovskú stránku SharePointu, ktorá sa predvolene načítava, keď používatelia zadajú adresu vašej webovej lokality.

Vytvoření tabulky data v LuckyTemplates

Vytvoření tabulky data v LuckyTemplates

Zjistěte, proč je důležité mít vyhrazenou tabulku s daty v LuckyTemplates, a naučte se nejrychlejší a nejefektivnější způsob, jak toho dosáhnout.

LuckyTemplates Mobile Reporting Tipy a techniky

LuckyTemplates Mobile Reporting Tipy a techniky

Tento stručný návod zdůrazňuje funkci mobilního hlášení LuckyTemplates. Ukážu vám, jak můžete efektivně vytvářet přehledy pro mobily.

Profesionální servisní analytické zprávy v LuckyTemplates

Profesionální servisní analytické zprávy v LuckyTemplates

V této ukázce LuckyTemplates si projdeme sestavy ukazující profesionální analýzy služeb od firmy, která má více smluv a zákaznických vztahů.

Aktualizácie Microsoft Power Platform | Microsoft Ignite 2021

Aktualizácie Microsoft Power Platform | Microsoft Ignite 2021

Pozrite si kľúčové aktualizácie pre Power Apps a Power Automate a ich výhody a dôsledky pre platformu Microsoft Power Platform.

Bežné funkcie SQL: Prehľad

Bežné funkcie SQL: Prehľad

Objavte niektoré bežné funkcie SQL, ktoré môžeme použiť, ako napríklad reťazec, dátum a niektoré pokročilé funkcie na spracovanie alebo manipuláciu s údajmi.

Vytvoření šablony LuckyTemplates: Průvodce a tipy

Vytvoření šablony LuckyTemplates: Průvodce a tipy

V tomto tutoriálu se naučíte, jak vytvořit dokonalou šablonu LuckyTemplates, která je nakonfigurována podle vašich potřeb a preferencí.

Parametry pole a malé násobky v LuckyTemplates

Parametry pole a malé násobky v LuckyTemplates

V tomto blogu si ukážeme, jak vrstvit parametry pole s malými násobky, abychom vytvořili neuvěřitelně užitečné přehledy a vizuály.

LuckyTemplates Rank a vlastní seskupení

LuckyTemplates Rank a vlastní seskupení

V tomto blogu se dozvíte, jak používat funkce hodnocení LuckyTemplates a vlastní seskupování k segmentaci ukázkových dat a jejich seřazení podle kritérií.