Sdílet prostřednictvím


Seznámení se základy jazyka DAX v Power BI Desktopu

Uživatelé, kteří s Power BI Desktopem ještě nejsou, můžou tento článek používat jako rychlý a snadný úvod k řešení mnoha základních výpočtů a problémů analýzy dat pomocí jazyka DAX (Data Analysis Expressions). Probereme některé koncepční informace, řadu úkolů, které můžete dokončit, a prověrka znalostí, která vám umožní otestovat, co jste se naučili. Po dokončení tohoto článku byste měli mít dobrý přehled o nejdůležitějších konceptech jazyka DAX.

Co je DAX?

DAX je kolekce funkcí, operátorů a konstant, které lze použít ve vzorci nebo výrazu k výpočtu a vrácení jedné nebo více hodnot. DAX vám pomůže vytvořit nové informace z dat, která už jsou v modelu.

Proč je DAX tak důležitý?

Je snadné vytvořit nový soubor Power BI Desktopu a importovat do něj nějaká data. Můžete dokonce vytvářet sestavy, které zobrazují cenné přehledy bez použití jakýchkoli vzorců DAX. Co když ale potřebujete analyzovat procento růstu napříč kategoriemi produktů a pro různé rozsahy kalendářních dat? Nebo potřebujete vypočítat meziroční růst v porovnání s tržními trendy? Vzorce DAX poskytují tuto funkci a mnoho dalších důležitých funkcí. Když se naučíte vytvářet efektivní vzorce DAX, získáte z dat maximum. Když získáte potřebné informace, můžete začít řešit skutečné obchodní problémy, které ovlivňují váš dolní řádek.

Požadavky

Možná už znáte vytváření vzorců v Microsoft Excelu a tyto znalosti budou užitečné při pochopení jazyka DAX. I když ale nemáte zkušenosti se vzorci Excelu, pomůžou vám koncepty popsané tady hned začít vytvářet vzorce DAX a řešit reálné problémy BI.

Zaměříme se na pochopení vzorců DAX používaných při výpočtech, konkrétněji v mírách a počítaných sloupcích. Měli byste už být obeznámeni s importem dat a přidáváním polí do sestavy pomocí Power BI Desktopu. Měli byste také znát základní koncepty měr a počítaných sloupců.

Ukázkový sešit

Nejlepším způsobem, jak se naučit jazyk DAX, je vytvořit některé základní vzorce, použít je se skutečnými daty a podívat se na výsledky sami. Tady uvedené příklady a úkoly používají soubor Contoso Sales Sample pro Power BI Desktop. Tento ukázkový soubor je stejný jako v kurzu: Vytvoření vlastních měr v článku o Power BI Desktopu .

Začněme

Pojďme porozumět jazyku DAX třemi základními koncepty: syntaxi, funkcemi a kontextem. V jazyce DAX existují další důležité koncepty, ale pochopení těchto tří konceptů vám poskytne nejlepší základ, na kterém můžete rozvíjet své dovednosti v jazyce DAX.

Syntaxe

Než začnete vytvářet vlastní vzorce, podívejme se na syntaxi vzorce DAX. Syntaxe zahrnuje různé prvky, které tvoří vzorec, nebo jednodušeji, jak je vzorec napsaný. Tady je například jednoduchý vzorec DAX pro míru:

Snímek obrazovky vzorce DAX s ukazateli na jednotlivé prvky syntaxe

Tento vzorec obsahuje následující prvky syntaxe:

A. Název míry , Celkový prodej.

B. Operátor rovnítko (=), který označuje začátek vzorce. Při výpočtu vrátí výsledek.

C. Funkce DAX SUMA, která sečte všechna čísla ve sloupci Sales[SalesAmount]. Další informace o funkcích se dozvíte později.

D. Závorky (), které obklopují výraz, který obsahuje jeden nebo více argumentů Většina funkcí vyžaduje alespoň jeden argument. Argument předá funkci hodnotu.

E. Odkazovaná tabulka Sales.

F. Odkazovaný sloupec [SalesAmount] v tabulce Sales S tímto argumentem funkce SUMA ví, pro který sloupec se má agregovat suma.

Při pokusu o pochopení vzorce DAX je často užitečné rozdělit jednotlivé prvky do jazyka, který si myslíte a mluvíte každý den. Tento vzorec si můžete například přečíst takto:

Pro míru s názvem Total Sales vypočítejte (=) součet hodnot ve sloupci [SalesAmount] v tabulce Prodej.

Při přidání do sestavy toto měřítko vypočítá a vrátí hodnoty součtem prodejních částek za všechna ostatní pole, která zahrneme, například mobilní telefony v USA.

Možná si myslíte: "Nedělá toto opatření přesně to stejné, jako kdybych do sestavy přidal pole SalesAmount?" No ano. Existuje ale dobrý důvod k vytvoření vlastní míry, která sečte hodnoty z pole SalesAmount: Můžeme ji použít jako argument v jiných vzorcích. Toto řešení se teď může zdát trochu matoucí, ale jak se zlepší vaše dovednosti ve vzorcích DAX, znalost tohoto měření učiní vaše vzorce a váš model efektivnější. Ve skutečnosti se míra Total Sales později zobrazí jako argument v jiných vzorcích.

Pojďme si projít několik dalších věcí o tomto vzorci. Konkrétně jsme zavedli funkci SUMA. Funkce jsou předem napsané vzorce, které usnadňují složité výpočty a manipulaci s čísly, daty, časem, textem a dalšími funkcemi. Další informace o funkcích se dozvíte později.

Uvidíte také, že před názvem sloupce [SalesAmount] byla tabulka Sales, do které sloupec patří. Tento název se označuje jako plně kvalifikovaný název sloupce, který obsahuje název sloupce před názvem tabulky. Sloupce odkazované ve stejné tabulce nevyžadují zahrnutí názvu tabulky do vzorce, což může usnadnit čtení dlouhých vzorců, které odkazují na mnoho sloupců. Je ale vhodné zahrnout název tabulky do vzorců měr, i když je ve stejné tabulce.

Poznámka:

Pokud název tabulky obsahuje mezery, vyhrazená klíčová slova nebo nepovolené znaky, musíte název tabulky uzavřít do jednoduchých uvozovek. Názvy tabulek budete také muset uzavřít do uvozovek, pokud název obsahuje jakékoli znaky mimo oblast alfanumerických znaků ANSI bez ohledu na to, jestli vaše národní prostředí podporuje znakovou sadu nebo ne.

Je důležité, aby vzorce měly správnou syntaxi. Ve většině případů, pokud syntaxe není správná, vrátí se chyba syntaxe. V jiných případech může být syntaxe správná, ale vrácené hodnoty nemusí být to, co očekáváte. Editor DAX v Power BI Desktopu obsahuje funkci návrhů, která slouží k vytváření syntakticky správných vzorců tím, že vám pomůže vybrat správné prvky.

Pojďme vytvořit ukázkový vzorec. Tento úkol vám pomůže lépe porozumět syntaxi vzorce a tomu, jak vám může pomoct funkce návrhů v řádku vzorců.

Úkol: Vytvoření vzorce míry

  1. Stáhněte a otevřete soubor Power BI Desktopu Contoso Sales Sample.

  2. V zobrazení Sestava v seznamu polí klikněte pravým tlačítkem myši na tabulku Sales (Prodej) a pak vyberte Nová míra (New Measure).

  3. Na řádku vzorců nahraďte Measure zadáním nového názvu míry Prodej za předchozí čtvrtletí.

  4. Za znaménko rovná se zadejte několik prvních písmen CAL a poklikejte na funkci, kterou chcete použít. V tomto vzorci chcete použít funkci CALCULATE .

    Pomocí funkce CALCULATE vyfiltrujete částky, které chceme sečíst podle argumentu, který předáme do funkce CALCULATE. Tento typ funkce se nazývá vnořené funkce. Funkce CALCULATE má aspoň dva argumenty. První je výraz, který se má vyhodnotit, a druhý je filtr.

  5. Za levou závorku ( pro funkci CALCULATE zadejte sumu následovanou jinou levou závorku (.

    Dále předáme argument funkci SUMA.

  6. Začněte psát Sal, poté vyberte Sales[SalesAmount] a nakonec přidejte pravou závorku ).

    Tento krok vytvoří první argument výrazu pro naši funkci CALCULATE.

  7. Zadejte čárku (,) následovanou mezerou pro zadání prvního filtru a potom zadejte PREVIOUSQUARTER.

    Funkci PREVIOUSQUARTER z časové inteligence použijete k filtrování součtu výsledků podle předchozího čtvrtletí.

  8. Za levou závorku ( pro funkci PREVIOUSQUARTER zadejte Calendar[DateKey].

    Funkce PREVIOUSQUARTER má jeden argument, sloupec obsahující souvislý rozsah kalendářních dat. V našem případě je to sloupec DateKey v tabulce Kalendář.

  9. Zavřete argumenty předané funkcím PREVIOUSQUARTER a CALCULATE tak, že napíšete dvě zavírací závorky )).

    Vzorec by teď měl vypadat takto:

    Prodej za předchozí čtvrtletí = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  10. Vyberte ikonu zaškrtnutí na řádku vzorců nebo stisknutím klávesy Enter ověřte vzorec a přidejte ho do tabulky Sales.

Zvládli jste to! Právě jste vytvořili složité měření s využitím DAX. Tento vzorec vypočítá celkový prodej za předchozí čtvrtletí v závislosti na použitých filtrech v sestavě. Můžeme například vložit salesAmount a novou míru Prodeje za předchozí čtvrtletí z tabulky Sales do skupinového sloupcového grafu. Potom v tabulce Kalendář přidejte rok jako průřez a vyberte 2011. Poté přidejte QuarterOfYear jako další filtr, vyberte 4, a získáme graf podobný tomuto:

Graf prodeje z předchozího čtvrtletí a částky prodeje

Nezapomeňte, že ukázkový model obsahuje pouze malé množství prodejních dat od 1. 1. 2011 do 19. 19. 2013. Pokud vyberete rok nebo čtvrtletí, ve kterém se salesAmount nedá sečíst, nebo vaše nová míra nemůže vypočítat prodejní data pro aktuální nebo předchozí čtvrtletí, nezobrazí se žádná data pro dané období. Pokud například vyberete rok 2011 a 1 pro čtvrtletí roku, žádná data pro předchozí čtvrtletí se nezobrazí, protože za čtvrté čtvrtletí 2010 nejsou žádná data.

Seznámili jste se s několika důležitými aspekty vzorců DAX:

  • Tento vzorec obsahoval dvě funkce. FUNKCE PREVIOUSQUARTER, funkce časového měřítka, je vnořená jako argument předaný funkci CALCULATE, funkce filtru.

    Vzorce DAX můžou obsahovat až 64 vnořených funkcí. Je nepravděpodobné, že by vzorec obsahoval tolik vnořených funkcí. Ve skutečnosti by takový vzorec byl obtížné vytvořit a ladit, a pravděpodobně by ani nebyl rychlý.

  • V tomto vzorci jste také použili filtry. Filtry zpřesní, co se bude počítat. V tomto případě jste jako argument vybrali jeden filtr, což je ve skutečnosti výsledek jiné funkce. Další informace o filtrech se dozvíte později.

  • Použili jste funkci CALCULATE. Tato funkce je jednou z nejvýkonnějších funkcí v jazyce DAX. Při vytváření modelů a vytváření složitějších vzorců budete pravděpodobně tuto funkci používat mnohokrát. I když je další diskuze o funkci CALCULATE mimo rozsah tohoto článku, věnujte jí zvláštní pozornost, jak porostou vaše znalosti jazyka DAX.

Syntax QuickQuiz

  1. K čemu slouží toto tlačítko na řádku vzorců?

    Výběr tlačítka

  2. Co vždycky obklopuje název sloupce ve vzorci DAX?

Odpovědi najdete na konci tohoto článku.

Funkce

Funkce jsou předdefinované vzorce, které provádějí výpočty pomocí konkrétních hodnot označovaných jako argumenty v určitém pořadí nebo struktuře. Argumenty můžou být jiné funkce, jiný vzorec, výraz, odkazy na sloupce, čísla, text, logické hodnoty, například PRAVDA nebo NEPRAVDA nebo konstanty.

Jazyk DAX obsahuje následující kategorie funkcí: Datum a čas, Časové měřítko, Informace, Logické, Matematické, Statistické, Text, Nadřazený/Podřízený a Další funkce. Pokud znáte funkce ve vzorcích Excelu, bude se mnoho funkcí v jazyce DAX zobrazovat podobně jako vy. Funkce jazyka DAX jsou však jedinečné následujícími způsoby:

  • Funkce DAX vždy odkazuje na úplný sloupec nebo tabulku. Pokud chcete použít jenom konkrétní hodnoty z tabulky nebo sloupce, můžete do vzorce přidat filtry.

  • Pokud potřebujete přizpůsobit výpočty na základě řádku po řádcích, jazyk DAX poskytuje funkce, které umožňují použít aktuální hodnotu řádku nebo související hodnotu jako druh argumentu k provádění výpočtů na základě kontextu. Další informace o kontextu se dozvíte později.

  • JAZYK DAX obsahuje mnoho funkcí, které vracejí tabulku místo hodnoty. Tabulka se nezobrazuje, ale slouží k zadání vstupu do jiných funkcí. Můžete například načíst tabulku a pak spočítat jedinečné hodnoty v ní nebo vypočítat dynamické součty ve filtrovaných tabulkách nebo sloupcích.

  • DAX obsahuje různé funkce časové inteligence. Tyto funkce umožňují definovat nebo vybrat rozsahy kalendářních dat a provádět na jejich základě dynamické výpočty. Můžete například porovnat součty napříč paralelními obdobími.

  • Excel má oblíbenou funkci SVYHLEDAT. Funkce JAZYKA DAX nepřebírají buňku ani oblast buněk jako odkaz, jako je funkce SVYHLEDAT v Excelu. Funkce jazyka DAX přebírají sloupec nebo tabulku jako odkaz. Mějte na paměti, že v Power BI Desktopu pracujete s relačním datovým modelem. Vyhledávání hodnot v jiné tabulce je jednoduché a ve většině případů nemusíte vytvářet vůbec žádné vzorce.

    Jak vidíte, funkce v jazyce DAX vám můžou pomoct vytvářet výkonné vzorce. Dotkli jsme se jen základů funkcí. S růstem dovedností jazyka DAX vytvoříte vzorce pomocí mnoha různých funkcí. Jedním z nejlepších míst, kde se dozvíte podrobnosti o jednotlivých funkcích JAZYKA DAX, najdete v referenčních informacích k funkcím JAZYKA DAX.

Funkce QuickQuiz

  1. Co funkce vždy odkazuje?
  2. Může vzorec obsahovat více než jednu funkci?
  3. Jakou kategorii funkcí byste použili ke zřetězení dvou textových řetězců do jednoho řetězce?

Odpovědi najdete na konci tohoto článku.

Kontext

Kontext je jedním z nejdůležitějších konceptů jazyka DAX, které je potřeba pochopit. V jazyce DAX existují dva typy kontextu: kontext řádku a kontext filtru. Nejprve se podíváme na kontext řádku.

Kontext řádku

Kontext řádku je nejjednodušší chápat jako aktuální řádek. Použije se vždy, když má vzorec funkci, která použije filtry k identifikaci jednoho řádku v tabulce. Funkce ze své podstaty použije kontext řádku pro každý řádek tabulky, nad kterou filtruje. Tento typ kontextu řádku se nejčastěji vztahuje na míry.

Filtr kontextu

Kontext filtru je trochu obtížnější pochopit než kontext řádku. Kontext filtru si můžete snadno představit jako: Jeden nebo více filtrů použitých ve výpočtu, který určuje výsledek nebo hodnotu.

Kontext filtru nenahrazuje kontext řádku; platí nad rámec kontextu řádku. Pokud chcete například dále zúžit hodnoty, které se mají zahrnout do výpočtu, můžete použít kontext filtru, který nejen určuje kontext řádku, ale také konkrétní hodnotu (filtr) v daném kontextu řádku.

Kontext filtru je ve vašich sestavách snadno viditelný. Když například přidáte totalCost do vizualizace a pak přidáte Rok a oblast, definujete kontext filtru, který vybere podmnožinu dat na základě daného roku a oblasti.

Proč je kontext filtru pro DAX tak důležitý? Viděli jste, že kontext filtru můžete použít přidáním polí do vizualizace. Kontext filtru lze také použít ve vzorci DAX tím, že definujete filtr pomocí funkcí, jako jsou ALL, RELATED, FILTER, CALCULATE, podle relací a dalších mír a sloupců. Podívejme se například na následující vzorec v míře s názvem Store Sales:

Ukazatel prodeje obchodu

Abychom lépe porozuměli tomuto vzorci, můžeme ho rozdělit podobně jako u jiných vzorců.

Tento vzorec obsahuje následující prvky syntaxe:

A. Název míry , Store Sales.

B. Operátor rovnítka (=), který označuje začátek vzorce.

C. Funkce CALCULATE , která vyhodnotí výraz jako argument v kontextu, který je upraven zadanými filtry.

D. Závorky (), které obklopují výraz obsahující jeden nebo více argumentů.

E. Míra [Total Sales] ve stejné tabulce jako výraz. Míra celkových prodejů má vzorec: =SUMA(Sales[SalesAmount]).

F. Čárka (,), která odděluje první argument výrazu od argumentu filtru.

G. Plně kvalifikovaný odkazovaný sloupec Channel[ChannelName]. Toto je náš kontext řádku. Každý řádek v tomto sloupci určuje kanál, například Store nebo Online.

H. Konkrétní hodnota, Store, jako filtr. Toto je náš kontext filtru.

Tento vzorec zajišťuje, že se pro řádky ve sloupci Channel[ChannelName] vypočítají jenom hodnoty prodeje definované mírou Total Sales (Celkový prodej) s hodnotou Store použitou jako filtr.

Jak si můžete představit, schopnost definovat kontext filtru ve vzorci má obrovské a výkonné funkce. Možnost odkazovat pouze na konkrétní hodnotu v související tabulce je jen jedním z takových příkladů. Nemějte obavy, pokud kontext hned nerozumíte. Při vytváření vlastních vzorců lépe porozumíte kontextu a tomu, proč je v jazyce DAX tak důležité.

Kontext Rychlý kvíz

  1. Jaké jsou dva typy kontextu?
  2. Co je kontext filtru?
  3. Co je kontext řádku?

Odpovědi najdete na konci tohoto článku.

Shrnutí

Teď, když máte základní znalosti o nejdůležitějších konceptech v jazyce DAX, můžete začít vytvářet vzorce DAX pro míry sami. DAX může být skutečně trochu složitější naučit se, ale existuje mnoho zdrojů, které máte k dispozici. Po přečtení tohoto článku a experimentování s několika vlastními vzorci si můžete přečíst další informace o dalších konceptech a vzorcích DAX, které vám pomůžou vyřešit vaše vlastní obchodní problémy. K dispozici je mnoho zdrojů DAX; nejdůležitější je referenční dokumentace DAX (Výrazy pro analýzu dat).

Vzhledem k tomu, že jazyk DAX už několik let běží v jiných nástrojích Microsoft BI, jako jsou tabulkové modely Power Pivotu a Analysis Services, existuje mnoho skvělých zdrojů informací. Další informace najdete v knihách, dokumentech white paper a blogech od Microsoftu i předních odborníků na BI. Centrum zdrojů DAX je také skvělým místem, kde začít.

Odpovědi quickQuiz

Syntaxe:

  1. Ověří a zadá míru do modelu.
  2. Hranaté závorky [].

Funkce:

  1. Tabulka a sloupec
  2. Ano. Vzorec může obsahovat až 64 vnořených funkcí.
  3. Textové funkce

Kontext:

  1. Kontext řádku a kontext filtru
  2. Jeden nebo více filtrů ve výpočtu, který určuje jednu hodnotu.
  3. Aktuální řádek.