DAX CALCULATE funkce – agregace s podmínkami v Power BI

Funkce CALCULATE je důležitým pomocníkem pro velké množství výpočtů pro ty z vás, kteří v Power BI nebo PowerPivot aktivně vzorcují. Pochopení toho, jak funkce funguje a jak se používá, není na první pohled úplně jednoduché. A od toho je tu tento článek.

Syntaxe funkce: CALCULATE( <expression>, <filter 1>, <filter 2>… )

Syntaxe CALCULATE

  • Expression: Prvním parametrem je výraz (expression), což je v drtivé většině případů nějaká agregační DAX funkce typu SUM, MIN, MAX, COUNTROWS nebo její kolegyně X funkce (např. SUMX)
  • Filter 1 – Filter n: Dále zadáváme parametr typu filter. Filtrů můžeme zadat mnoho a aplikovat nějakou AND/OR logiku. Filtr může být zadán více způsoby:
    • Jako jako jednoduchá podmínka typu Produkt = „auto“ …
    • ..nebo jako další funkce, nejčasteji table funkce FILTER, která funguje jako podmínka – omezí hodnoty, které do funkce calculate vstupují

Příklad funkce: Prodeje modrých aut = CALCULATE ( SUM ( Prodeje[Tržby] ), Produkty[BarvaProduktu] = „modrá“ )

Upozornění: Výraz, který vložíme do prvního parametru, musí být vyhodnocen tak, aby výsledek byl vždy pouze 1 hodnota (value).. Výsledkem funkce není tabulka ale hodnota (value), proto používáme nejčastěji agregační funkce.

Funkce CALCULATE na příkladu v Power BI

Pojďme si funkci ukázat na několika případech v prostředí Power BI desktop. Budu pracovat se čtyřimi tabulkami, které obsahují tržby (FactInternetSales), Teritoria (Territories), Měny (DimCurrency) a Kalendář (DimDate) viz model.

Krok 1) Začnu jednoduše, přípravím si jednoduchý power BI report s tabulkou, do které budu postupně přidávat nové sloupce. Prozatím v tabulce nechám zobrazit Tržby po jednotlivých teritoriích:

Krok 2) V dalším sloupci (2), který si zobrazím mě zajímají celkové tržby, které byly realizovány v měně USD. No a poslední sloupec bude poměrem mezi oběma předchozími sloupci a bude říkat jaký je poměr mezi tržbami v USD oproti všem tržbám v %. Konečně přichází na řadu DAX funkce CALCULATE:

Vzorec Tržby zaplacené v USD:

Tržby zaplacené v USD :=
CALCULATE (
    SUM ( FactInternetSales[Tržby celkem] ),
DimCurrency[CurrencyName] = "US Dollar"
)

Vzorec % USD/Tržby celkem:

% USD/Tržby celkem =
CALCULATE (
    SUM ( FactInternetSales[Tržby celkem] ),
    DimCurrency[CurrencyName] = "US Dollar"
)
    / SUM ( FactInternetSales[Tržby celkem] )

Výsledek (viz níže) je fajn a vidíme všechno co potřebujem, celkové prodeje, prodeje v USD a jejich poměr. Výsledek můžeme ještě doplnit nějakým grafem a je hotovo.

DAX CALCULATE

Na závěř ještě připojuju Power BI report. Zvětšit si ho můžete přes tlačítko v pravém dolním rohu

Reagovat na příspěvek