Funkce DAX CALCULATEBLE vs FILTER

Obaajsou výkonné nástroje pro manipulaci a analýzu dat v dotazu DAX, ale mají některé klíčové rozdíly, kterým je důležité porozumět.

V tomto blogu si projdeme funkci CALCULATETABLE a její , a pochopíme, jak se liší od funkce FILTER . Na konci budete lépe rozumět tomu, jak vybrat správnou funkci pro vaše potřeby analýzy dat.

K demonstraci použijeme níže uvedený kód DAX.

Funkce DAX CALCULATEBLE vs FILTER

Když spustíte tento kód, získáte tabulku se značkou a barvou.

Funkce DAX CALCULATEBLE vs FILTER

Na kartě Plány dotazů získáte kód odpovídající operátoru CrossApply v souboru .

Funkce DAX CALCULATEBLE vs FILTER

Zároveň můžete vidět, že kód načítá pouze barvu a značku produktu na kartě Časování serveru .

Funkce DAX CALCULATEBLE vs FILTER

Obsah

Výsledek časování serveru DAX Studio pro CALCULATETABLE

Jako příklad uveďme filtrování barvy produktu tak, aby zobrazovala pouze červenou a/nebo černou.

Můžete tak učinit pomocí funkce FILTER. Když jej spustíte, časování serveru ukáže, že argument FILTER není aplikován na .

Funkce DAX CALCULATEBLE vs FILTER

Pokud však použijete funkci CALCULATETABLE, dotaz na kartě Časování serveru ukáže, že výsledky byly filtrovány podle barvy produktu.

Funkce DAX CALCULATEBLE vs FILTER

CALCULATETABLE Plán dotazů v DAX Studio

Podívejme se na plán dotazů pro každou funkci.

CALCULATETABLE je na prvním řádku plánu logického dotazu, protože je to funkce nejvyšší úrovně v kódu, a proto nezávisí na žádných požadavcích.

Funkce DAX CALCULATEBLE vs FILTER

Když čtete plán dotazů funkce CALCULATETABLE, nezačínáte prvním argumentem. Nejprve musíte pochopit kontext použitého filtru. Pojďme tedy na řádek 5.

Můžete vidět, že operátor vyžaduje sloupec barvy produktu kvůli použitému filtru. Poté prohledá tento sloupec a pomocí kombinace filtru Not IsEmpty zkontroluje barvu produktu proti každému řádku.

Po přípravě kontextu filtru se argument provede.

Při zpětném pohledu, pokud použijete funkci FILTER, uvidíte jiný plán dotazů, takže argument CROSSJOIN se provede před identifikací kontextu filtru.

Funkce DAX CALCULATEBLE vs FILTER

Nevýhodou tohoto přístupu je, že nepřenáší podmínku filtru na Storage Engine. Nebudete moci použít klauzuli WHERE v xmSQL, což bude klást velkou zátěž na Formula Engine.

A když pracujete s více tabulkami, kombinace filtrů funkce CROSSJOIN bude obrovská. To zpomaluje výkon kódu DAX. Proto se ve většině případů doporučuje použít funkci CALCULATETABLE.

Takže místo provádění všech výpočtů ve Formula Engine můžete podmínku filtru vložit do třídy WHERE kódu XMSQL.

Přechod kontextu pro podobné funkce DAX

Časování serveru

Tento koncept je také použitelný pro funkci CALCULATE. Použijme níže uvedený kód DAX jako příklad.

Funkce DAX CALCULATEBLE vs FILTER

Míra má kolem sebe automaticky funkci CALCULATE.

Když spustíte tento kód, získáte tabulku zobrazující celkovou částku prodeje pro každou barvu.

Funkce DAX CALCULATEBLE vs FILTER

Na kartě Časování serveru můžete vidět, že kód provádí dva dotazy. První dotaz vypočítává součet částky prodeje z tabulky Prodej s ohledem na tabulku Produkty.

Funkce DAX CALCULATEBLE vs FILTER

Na druhou stranu druhý dotaz znovu načte barvu produktu z tabulky Produkty. Odpovídá funkci v kódu DAX.

Funkce DAX CALCULATEBLE vs FILTER

Formula Engine umístí datové mezipaměti dvou dotazů vedle sebe. Začíná načtením hodnot z druhé mezipaměti dat a poté provede vyhledávání v první mezipaměti dat.

Plán dotazů

Na kartě Plán dotazů Logický plán dotazů naskenuje barvu produktu kvůli argumentu.

Poté VertiPaq sečte celkovou částku prodeje v závislosti na barvě produktu. Provádí kontextový přechod, který převádí hodnotu barvy produktu na ekvivalentní kontext filtru.

Funkce DAX CALCULATEBLE vs FILTER

Filtr vytvořený kontextovým přechodem je přeložen do vlastnosti DependOnCols v plánu dotazů. Poté, co VertiPaq naskenuje sloupce potřebné k výpočtu celkových prodejů, vynásobí množství prodeje čistou cenou.

Celkové prodeje jsou pak vráceny jako výsledek ve formě datového typu měny. A nakonec ADDCOLUMNS vrátí tabulku se dvěma sloupci obsahujícími barvu a částku celkového prodeje.

Závěr

Plán dotazů může mít významný dopad na výkon dotazu, protože různé plány dotazů mohou mít různé úrovně efektivity.

Při použití funkcí CALCULATETABLE a FILTER v dotazu DAX se plán dotazů může lišit v závislosti na konkrétním scénáři a různých faktorech, jako je například konkrétní použitý výraz vzorce a možnosti dotazovacího stroje.

Obecně je dobré otestovat a porovnat výkon různých plánů dotazů, abyste určili nejúčinnější přístup pro daný scénář.

Vše nejlepší,


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í.

Zobrazení kumulativního součtu pouze do určitého data v LuckyTemplates

Zobrazení kumulativního součtu pouze do určitého data v LuckyTemplates

V tomto tutoriálu se budu zabývat konkrétní technikou, jak zobrazit kumulativní součet pouze do určitého data ve vašich vizuálech v LuckyTemplates.

Bullet Charts: Pokročilé vlastní vizuální prvky pro LuckyTemplates

Bullet Charts: Pokročilé vlastní vizuální prvky pro LuckyTemplates

Naučte se vytvářet a přizpůsobovat Bullet grafy v LuckyTemplates, které se používají hlavně pro měření výkonu oproti cílovým nebo předchozím rokům.