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í. Učení, jak vytvářet efektivní vzorce DAX, vám pomůžou co nejvíce z dat. 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:
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 tato míra vypočítá a vrátí hodnoty součtem částek prodeje pro všechna ostatní pole, která zahrneme, například buňky Telefon v USA.
Možná si myslíte, že tato míra dělá totéž, jako kdybych do sestavy přidala pole SalesAmount? No, jo. 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 s rostoucími dovednostmi vzorců DAX bude znalost této míry efektivnější vzorce a váš model. 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( Prodej), 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
Stáhněte a otevřete soubor Power BI Desktopu Contoso Sales Sample.
V zobrazení Sestava v seznamu polí klikněte pravým tlačítkem myši na tabulku Sales (Prodej ) a pak vyberte New Measure (Nová míra).
Na řádku vzorců nahraďte míru zadáním nového názvu míry , previous quarter sales.< a1/> (Prodej za předchozí čtvrtletí).
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 označuje jako vnořené funkce. Funkce CALCULATE má aspoň dva argumenty. První je výraz, který se má vyhodnotit, a druhý je filtr.
Za levou závorku ( pro funkci CALCULATE zadejte sumu následovanou jinou levou závorku (.
Dále předáme argument funkci SUMA.
Začněte psát Sal a pak vyberte Sales[SalesAmount], následované pravou závorkou )..
Tento krok vytvoří první argument výrazu pro naši funkci CALCULATE.
Zadejte čárku (,) následovanou mezerou pro zadání prvního filtru a potom zadejte PREVIOUSQUARTER.
Funkci TIME INTELLIGENCE PREVIOUSQUARTER použijete k filtrování výsledků sumy podle předchozího čtvrtletí.
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ář.
Zavřete oba argumenty předané funkci PREVIOUSQUARTER a funkci CALCULATE zadáním dvou pravých závorek )).
Vzorec by teď měl vypadat takto:
Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))
Vyberte značku zaškrtnutí na řádku vzorců nebo stisknutím klávesy Enter ověřte vzorec a přidejte ho do tabulky Sales (Prodej).
Zvládli jste to! Právě jste vytvořili složitou míru pomocí jazyka DAX. Tento vzorec vypočítá celkový prodej za předchozí čtvrtletí v závislosti na filtrech použitých 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. Potom přidejte QuarterOfYear jako další průřez a vyberte 4 a získáme graf podobný tomuto:
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 pro rok a 1 pro QuarterOfYear, nezobrazí se pro předchozí čtvrtletí žádná data, protože ve čtvrtém čtvrtletí roku 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, protože vaše znalost jazyka DAX roste, věnujte jí zvláštní pozornost.
Syntaxe QuickQuiz
Co dělá toto tlačítko na řádku vzorců?
Co vždycky obklopuje název sloupce ve vzorci DAX?
Odpovědi najdete na konci tohoto článku.
Functions
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.
JAZYK DAX obsahuje různé funkce časového měřítka. 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
- Co funkce vždy odkazuje?
- Může vzorec obsahovat více než jednu funkci?
- 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 se nejsnápadněji považuje za 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.
Kontext filtru
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 neexistuje místo kontextu řádku; místo toho platí kromě 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 se v sestavách snadno zobrazí. 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 JAZYK 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 použít také ve vzorci DAX definováním filtru pomocí funkcí, jako jsou ALL, RELATED, FILTER, CALCULATE, by relace a další míry a sloupce. Podívejme se například na následující vzorec v míře s názvem Store Sales:
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ítko (=), 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 Total Sales 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é.
Context QuickQuiz
- Jaké jsou dva typy kontextu?
- Co je kontext filtru?
- 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 prostředků JAZYKA DAX; Nejdůležitější je referenční dokumentace jazyka DAX (Data Analysis Expressions).
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:
- Ověří a zadá míru do modelu.
- Hranaté závorky [].
Functions:
- Tabulka a sloupec
- Ano. Vzorec může obsahovat až 64 vnořených funkcí.
- Textové funkce
Kontext:
- Kontext řádku a kontext filtru
- Jeden nebo více filtrů ve výpočtu, který určuje jednu hodnotu.
- Aktuální řádek.