• 13.10.2017
  • Ing. Jan Zedníček - Data Engineer & Controlling
  • 0

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

Rate this post

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *