Tento rychlý start je určený pro uživatele, kteří Power Pivot v excelových nebo tabulkových modelových projektech vytvořených v SQL Server Data Tools. Má vám poskytnout rychlý a snadný úvod k tomu, jak můžete pomocí jazyka DAX (Data Analysis Expressions) řešit řadu základních problémů s modelováním a analýzou dat. Toto téma obsahuje koncepční informace, řadu úkolů, které můžete dokončit, a několik kvízů k otestování toho, co jste se naučili. Po dokončení tohoto tématu byste měli dobře porozumě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. Jednoduše řečeno, DAX pomáhá vytvářet nové informace z dat, která už máte v modelu.
Proč je DAX tak důležitý?
Vytvořit sešit a naimportovat 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 bez použití vzorců DAX. Co když ale potřebujete analyzovat důležitá prodejní data napříč několika kategoriemi produktů a pro různé rozsahy dat? Nebo potřebujete zkombinovat důležitá data inventáře z několika tabulek v různých zdrojích dat? 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 data na maximum. Když získáte informace, které potřebujete, můžete začít řešit skutečné obchodní problémy, které mají vliv na váš konec. Toto je Business Intelligence a DAX vám pomůže se tam dostat.
Požadavky
Možná už víte o vytváření vzorců v Microsoft Excelu. Tyto znalosti budou užitečné při porozumění jazyku DAX, ale i když nemáte žádné zkušenosti s excelovými vzorci, zde popsané koncepty vám pomůžou začít vytvářet vzorce DAX a okamžitě řešit skutečné problémy BI.
Zaměříme se konkrétně na pochopení vzorců DAX používaných ve výpočtech. Už byste měli znát základní koncepty počítaných sloupců i měr (označovaných také jako počítaná pole), které jsou popsány v nápovědě Power Pivot. Měli byste také znát Power Pivot v prostředí a nástrojích pro vytváření Excelu.
Ukázkový sešit
Nejlepší způsob, jak se naučit JAZYK DAX, je vytvořit některé základní vzorce, použít ho s některými skutečnými daty a podívat se na výsledky sami. Příklady a úkoly, které tady najdete, používají sešit Contoso Sample DAX Formulas.xlsx. Sešit si můžete stáhnout z http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. Jakmile si sešit stáhnete do počítače, otevřete ho a pak otevřete okno Power Pivot.
Začněme!
Jazyk DAX budeme orámovat kolem tří velmi důležitých základních konceptů: syntaxe, funkcí a kontextu. Jazyk DAX samozřejmě obsahuje i 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ž vytvoříte vlastní vzorce, podívejme se na syntaxi vzorců DAX. Syntaxe zahrnuje různé prvky, které tvoří vzorec, nebo jednodušeji řečeno, jak je vzorec napsán. Podívejme se například na jednoduchý vzorec DAX, který slouží k vytvoření nových dat (hodnot) pro každý řádek v počítaném sloupci s názvem Margin v tabulce FactSales: (barvy textu vzorce jsou pouze pro ilustrativní účely).
Syntaxe tohoto vzorce obsahuje následující prvky:
-
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, které počítají hodnotu, budou začínat znaménkem rovná se.
-
Odkazovaný sloupec [SalesAmount] obsahuje hodnoty, od které chceme odečíst. Odkaz na sloupec ve vzorci je vždy obklopen závorkami []. Na rozdíl od excelových vzorců, které odkazují na buňku, vzorec DAX vždy odkazuje na sloupec.
-
Matematický operátor odčítání (-).
-
Odkazovaný sloupec [TotalCost] obsahuje hodnoty, které chceme odečíst od hodnot ve sloupci [SalesAmount].
Když se snažíte pochopit, jak číst vzorec DAX, je často užitečné rozdělit jednotlivé prvky do jazyka, který si myslíte a mluvíte každý den. Tento vzorec můžete číst například takto:
V tabulce FactSales vypočítejte pro každý řádek počítaný sloupec Margin hodnotu (=) odečtením (-) hodnot ve sloupci [TotalCost] od hodnot vesloupci [SalesAmount].
Pojďme se podívat na jiný typ vzorce, který se používá v míře:
Tento vzorec obsahuje následující prvky syntaxe:
-
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 vzorec výpočtu.
-
Operátor rovná se (=) označuje začátek vzorce výpočtu. Při výpočtu vrátí výsledek.
-
Funkce SUMA sečte všechna čísla ve sloupci [SalesAmount]. Další informace o funkcích se dozvíte později.
-
Závorky () obklopují jeden nebo více argumentů. Všechny funkce vyžadují alespoň jeden argument. Argument předá funkci hodnotu.
-
Odkazovaná tabulka FactSales.
-
Odkazovaný sloupec [SalesAmount] v tabulce FactSales. Pomocí tohoto argumentu funkce SUMA ví, na kterém sloupci se má suma agregovat.
Tento vzorec si můžete přečíst takto:
Pro míru s názvem Sum of Sales Amount (Součet prodeje) vypočítejte (=) sumu hodnot ve sloupci [SalesAmount] v tabulceFactSales.
Při umístění do zóny přetažení Hodnoty v seznamu polí kontingenční tabulky tato míra vypočítá a vrátí hodnoty definované každou buňkou v kontingenční tabulce, například Mobilní telefony v USA.
Všimněte si, že se tento vzorec liší od vzorce, který jsme použili pro počítaný sloupec Okraj. Konkrétně jsme zavedli funkci SUMA. Funkce jsou předem napsané vzorce, které usnadňují provádění složitých výpočtů a manipulace s čísly, kalendářními daty, časem, textem a dalšími funkcemi. Další informace o funkcích se dozvíte později.
Na rozdíl od výše počítaného sloupce Margin vidíte, že sloupci [SalesAmount] předchází tabulka FactSales, do které sloupec patří. Tento název se označuje jako plně kvalifikovaný název sloupce v tom, že obsahuje název sloupce, před kterým je název tabulky. Sloupce odkazované ve stejné tabulce nevyžadují, aby byl název tabulky zahrnutý ve vzorci. Dlouhé vzorce, které odkazují na mnoho sloupců, můžou být kratší a čitelnější. Je ale vhodné vždy 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 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í podporuje znakovou sadu nebo ne.
Je velmi důležité, aby vzorce měly správnou syntaxi. Pokud syntaxe není správná, ve většině případů se vrátí chyba syntaxe. V jiných případech může být syntaxe správná, ale vrácené hodnoty nemusí být očekávané. Power Pivot (a SQL Server Data Tools) zahrnuje IntelliSense; funkce sloužící k vytvoření syntakticky správných vzorců tím, že vám pomůže vybrat správné prvky.
Pojďme vytvořit jednoduchý vzorec. Tato úloha vám pomůže lépe porozumět syntaxi vzorců a tomu, jak vám může pomoct funkce IntelliSense na řádku vzorců.
Úkol: Vytvoření jednoduchého vzorce pro počítaný sloupec
-
Pokud ještě nejste v okně Power Pivot, klikněte v Excelu na pásu karet Power Pivot na Power Pivot Okno.
-
V okně Power Pivot klikněte na tabulku FactSales (karta).
-
Posuňte se na sloupec nejvíce vpravo a potom v záhlaví sloupce klikněte na Přidat sloupec.
-
Klikněte na řádek vzorců v horní části okna návrháře modelů.
Kurzor se teď zobrazí na řádku vzorců. Řádek vzorců je místo, kam můžete zadat vzorec pro počítaný sloupec nebo počítané pole.
Podívejme se na tři tlačítka nalevo od řádku vzorců.
Když je kurzor aktivní na řádku vzorců, tato tři tlačítka se aktivují. Tlačítko X, které je úplně vlevo, je jednoduše tlačítko zrušit. Pokračujte a klikněte na něj. Kurzor se už nezobrazuje na řádku vzorců a tlačítko Zrušit a tlačítko zaškrtnutí se už nezobrazují. Pokračujte a znovu klikněte do řádku vzorců. Tlačítko Zrušit a tlačítko zaškrtnutí se teď znovu zobrazí. To znamená, že jste připraveni začít zadávat vzorec.
Tlačítko zaškrtnutí je tlačítko pro zaškrtnutí vzorce. Dokud nezadáte vzorec, moc toho neudělá. Za chvíli se k tomu vrátíme.
Klikněte na tlačítko Fx . Zobrazí se nové dialogové okno. dialogové okno Vložit funkci. Dialogové okno Vložit funkci je nejjednodušší způsob, jak začít zadávat vzorec DAX. Funkci přidáme do vzorce, když o něco později vytvoříme míru, ale prozatím ji do vzorce počítaný sloupec přidávat nemusíte. Pokračujte a zavřete dialogové okno Vložit funkci.
-
Do řádku vzorců zadejte znaménko rovná se = a potom zadejte levou závorku [. Zobrazí se malé okno se všemi sloupci v tabulce FactSales. Toto je IntelliSense v akci.
Vzhledem k tomu, že počítané sloupce se vždy vytvářejí v aktivní tabulce, ve které se nacházíte, není nutné před názvem sloupce zadat název tabulky. Pokračujte a posuňte se dolů a poklikejte na položku [SalesQuantity]. Můžete se také posunout k požadovanému názvu sloupce a stisknout klávesu Tab.
Kurzor je teď aktivní napravo od [SalesQuantity].
-
Zadejte mezeru, pak zadejte operátor odčítání – (znaménko minus) a potom zadejte další mezeru.
-
Teď zadejte další levou závorku [. Tentokrát vyberte sloupec [ReturnQuantity] a stiskněte Enter.
Pokud se zobrazí chyba, pečlivě se podívejte na syntaxi. V případě potřeby ho porovnejte se vzorcem v počítaném sloupci Margin popsaný výše.
Po dokončení vzorce stisknutím klávesy Enter se na stavovém řádku v dolní části okna Power Pivot zobrazí slovo Výpočet . Jde to rychle, i když jste právě vypočítali nové hodnoty pro více než tři miliony řádků.
-
Klikněte pravým tlačítkem myši na záhlaví sloupce a přejmenujte sloupec NetSales.
A je to! Právě jste vytvořili jednoduchý, ale velmi výkonný vzorec DAX. Pro každý řádek tabulky FactSales vzorec NetSales vypočítá hodnotu odečtením hodnoty ve sloupci [ReturnQuantity] od hodnoty ve sloupci [SalesQuantity]. Všimněte si, jak jsme právě řekli "Pro každý řádek". Toto je pohled na další velmi důležitý koncept jazyka DAX; kontext řádku. Další informace o kontextu řádku se dozvíte později.
Při zadávání operátoru do vzorce DAX je velmi důležité pochopit datový typ v argumentech, které používáte. Pokud byste například chtěli zadat následující vzorec = 1 & 2, vrácená hodnota by byla textová hodnota "12". Je to proto, že operátor ampersand (&) slouží ke zřetězení textu. Jazyk DAX interpretuje tento vzorec tak, aby četl: Vypočítá výsledek tak, že hodnotu 1 vezme jako text a přidá hodnotu 2 jako text. Pokud byste teď chtěli zadat = 1 + 2, dax přečte tento vzorec takto: Výpočet výsledku tak, že vezmeme číselnou hodnotu 1 a přidáme číselnou hodnotu 2. Výsledkem je samozřejmě "3", číselná hodnota. Jazyk DAX vypočítá 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 mimo rozsah tohoto rychlého startu. Další informace o datových typech a operátorech ve vzorcích JAZYKA DAX najdete v tématu Referenční informace k jazyku DAX (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) v knihách Online.
Zkusme další. Tentokrát vytvoříte míru tak, že zadáte vzorec a použijete IntelliSense. Pokud vzorci plně nerozumíte, nemusíte si dělat starosti. Důležité je, abyste se naučili, jak vytvořit vzorec s použitím několika prvků ve správné syntaxi.
Úkol: Vytvoření vzorce míry
-
V tabulce FactSales klikněte na libovolnou prázdnou buňku v oblasti výpočtu. Toto je oblast prázdných buněk hned pod tabulkou v okně Power Pivot.
-
Do řádku vzorců zadejte název Previous Quarter Sales:.
-
Zadejte znaménko rovná se = a začněte vzorec výpočtu.
-
Zadejte několik prvních písmen CAL a potom poklikejte na funkci, kterou chcete použít. V tomto vzorci chcete použít funkci CALCULATE .
-
Zadejte levou závorku ( a začněte tak argumenty, které se mají předat funkci CALCULATE.
Všimněte si, že po zadání levých závorek zobrazí IntelliSense argumenty požadované pro funkci CALCULATE. O argumentech se za chvíli dozvíte.
-
Zadejte několik prvních písmen tabulky FactSales a potom v rozevíracím seznamu poklikejte na FactSales[Sales].
-
Zadejte čárku (,), abyste určili první filtr, pak zadejte PRE a potom poklikejte na funkci PREVIOUSQUARTER .
Po výběru funkce PREVIOUSQUARTER se zobrazí další levá závorka, která označuje, že je požadován jiný argument; tentokrát pro funkci PREVIOUSQUARTER.
-
Zadejte několik prvních písmen Dim a potom poklikejte na DimDate[DateKey].
-
Zavř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:
Previous Quarter Sales:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey]))
-
Kliknutím na tlačítko zkontrolovat vzorec na řádku vzorců vzorec ověřte. Pokud se zobrazí chyba, ověřte každý prvek syntaxe.
Udělal jsi to! Právě jste vytvořili míru pomocí jazyka DAX, což 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ů DAX. Za prvé, tento vzorec obsahoval dvě funkce. Všimněte si, že funkce PREVIOUSQUARTER je vnořená jako argument předaný funkci CALCULATE . Vzorce DAX můžou 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 bylo velmi obtížné takový vzorec vytvořit a ladit a pravděpodobně by také nebyl příliš rychlý.
V tomto vzorci jste také použili filtry. Filtry zužují, 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 najdete později.
Nakonec jste použili funkci CALCULATE. Jedná se o jednu z nejvýkonnějších funkcí jazyka DAX. Při vytváření datových modelů a složitějších vzorců budete pravděpodobně tuto funkci používat mnohokrát. Diskuze o funkci CALCULATE je mimo rozsah tohoto rychlého startu, ale s tím, jak se vaše znalosti jazyka DAX zvětšují, věnujte této funkci zvláštní pozornost.
Poznámka: Pokud chcete ve vzorcích DAX používat funkce časového měřítka, musíte obvykle zadat jedinečný sloupec kalendářního data pomocí dialogového okna Označit jako tabulku kalendářních dat. V sešitu Contoso DAX Formula Samples.xlsx je jako jedinečný sloupec data vybraný sloupec DateKey v tabulce DimDate.
Kredit navíc
Možná se ptáte: "Jaký je nejjednodušší vzorec 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 pomocí standardní agregační funkce v míře. Téměř každý datový model musí filtrovat a počítat s agregovanými daty. Například funkce SUMA v míře Sum of Sales Amount, kterou jste viděli dříve, se používá k sečtení všech čísel v konkrétním sloupci. Jazyk DAX obsahuje i několik dalších funkcí, které agregují hodnoty. Vzorce můžete automaticky vytvářet pomocí standardních agregací pomocí funkce Automatické shrnutí.
Úkol navíc s kreditem: Vytvoření vzorce míry pomocí funkce Automatické shrnutí
-
V tabulce FactSales přejděte na sloupec ReturnQuantity a kliknutím na záhlaví sloupce vyberte celý sloupec.
-
Na kartě Domů klikněte na pásu karet ve skupině Výpočty na tlačítko Automatické shrnutí .
Klikněte na šipku dolů vedle položky Automatické shrnutí a potom klikněte na Průměr (všimněte si i 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 =PRŮMĚR([ReturnQuantity]).
Nebylo to tak jednoduché? Samozřejmě, že ne všechny vzorce, které vytvoříte, budou tak jednoduché. Pomocí funkce Automatické shrnutí ale můžete vytvářet rychlé a snadné vzorce pomocí standardních agregačních výpočtů.
To by vám mělo poskytnout poměrně dobrý přehled o syntaxi používané ve vzorcích DAX. Seznámili jste se také s některými skvělými funkcemi, jako je IntelliSense a AutoSum, které vám pomůžou vytvářet rychlé, snadné a přesné vzorce. O syntaxi se samozřejmě můžete dozvědět mnohem víc. Dobrým místem, kde se můžete dozvědět více, je referenční příručka jazyka DAX nebo SQL Books Online.
QuickQuiz syntaxe
-
Co dělá toto tlačítko na řádku vzorců?
-
Co vždy obklopuje název sloupce ve vzorci DAX?
-
Jak byste napsali vzorec pro následující:
V tabulce DimProduct vypočítáte pro každý řádek počítaný sloupec UnitMargin hodnotu odečtením hodnot ve sloupci UnitCost od hodnot ve sloupciUnitPrice?
Odpovědi najdete na konci tohoto tématu.
Funkce
Funkce jsou předdefinované vzorce, které provádějí výpočty pomocí konkrétních hodnot, nazývaných argumenty, v určitém pořadí nebo struktuře. Argumenty můžou být jiné funkce, jiný vzorec, odkazy na sloupce, čísla, text, logické hodnoty jako PRAVDA nebo NEPRAVDA nebo konstanty.
Jazyk DAX obsahuje následující kategorie funkcí: funkce data a času, informace, logické funkce, matematické funkce, statistické funkce, funkce textu a časového měřítka. Pokud jste obeznámeni s funkcemi ve vzorcích Excelu, mnoho funkcí v jazyce DAX bude vypadat podobně jako vy; Funkce jazyka DAX jsou však jedinečné následujícími způsoby:
-
Funkce jazyka 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 řádku, 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ů, které se liší podle kontextu. Další informace o kontextu se dozvíte později.
-
Jazyk DAX obsahuje mnoho funkcí, které vrací tabulku místo hodnoty. Tabulka se nezobrazuje, ale slouží k poskytování vstupu jiným funkcím. Můžete například načíst tabulku a pak v ní spočítat jedinečné hodnoty nebo vypočítat dynamické součty ve filtrovaných tabulkách nebo sloupcích.
-
JAZYK DAX obsahuje celou řadu funkcí časového měřítka. Tyto funkce umožňují definovat nebo vybrat rozsahy kalendářních 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é zjistit, které funkce byste mohli ve vzorci použít. Power Pivot a návrháře tabulkových modelů v nástrojích SQL Server Data Tools obsahují funkci Vložit funkci, což je dialogové okno, které vám pomůže vybrat funkce podle kategorií a poskytuje krátké popisy jednotlivých funkcí.
Pojďme vytvořit nový vzorec, který bude obsahovat funkci, kterou vyberete pomocí funkce Vložit funkci:
Úkol: Přidání funkce do vzorce pomocí funkce Vložit
-
V tabulce FactSales přejděte na sloupec nejvíce vpravo a potom v záhlaví sloupce klikněte na Přidat sloupec.
-
Do řádku vzorců zadejte znaménko rovná se = .
-
Klikněte na tlačítko Vložit funkci . Otevře se dialogové okno Vložit funkci .
-
V dialogovém okně Vložit funkci klikněte na seznam Vybrat kategorii . Ve výchozím nastavení je vybrána možnost Vše a všechny funkce v kategorii Vše jsou uvedeny níže. To je spousta funkcí, takže je budete chtít filtrovat, aby bylo snazší najít typ funkce, kterou hledáte.
-
Pro tento vzorec chcete vrátit data, která už existují v jiné tabulce. K tomu použijete funkci v kategorii Filtr. Pokračujte a klikněte na kategorii Filtr a pak v části Vybrat funkci se posuňte dolů a poklikejte na funkci RELATED. Kliknutím na OK zavřete dialogové okno Vložit funkci.
-
Pomocí IntelliSense můžete najít a vybrat sloupec DimChannel[ChannelName].
-
Zavřete vzorec a stiskněte Enter.
-
Po dokončení vzorce stisknutím klávesy Enter se na stavovém řádku v dolní části okna Power Pivot zobrazí slovo Výpočet. Teď uvidíte, že jste právě vytvořili nový sloupec v tabulce FactSales s informacemi o kanálu z tabulky DimChannel.
-
Přejmenujte sloupec Channel (Kanál).
Vzorec by měl vypadat takto: =RELATED(DimChannel[ChannelName])
Právě jste se seznámili s další velmi důležitou funkcí jazyka DAX, funkcí RELATED . Funkce RELATED vrátí hodnoty z jiné tabulky. Funkci RELATED můžete použít za předpokladu, že existuje relace mezi tabulkou, ve které se právě nacházíte, 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 prodejní kanál pro každý prodej zahrnout do tabulky FactSales. Tabulku DimChannel teď můžete v seznamu polí kontingenční tabulky skrýt, abyste se mohli snadněji pohybovat a zobrazovat jenom ty nejdůležitější informace, které opravdu potřebujete. Podobně jako funkce CALCULATE popsaná výše je funkce RELATED velmi důležitá a pravděpodobně ji budete používat mnohokrát.
Jak vidíte, funkce v jazyce DAX vám můžou pomoct vytvářet velmi výkonné vzorce. Ve skutečnosti jsme se dotknuli jenom základů funkcí. S tím, jak se vaše dovednosti v jazyce DAX budou zlepšovat, 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 referenční příručka jazyka DAX (Data Analysis Expressions).
Funkce QuickQuiz
-
Na 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 tématu.
Kontext:
Kontext je jedním z nejdůležitějších konceptů JAZYKa DAX, kterým je třeba 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 se nejsnápadněji považuje za aktuální řádek. Pamatujete si například na počítaný sloupec Margin, který jste viděli dříve, když jste se dozvěděli 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] na stejném řádku. Jazyk DAX může vypočítat hodnoty pro každý řádek ve sloupci Margin, protože má kontext: Pro každý řádek přebírá hodnoty ve sloupci [TotalCost] a odečte je od hodnot ve sloupci [SalesAmount].
Ve vybrané buňce zobrazené níže se vypočítala hodnota 49,54 Kč v aktuálním řádku odečtením hodnoty 51,54 Usd ve sloupci [TotalCost] od hodnoty 101,08 Usd ve sloupci [SalesAmount].
Kontext řádku se nevztahuje jenom na počítané sloupce. Kontext řádku se použije také vždy, když má vzorec funkci, která používá 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 o něco obtížnější než kontext řádku. Nejsnáže si kontext filtru můžete představit takto: 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é určuje pouze určitou hodnotu (filtr) v tomto kontextu řádku.
Kontext filtru je snadno vidět v kontingenčních tabulkách. Když například přidáte TotalCost 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ý? Vzhledem k tomu, že kontext filtru lze nejsnáže použít přidáním popisků sloupců a řádků a průřezů do kontingenční tabulky, můžete kontext filtru použít také ve vzorci DAX tak, že definujete filtr pomocí funkcí, jako jsou ALL, RELATED, FILTER, CALCULATE, by relationships a pomocí dalších měr a sloupců. Podívejme se například na následující vzorec v míře s názvem StoreSales:
Je zřejmé, že tento vzorec je složitější než některé z ostatních vzorců, které jste viděli. Abychom však tomuto vzorci lépe porozuměli, můžeme ho rozdělit podobně jako u jiných vzorců.
Tento vzorec obsahuje následující prvky syntaxe:
-
Název míry StoreSales následovaný dvojtečkami :.
-
Operátor rovná se (=) označuje začátek vzorce.
-
Funkce CALCULATE vyhodnocuje výraz jako argument v kontextu, který je upraven zadanými filtry.
-
Závorky () obklopují jeden nebo více argumentů.
-
Míra [Prodej] ve stejné tabulce jako výraz. Míra Sales má vzorec: =SUMA(FactSales[SalesAmount]).
-
Každý filtr odděluje čárka (,).
-
Odkazovaný sloupec a konkrétní hodnota DimChannel[ChannelName] ="Store" jako filtr.
Tento vzorec zajistí, že se hodnoty prodeje definované mírou Sales jako filtr počítají jenom pro řádky ve sloupci DimChannel[ChannelName] s hodnotou Store jako filtrem.
Jak si dokážete představit, schopnost definovat kontext filtru ve vzorci má obrovské a výkonné schopnosti. Jedním z příkladů je možnost odkazovat pouze na určitou hodnotu v související tabulce. Nemějte obavy, pokud kontextu hned úplně nerozumíte. Při vytváření vlastních vzorců lépe pochopíte kontext a proč je v JAZYCE DAX tak důležitý.
Kontext QuickQuiz
-
Jaké jsou dva typy kontextu?
-
Co je kontext filtru?
-
Co je kontext řádku?
Odpovědi najdete na konci tohoto tématu.
Souhrn
Teď, když máte základní znalosti o nejdůležitějších konceptech jazyka DAX, můžete začít vytvářet vzorce DAX pro počítané sloupce a míry sami. Naučit se DAX může být opravdu trochu složité, ale máte k dispozici mnoho zdrojů. Po několika přečteních tohoto tématu a experimentování s několika vlastními vzorci si můžete přečíst další informace o dalších konceptech a vzorcích jazyka DAX, které vám pomůžou vyřešit vaše vlastní obchodní problémy. K dispozici je mnoho prostředků jazyka DAX v nápovědě k Power Pivot, online knihách SQL Serveru, dokumentech white paper a blogech od Microsoftu i od předních odborníků na BI. Wikiweb centra prostředků DAX (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) je skvělým místem pro začátek. Skvělým zdrojem informací je také referenční informace jazyka DAX (Data Analysis Expressions ). Nezapomeňte si ho uložit do oblíbených položek.
Dokument white paper jazyka 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é na řadu dalších pokročilých konceptů a vzorců. Tento dokument white paper také používá stejný ukázkový Formulas.xlsx sešitu Contoso DAX, který už máte.
QuickQuiz Answers
Syntaxe:
-
Otevře funkci Vložit funkci.
-
Hranaté závorky [].
-
=[Cena za jednotku] - [UnitCost]
Funkce:
-
Tabulka a sloupec
-
Ano. Vzorec může obsahovat až 64 vnořených funkcí.
Kontext:
-
Kontext řádku a kontext filtru
-
Jeden nebo více filtrů ve výpočtu, který určuje jednu hodnotu.
-
Aktuální řádek.