Rychlý úvod: Naučte se základy jazyka DAX za 30 minut

Platí pro
Excel pro Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Tento rychlý start je určený pro uživatele, kteří začínají s PowerPivotem v Excelu nebo s projekty tabulkových modelů vytvořenými v nástrojích SQL Server Data Tools. Jeho cílem je poskytnout rychlý a snadný úvod k tomu, jak můžete pomocí jazyka DAX (Data Analysis Expressions) vyřešit celou řadu základních problémů s datovým modelováním a analýzou. Toto téma obsahuje koncepční informace, řadu úkolů, které můžete splnit, a několik kvízů, které testují to, co jste se naučili. Po dokončení tohoto tématu byste měli dobře rozumět nejzákladnějším konceptům jazyka DAX.

Co je DAX?

Jazyk 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. Jazyk DAX vám pomáhá vytvářet nové informace z dat, která již jsou ve vašem modelu.

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

Vytvořit sešit a importovat do něj nějaká data je snadné. Můžete dokonce vytvořit kontingenční tabulky nebo kontingenční grafy, které zobrazují důležité informace, aniž by bylo nutné použít vzorce jazyka DAX. Ale co když potřebujete analyzovat důležité údaje o prodeji v několika kategoriích produktů a pro různá období dat? Nebo potřebujete zkombinovat důležitá data zásob z několika tabulek do různých zdrojů dat? Tuto schopnost spolu s mnoha dalšími důležitými funkcemi poskytují vzorce jazyka DAX. Když se naučíte, jak vytvářet efektivní vzorce jazyka DAX, pomůže vám to data naplno využít. Když získáte potřebné informace, můžete začít řešit skutečné obchodní problémy, které ovlivňují váš konečný výsledek. Takový je Business Intelligence a jazyk DAX vám pomůže se tam dostat.

Požadavky

Pravděpodobně už umíte vytvářet vzorce v Microsoft Excelu. Tyto znalosti budou užitečné pro pochopení jazyka DAX, ale i když nemáte žádné zkušenosti se vzorci aplikace Excel, koncepty popsané v tomto tématu vám pomohou ihned začít vytvářet vzorce jazyka DAX a řešit skutečné problémy BI.

Zaměříme se konkrétně na pochopení vzorců jazyka DAX používaných ve výpočtech. Měli byste už znát základní principy počítaných sloupců a měr (taky známých jako počítaná pole), které jsou popsané v nápovědě k Power Pivotu. Měli byste taky znát autorské prostředí a nástroje Power Pivotu v Excelu.

Ukázkový sešit

Nejlepší způsob, jak se naučit jazyk DAX, je vytvořit několik základních vzorců, použít je na konkrétních datech a sami vidět výsledky. Zde uvedené příklady a úkoly používají ukázkový sešit jazyka DAX Formulas.xlsx společnosti Contoso. Sešit si můžete stáhnout z adresy http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. Po stažení sešitu do počítače ho otevřete a pak otevřete okno Power Pivot.

Pojďme na to!

Jazyk DAX se bude točit kolem tří velmi důležitých základních konceptů: syntaxe, funkcí a kontextu. Jazyk DAX samozřejmě obsahuje další důležité koncepty, ale pochopení těchto tří konceptů vám poskytne nejlepší základ, na kterém můžete své dovednosti v jazyce DAX postavit.

Syntaxe

Než začnete vytvářet vlastní vzorce, podívejme se na syntaxi vzorců jazyka DAX. Syntaxe zahrnuje různé prvky, které tvoří vzorec, nebo jednodušeji způsob zápisu vzorce. Podívejme se například na jednoduchý vzorec jazyka DAX s názvem Margin, který se používá k vytvoření nových dat (hodnot) pro každý řádek počítaného sloupce s názvem Margin, v tabulce FactSales: (barvy textu vzorce jsou pouze pro ilustraci)

Vzorec počítaného sloupce

Syntaxe tohoto vzorce obsahuje následující prvky:

  1. Operátor rovná se (=) označuje začátek vzorce a při výpočtu tohoto vzorce vrátí výsledek nebo hodnotu. Všechny vzorce, ve kterých se počítá hodnota, začínají symbolem rovná se.
  2. Odkazovaný sloupec [SalesAmount] obsahuje hodnoty, od kterých chceme odečíst. Odkaz na sloupec ve vzorci je vždy uzavřený v hranatých závorkách []. Na rozdíl od vzorců aplikace Excel, které odkazují na buňku, vzorec jazyka DAX vždy odkazuje na sloupec.
  3. Matematický operátor odčítání (-).
  4. Odkazovaný sloupec [TotalCost] obsahuje hodnoty, které chceme odečíst od hodnot ve sloupci [SalesAmount].

Když se snažíte pochopit, jak se má číst vzorec jazyka DAX, je často užitečné rozebrat si jednotlivé prvky do jazyka, který každý den přemýšlíte a mluvíte. Tento vzorec můžete číst například jako:

V tabulce FactSales(Fakta) vypočítejte pro každý řádek počítaného sloupce Margin (=) hodnotu tak, že odečtete hodnoty (-) ve sloupci [TotalCost] od hodnot ve sloupci [SalesAmount].

Podívejme se na jiný typ vzorce, který se používá v míře:

Vzorec počítaného sloupce

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

  1. Název míry Sum of Sales Amount. Vzorce pro míry můžou obsahovat název míry, za ním dvojtečku a po něm vzorec výpočtu.
  2. Operátor rovná se (=) označuje začátek vzorce pro výpočet. Po výpočtu vrátí výsledek.
  3. Funkce SUMA sečte všechna čísla ve sloupci [ČástkaProdeje]. Další informace o funkcích se dozvíte později.
  4. Závorky () uzavírají jeden nebo více argumentů. Všechny funkce vyžadují aspoň jeden argument. Argument předává hodnotu funkci.
  5. Odkazovaná tabulka FactSales.
  6. Odkazovaný sloupec [SalesAmount] (ČástkaProdeje) v tabulce FactSales (FaktaProdeje). Díky tomuto argumentu funkce SUMA ví, ve kterém sloupci má souhrn agregovat.

Tento vzorec můžete číst jako:

Pro míru s názvem Sum of Sales Amount (Součet částky prodeje) vypočítejte (=) součet hodnot ve sloupci [SalesAmount] (ČástkaProdeje) v tabulce FactSalestable.

Když se tato míra umístí do zóny přetažení hodnot v seznamu polí kontingenční tabulky, vypočítá a vrátí hodnoty definované jednotlivými buňkami kontingenční tabulky, například Mobilní telefony v USA.

Všimněte si, že tento vzorec se v porovnání se vzorcem použitým pro počítaný sloupec Margin (Okraj) liší v několika věcech. Konkrétně jsme představili funkci SUMA. Funkce jsou předem napsané vzorce, které usnadňují složité výpočty a manipulace s čísly, daty, časem, textem a dalšími prvky. Další informace o funkcích se dozvíte později.

Na rozdíl od předchozího počítaného sloupce Marže vidíte, že sloupci [ČástkaProdeje] předchází tabulka FactSales, do které sloupec patří. Tento název se označuje jako plně kvalifikovaný název sloupce v tom smyslu, že obsahuje název sloupce, kterému předchází název tabulky. Sloupce, na které odkazuje stejná tabulka, nevyžadují, aby byl název tabulky zahrnut do vzorce. Dlouhé vzorce odkazující na mnoho sloupců pak mohou být kratší a čitelnější. Název tabulky je ale vhodné zahrnout do vzorců měr vždy, i když se jedná o stejnou tabulku.

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 je také nutné uzavřít do uvozovek, pokud název obsahuje nějaké znaky mimo rozsah alfanumerických znaků ANSI, bez ohledu na to, zda vaše národní prostředí tuto znakovou sadu podporuje nebo ne.

Je velmi důležité, aby vzorce měly správnou syntaxi. Ve většině případů, pokud syntaxe není správná, se vrátí chyba syntaxe. V ostatních případech může být syntaxe správná, ale vrácené hodnoty nemusí odpovídat očekávání. Power Pivot (a nástroje SQL Server Data Tools) zahrnuje IntelliSense, funkci, která se používá k vytváření syntakticky správných vzorců tím, že pomáhá vybrat správné prvky.

Vytvořme jednoduchý vzorec. Tento úkol vám pomůže lépe pochopit syntaxi vzorců a to, jak vám může pomoct funkce IntelliSense v řádku vzorců.

Úkol: Vytvoření jednoduchého vzorce pro počítaný sloupec

  1. Pokud ještě nejste v okně PowerPivot v Excelu, klikněte na pásu karet PowerPivotu na Okno Power Pivot.
  2. V okně Power Pivot klikněte na tabulku (kartu) FactSales .
  3. Přejděte do krajního pravého sloupce a potom v záhlaví sloupce klikněte na Přidat sloupec.
  4. Klikněte na řádek vzorců v horní části okna návrháře modelu.
    Řádek vzorců doplňku PowerPivot
    Kurzor se teď zobrazí v řádku vzorců. Řádek vzorců je místo, kam můžete zadat vzorec pro počítaný sloupec nebo počítané pole.
    Podívejme se na chvíli na tři tlačítka nalevo od řádku vzorců.
    Řádek vzorců
    Když je kurzor v řádku vzorců aktivní, aktivují se tato tři tlačítka. Tlačítko úplně vlevo , X, je jednoduše tlačítko Zrušit. Klikněte na něj. V řádku vzorců se už nezobrazuje kurzor a už se nezobrazují tlačítka Zrušit a tlačítko zaškrtnutí. Pokračujte a klikněte na řádek vzorců znovu. Tlačítko Zrušit a tlačítko zaškrtnutí se nyní znovu objeví. Znamená to, že jste připravení začít zadávat vzorec.
    Tlačítko zaškrtnutí je tlačítko pro kontrolu vzorce. Dokud nezadáte vzorec, moc toho neudělá. Vrátíme se k tomu za chvíli.
    Klikněte na tlačítko Fx . Uvidíte, že se zobrazí nové dialogové okno. Dialogové okno Vložit funkci. Dialogové okno Vložit funkci představuje nejjednodušší způsob, jak začít zadávat vzorec jazyka DAX. Funkci přidáme do vzorce při vytváření míry o něco později, ale prozatím nemusíte přidávat funkci do vzorce počítaného sloupce. Pokračujte a zavřete dialogové okno Vložit funkci.
  5. Na řádku vzorců zadejte rovnítko = a pak levou hranatou závorku [. Zobrazí se malé okno se všemi sloupci z tabulky FactSales. To je technologie IntelliSense v akci.
    Vzhledem k tomu, že počítané sloupce jsou vytvářeny vždy v aktivní tabulce, ve které se nacházíte, není nutné před název sloupce vkládat název tabulky. Pokračujte, posuňte se dolů a poklikejte na [SalesQuantity]. Můžete se taky posunout na požadovaný název sloupce a stisknout klávesu Tab.
    Váš kurzor je teď aktivní napravo od položky [ProdejMnožství].
  6. Zadejte mezeru, potom operátor odčítání - (znaménko minus) a další mezeru.
  7. Nyní zadejte další levou hranatou závorku [. Tentokrát vyberte sloupec [ReturnQuantity] a stiskněte Enter.
    Pokud se zobrazí chyba, pečlivě zkontrolujte syntaxi. V případě potřeby jej porovnejte se vzorcem v počítaném sloupci Okraje popsaným výše.
    Po stisknutí klávesy Enter se na stavovém řádku v dolní části okna Power Pivotu zobrazí slovo Výpočet . Jde to rychle, přestože jste právě vypočítali nové hodnoty pro více než tři miliony řádků.
  8. Klikněte pravým tlačítkem myši na záhlaví sloupce a přejmenujte sloupec na NetSales.

A je to! Právě jste vytvořili jednoduchý, ale velmi výkonný vzorec jazyka DAX. Pro každý řádek v tabulce FactSales vzorec NetSales vypočítá hodnotu tak, že odečte hodnotu ve sloupci [ReturnQuantity] od hodnoty ve sloupci [SalesQuantity]. Všimněte si, že jsme právě řekli "Pro každý řádek". Toto je letmý pohled na další velmi důležitý koncept v DAX; Kontext řádku. Další informace o kontextu řádku se dozvíte později.

Při zadávání operátorů do vzorce jazyka DAX byste měli opravdu porozumět datovému typu v argumentech, které používáte. Pokud byste například zadali následující vzorec = 1 & 2, vrácená hodnota by byla textová hodnota "12". Důvodem je, že operátor ampersand (&) slouží ke zřetězení textu. Jazyk DAX interpretuje tento vzorec takto: Vypočítat výsledek tak, že hodnota 1 je text a přičte hodnotu 2 jako text. Pokud zadáte = 1 + 2, jazyk DAX vyhodnotí tento vzorec takto: Výsledek vypočítáte tak, že se vezme číselná hodnota 1 a přičte se číselná hodnota 2. Výsledkem je samozřejmě "3", tedy číselná hodnota. Jazyk DAX vypočítává výsledné hodnoty v závislosti na operátoru ve vzorci, nikoli na základě datového typu sloupců použitých v argumentu. Datové typy v jazyce DAX jsou velmi důležité, ale stojí mimo rozsah tohoto představení aplikace. Další informace o datových typech a operátorech ve vzorcích jazyka DAX najdete v referenční dokumentaci k jazyku DAX (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) v Knihách online.

Pojďme zkusit jiný. Tentokrát vytvoříte míru zadáním vzorce a pomocí funkce IntelliSense. Pokud vzorci plně nerozumíte, nedělejte si příliš velké starosti. Důležité je naučit se, jak vytvořit vzorec, který bude obsahovat několik prvků společně ve správné syntaxi.

Úkol: Vytvoření vzorce míry

  1. V tabulce FactSales (FaktaProdeje ) klikněte do libovolné prázdné buňky v oblasti výpočtu. Jde o oblast prázdných buněk hned pod tabulkou v okně PowerPivotu.

Oblast výpočtu doplňku PowerPivot

  1. Na řádku vzorců zadejte název Prodej za předchozí čtvrtletí:.
  2. Napište rovnítko = a začněte psát vzorec pro výpočet.
  3. Zadejte několik prvních písmen CAL a potom poklikejte na funkci, kterou chcete použít. V tomto vzorci chcete použít funkci VYPOČÍTAT .
  4. Zadáním levé závorky (začněte argumenty, které mají být předávány funkci VYPOČÍTAT.
    Všimněte si, že po zadání levé závorky zobrazí IntelliSense argumenty vyžadované pro funkci VYPOČÍTAT. Za chvíli se dozvíte o argumentech.
  5. Zadejte několik prvních písmen názvu tabulky FactSales a pak v rozevíracím seznamu poklikejte na FactSales[Sales].
  6. Zadáním čárky (,) zadejte první filtr, zadejte PRE a poklikejte na funkci PREVIOUSQUARTER .
    Po výběru funkce PREVIOUSQUARTER se objeví další levá závorka, která označuje, že je vyžadován jiný argument. tentokrát pro funkci PREVIOUSQUARTER.
  7. Zadejte několik prvních písmen Dim a potom poklikejte na DimDate[DateKey].
  8. Uzavřete argument předávaný funkci PREVIOUSQUARTER i funkci CALCULATE zadáním dvou pravých závorek )).
    Vzorec by teď měl vypadat takto:
    Prodeje za předchozí čtvrtletí:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey]))
  9. Vzorec můžete ověřit kliknutím na tlačítko Zkontrolovat vzorec na řádku vzorců. Pokud se zobrazí chyba, ověřte každý prvek syntaxe.

Dokázali jste to! Právě jste vytvořili míru pomocí jazyka DAX – a navíc to není jednoduché. Tento vzorec vypočítá celkový prodej za předchozí čtvrtletí v závislosti na filtrech použitých v kontingenční tabulce nebo kontingenčním grafu.

Právě jste se seznámili s několika důležitými aspekty vzorců jazyka DAX. Tento vzorec nejprve obsahoval dvě funkce. Všimněte si, že funkce PREVIOUSQUARTER je vnořená jako argument předaný funkci VYPOČÍTAT . Vzorce jazyka DAX mohou obsahovat až 64 vnořených funkcí. Je nepravděpodobné, že by vzorec někdy obsahoval tolik vnořených funkcí. Ve skutečnosti by takový vzorec bylo velmi obtížné vytvořit a odladit a pravděpodobně by také nebyl příliš rychlý.

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

Nakonec jste použili funkci VYPOČÍTAT. Jedná se o jednu z nejvýkonnějších funkcí v jazyce DAX. Při vytváření datových modelů a složitějších vzorců pravděpodobně tuto funkci použijete mnohokrát. Diskuze o funkci CALCULATE je mimo rámec tohoto rychlého startu, ale jak vaše znalosti jazyka DAX rostou, věnujte zvláštní pozornost tomuto tématu.

Poznámka

Abyste mohli ve vzorcích jazyka DAX používat funkce časového měřítka, musíte obvykle zadat jedinečný sloupec kalendářních dat pomocí dialogového okna Označit jako tabulku kalendářních dat. V sešitu vzorce jazyka DAX Samples.xlsx společnosti Contoso je sloupec DateKey v tabulce DimDate vybraný jako sloupec jedinečných kalendářních dat.

Kredit navíc

Možná se ptáte: Jaký je nejjednodušší vzorec jazyka DAX, který můžu vytvořit. No, odpověď na to je "vzorec, který nemusíte". A to je přesně to, co můžete udělat, když v míře použijete standardní agregační funkci. Téměř každý datový model potřebuje agregovaná data filtrovat a počítat. Například funkce SUMA v míře Součet částek prodejů, kterou jste viděli výše, se používá k sečtení všech čísel v určitém sloupci. Jazyk DAX obsahuje několik dalších funkcí, které hodnoty také agregují. Pomocí funkce Automatické shrnutí můžete automaticky vytvářet vzorce používající standardní agregace.

Extra Credit Úkol: Vytvoření vzorce míry pomocí funkce AutoSum

  1. V tabulce FactSales se posuňte na sloupec ReturnQuantity (VýnosovéMnožství) a potom kliknutím na záhlaví sloupce vyberte celý sloupec.
  2. Na kartě Domů na pásu karet klikněte ve skupině Výpočty na tlačítko Automatické shrnutí .

Funkce AutoSum v doplňku PowerPivot

Klikněte na šipku dolů vedle tlačítka Automatické shrnutí a potom klikněte na Průměr (všimněte si taky dalších standardních agregačních funkcí, které můžete použít).

Okamžitě se vytvoří nová míra s názvem Average of ReturnQuantity: následovaná vzorcem =AVERAGE([ReturnQuantity]).

Teď to nebylo snadné? Samozřejmě ne všechny vzorce, které vytvoříte, budou tak jednoduché. Ale pomocí funkce Automatické shrnutí můžete vytvářet rychlé a snadné vzorce pomocí standardních agregačních výpočtů.

Díky tomu budete mít k pochopení syntaxe používané ve vzorcích jazyka DAX poměrně dobrou představu. Také jste se seznámili s některými opravdu skvělými funkcemi, jako je IntelliSense a automatické shrnutí, které vám pomůžou vytvářet rychlé, snadné a přesné vzorce. O syntaxi se toho samozřejmě můžete dozvědět mnohem víc. Dobrým místem, kde se můžete dozvědět další informace, je referenční příručka k DAX nebo SQL Books Online.

Rychlý kvíz syntaxe

  1. K čemu slouží toto tlačítko na řádku vzorců?
    Tlačítko Funkce
  2. Co vždy obklopuje název sloupce ve vzorci jazyka DAX?
  3. Jak byste napsali vzorec pro následující:
    Vypočítejte v tabulce DimProduct pro každý řádek počítaného sloupce JednotkováCena hodnotu odečtením hodnot ve sloupci JednotkovéNáklady od hodnot ve sloupci JednotkováCena?

Odpovědi jsou uvedeny na konci tohoto tématu.

Funkce

Funkce jsou předdefinované vzorce provádějící výpočty pomocí určitých hodnot, nazývaných argumenty, v určitém pořadí nebo struktuře. Argumenty mohou být jiné funkce, jiný vzorec, odkazy na sloupce, čísla, text, logické hodnoty jako PRAVDA nebo NEPRAVDA nebo konstanty.

Jazyk DAX zahrnuje následující kategorie funkcí: Funkce data a času, Informace, Logické, Matematické, Statistické, Textové a Časové měřítko. Pokud znáte funkce ve vzorcích aplikace Excel, bude vám mnoho funkcí v jazyce DAX zobrazeno podobně. Funkce jazyka DAX jsou však jedinečné v následujících ohledech:

  • Funkce jazyka DAX vždy odkazují na celý sloupec nebo tabulku. Pokud chcete použít jenom určité hodnoty z tabulky nebo sloupce, můžete do vzorce přidat filtry.
  • Pokud potřebujete přizpůsobit výpočty pro jednotlivé řádky, jazyk DAX poskytuje funkce, které vám umožní použít hodnotu aktuálního řádku nebo související hodnotu jako druh argumentu a provádět výpočty, které se liší kontextem. Další informace o kontextu se dozvíte později.
  • Jazyk DAX obsahuje mnoho funkcí, které vracejí spíše tabulku než hodnotu. Tabulka se nezobrazí, ale slouží jako vstup pro jiné funkce. Můžete třeba načíst tabulku a potom v ní spočítat jedinečné hodnoty 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 dat a na jejich základě provádět dynamické výpočty. Můžete například porovnat součty napříč paralelními obdobími.

Někdy je obtížné určit, které funkce je třeba ve vzorci použít. Power Pivot a návrhář tabulkového modelu v nástrojích SQL Server Data Tools obsahují funkci Vložit funkci, což je dialogové okno, které umožňuje vybrat funkce podle kategorií a poskytuje krátký popis jednotlivých funkcí.

Vložit funkci

Vytvoříme nový vzorec, který bude obsahovat funkci, kterou vyberete pomocí funkce Vložit funkci:

Úkol: Přidání funkce do vzorce pomocí funkce Vložit

  1. V tabulce FactSales přejděte do sloupce úplně vpravo a potom v záhlaví sloupce klikněte na Přidat sloupec.
  2. Na řádku vzorců napište rovnítko =.
  3. Klikněte na tlačítko Vložit funkci . Vložit funkci Tím se otevře dialogové okno Vložit funkci .
  4. V dialogovém okně Vložit funkci klikněte na seznam Vybrat kategorii . Ve výchozím nastavení je vybraná možnost Vše a všechny funkce v kategorii Všechny jsou uvedené níže. To je spousta funkcí, takže budete chtít funkce filtrovat, abyste usnadnili vyhledání typu funkce, kterou hledáte.
  5. Pro tento vzorec chcete vrátit data, která již existují v jiné tabulce. K tomu použijete funkci v kategorii Filtr. Klikněte na kategorii Filtr a potom v části Vyberte funkci přejděte dolů a poklikejte na funkci SOUVISEJÍCÍ. Kliknutím na tlačítko OK zavřete dialogové okno Vložit funkci .
  6. Pomocí technologie IntelliSense můžete najít a vybrat sloupec DimChannel[NázevKanálu].
  7. Zavřete vzorec a stiskněte Enter.
  8. Po stisknutí klávesy Enter se na stavovém řádku v dolní části okna Power Pivotu zobrazí slovo Výpočet. Teď uvidíte, že jste v tabulce FactSales vytvořili nový sloupec s informacemi o kanálech z tabulky DimChannel.
  9. Přejmenujte sloupec na Kanál.
    Vzorec by měl vypadat takto: =RELATED(DimChannel[NázevKanálu])

Právě jste se seznámili s další velmi důležitou funkcí jazyka DAX, funkcí RELATED . Funkce RELATED vrací hodnoty z jiné tabulky. Klauzuli RELATED můžete použít za předpokladu, že existuje vztah mezi aktuální tabulkou a tabulkou obsahující hodnoty, které chcete získat. Funkce RELATED má samozřejmě obrovské možnosti. V takovém případě teď můžete pro každý prodej do tabulky FactSales zahrnout prodejní kanál. Tabulku DimChannel teď můžete skrýt ze seznamu polí kontingenční tabulky, což vám usnadní navigaci a zobrazení jenom těch nejdůležitějších informací, které skutečně potřebujete. Podobně jako výše popsaná funkce CALCULATE je i funkce RELATED velmi důležitá a pravděpodobně ji ještě mnohokrát použijete.

Jak vidíte, funkce v jazyce DAX vám můžou pomoct vytvářet velmi výkonné vzorce. Dotkli jsme se opravdu jen základů funkcí. S tím, jak se budete zdokonalovat v jazyce DAX, budete vytvářet vzorce pomocí mnoha různých funkcí. Jedním z nejlepších míst, kde se můžete dozvědět podrobnosti o všech funkcích jazyka DAX, je použití referenčních informací k jazyku DAX (Data Analysis Expressions).

Rychlý kvíz o funkcích

  1. Na co funkce vždy odkazuje?
  2. Může vzorec obsahovat víc funkcí?
  3. Jakou kategorii funkcí byste použili ke zřetězení dvou textových řetězců do jednoho?

Odpovědi jsou uvedeny na konci tohoto tématu.

Kontext:

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

Kontext řádku

Kontext řádku si nejsnáze představíte jako aktuální řádek. Pamatujete si třeba počítaný sloupec Okraje, který jste viděli už dřív, když jste se učili o syntaxi? Vzorec =[SalesAmount] - [TotalCost] vypočítá hodnotu ve sloupci Margin pro každý řádek v tabulce. Hodnoty pro každý řádek se počítají z hodnot ve dvou dalších sloupcích, [SalesAmount] a [TotalCost] ve stejném řádku. Jazyk DAX může vypočítat hodnoty pro každý řádek ve sloupci Margin, protože má následující kontext: Pro každý řádek vezme hodnoty ve sloupci [TotalCost] a odečte je od hodnot ve sloupci [SalesAmount].

Ve vybrané buňce zobrazené dole byla hodnota 49,54 Kč v aktuálním řádku vypočtena odečtením hodnoty 51,54 Kč ve sloupci [TotalCost] od hodnoty 101,08 USD ve sloupci [SalesAmount].

Kontext řádku v doplňku PowerPivot

Kontext řádku se nevztahuje pouze na počítané sloupce. Kontext řádku se také použije vždy, když vzorec obsahuje funkci, která používá filtry k identifikaci jednoho řádku v tabulce. Funkce ze své podstaty použije kontext řádku pro každý řádek tabulky, přes kterou filtruje. Tento typ kontextu řádku se u měr používá nejčastěji.

Kontext filtru

Kontext filtru je trochu náročnější na pochopení než kontext řádku. Kontext filtru si lze nejsnáze představit jako: Jeden nebo více filtrů použitých při výpočtu, který určuje výsledek nebo hodnotu.

Kontext filtru neexistuje místo kontextu řádku; Platí to spíš jako doplněk k kontextu řádku. Chcete-li například dále zúžit počet hodnot, které mají být zahrnuty do výpočtu, můžete použít kontext filtru, který nejen určuje kontext řádku, ale také určuje pouze konkrétní hodnotu (filtr) v daném kontextu řádku.

Kontext filtru je snadno viditelný v kontingenčních tabulkách. Když například přidáte Celkovnáklady do oblasti Hodnoty a potom přidáte Rok a Oblast do řádku nebo sloupců, 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ý? Protože zatímco kontext filtru se dá nejsnadněji použít přidáním popisků sloupců a řádků a průřezů v kontingenční tabulce, kontext filtru se dá použít také ve vzorci jazyka DAX definováním filtru pomocí funkcí jako ALL, RELATED, FILTER, CALCULATE, by relationships a dalších měr a sloupců. Podívejme se například na následující vzorec v míře nazvané StoreSales:

Vzorec

Je zřejmé, že tento vzorec je složitější než některé jiné vzorce, které jste viděli. Abychom však tomuto vzorci lépe porozuměli, můžeme jej rozebrat, podobně jako jsme to udělali s jinými vzorci.

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

  1. Název míry StoreSales a za ním dvojtečka :.
  2. Operátor rovná se (=) označuje začátek vzorce.
  3. Funkce CALCULATE vyhodnocuje výraz jako argument v kontextu, který je upraven zadanými filtry.
  4. Závorky () uzavírají jeden nebo více argumentů.
  5. Míra [Prodej] ve stejné tabulce jako výraz. Míra Sales (Prodej) obsahuje vzorec: =SUMA(FactSales[SalesAmount]).
  6. Každý filtr je oddělený čárkou (,).
  7. Odkazovaný sloupec a konkrétní hodnota DimChannel[NázevKanálu] ="Store" ve formě filtru.

Tento vzorec zajistí, že se jenom pro řádky ve sloupci DimChannel[NázevKanálu] s hodnotou Store ve formě filtru vypočítají jenom hodnoty prodeje definované mírou Prodeje ve formě filtru.

Jak si asi dovedete představit, schopnost definovat kontext filtru ve vzorci má obrovskou a mocnou schopnost. Možnost odkazovat pouze na konkrétní hodnotu v související tabulce je jen jedním z takových příkladů. Nedělejte si starosti, pokud hned úplně nerozumíte kontextu. Při vytváření vlastních vzorců lépe pochopíte kontext a proč je v jazyce DAX tak důležitý.

Kontextový rychlý kvíz

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

Odpovědi jsou uvedeny na konci tohoto tématu.

Shrnutí

Nyní, když máte základní znalosti nejdůležitějších pojmů v jazyce DAX, můžete začít vytvářet vzorce DAX pro počítané sloupce a míry sami. Naučit se jazyk DAX může být trochu složitější, ale máte k dispozici mnoho zdrojů informací. Když si toto téma několikrát přečtete a vyzkoušíte si některé vlastní vzorce, dozvíte se víc o dalších konceptech a vzorcích jazyka DAX, které vám můžou pomoct vyřešit vaše vlastní obchodní problémy. V nápovědě k Power Pivotu, v online knihách o SQL Server a v blozích od Microsoftu i předních odborníků na BI je k dispozici mnoho zdrojů informací o jazyce DAX. Nejlépe bude začít na stránkách Wikiwebu Centra zdrojů pro jazyk DAX (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx). Skvělým zdrojem informací je taky referenční příručka jazyka DAX (Data Analysis Expressions). Nezapomeňte si ho uložit do oblíbených položek.

Dokument white paper DAX v tabulkovém modelu BI, který je k dispozici ke stažení (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409), poskytuje podrobnější pohled na zde představené koncepty a také mnoho dalších pokročilých konceptů a vzorců. Tento dokument white paper používá stejný ukázkový Formulas.xlsx sešitu jazyka Contoso DAX, který už máte.

Odpovědi rychlých kvízů

Syntaxe:

  1. Otevře funkci Vložit funkci.
  2. Hranaté závorky [].
  3. =[JednotkováCena] – [JednotkováCena]

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 jedinou hodnotu.
  3. Aktuální řádek