Úvod do použití jazyka DAX
Po této kapitole budete umět
- Vyjmenovat prostředí, kde lze DAX používat
- Vysvětlit historický kontext vzniku DAX
- Popsat vztah DAX k jazykům Excel, SQL a MDX
- Nainstalovat a otevřít Power BI Desktop
Kde se DAX používá?
DAX (Data Analysis Expressions) je funkcionální jazyk pro práci s daty, který se používá v celé rodině Microsoft BI nástrojů. Všechna tato prostředí sdílí stejný Tabular engine — engine, který rozumí datovému modelu a vyhodnocuje DAX výrazy.
Power BI Desktop je primární prostředí pro moderní BI řešení. DAX se zde používá pro:
- Tvorbu measures (měřítek) pro vizualizace
- Definici calculated columns (počítaných sloupců) v tabulkách
- Tvorbu calculated tables (počítaných tabulek)
- Pravidla Row Level Security (RLS)
- Visual calculations — nová funkce od 2024
SQL Server Analysis Services Tabular (SSAS) je serverová platforma pro enterprise BI řešení. DAX zde plní stejnou roli jako v Power BI, navíc:
- Model se nasazuje centrálně na server
- Více nástrojů může sdílet jeden model (Power BI, Excel, Reporting Services)
- Vývoj probíhá ve Visual Studio s rozšířením Analysis Services Projects
- Azure varianta: Azure Analysis Services nebo Microsoft Fabric
Power Pivot pro Microsoft Excel byl prvním prostředím, kde DAX vznikl (2009–2010). Dnes se doporučuje přechod na Power BI, ale Power Pivot stále funguje pro:
- Uživatele, kteří nemohou opustit Excel prostředí
- Jednoduché modely nad existujícími Excel tabulkami
- Propojení s Power BI — model lze importovat do Desktopu
Historie DAX
Pochopení historie jazyka pomáhá vysvětlit, proč DAX funguje tak, jak funguje — a proč je v mnoha ohledech překvapivě chytrý.
SQL Server 7.0 (1998) přinesl OLAP Services — první Microsoft OLAP engine s multidimenzionálním modelem a jazykem MDX. SQL Server 2000 engine přejmenoval na Analysis Services a výrazně ho rozšířil (data mining, plnější MDX podpora). MDX byl mocný, ale obtížně učitelný jazyk s velmi strmou křivkou učení.
Microsoft vydal Power Pivot jako bezplatný doplněk pro Excel 2010 (jaro 2010 v rámci SQL Server 2008 R2, interní codename Gemini). S ním přišel nový jazyk DAX — navržený tak, aby byl blíže Excelovým vzorcům, ale s schopnostmi pracovat s relačními daty. Hlavním architektem jazyka byl Jeffrey Wang z Microsoft produktového týmu. Alberto Ferrari a Marco Russo (SQLBI) jsou dodnes největšími externími experty a autory referenční knihy The Definitive Guide to DAX.
SQL Server 2012 přinesl SSAS Tabular — serverovou variantu modelu, kde DAX nahradil MDX pro Tabular modely. VertiPaq engine zajistil extrémně rychlé zpracování díky sloupcovému ukládání dat v paměti.
Power BI Desktop (2015) přinesl DAX do širší komunity. Od té doby přibývají každý měsíc nové funkce — Visual calculations (2024), Calculation groups, Field parameters, NETWORKDAYS a desítky dalších. DAX je dnes plnohodnotný jazyk pro enterprise BI.
Inspirace z jiných jazyků
DAX se při návrhu inspiroval třemi existujícími jazyky. Pochopení těchto kořenů objasňuje syntaxi a způsob uvažování v DAX.
| Jazyk | Co si DAX půjčil | Příklad |
|---|---|---|
| Excel vzorce | Matematika, text, datum/čas, logika, finanční funkce. Syntaxe funkcionálního volání. | IF(), LEFT(), DATE() |
| SQL | Relační algebra — spojování tabulek přes relace, filtrování dat | Implicitní JOIN přes relace v modelu |
| MDX | Koncept measures (agregovatelné výpočty), kontext výpočtu | Measures jsou vždy v kontextu filtru |
Excel uživatelé rychle najdou mnoho známých funkcí:
-- Stejné jako v Excelu: IF([Prodej] > 1000, "Velký", "Malý") LEFT(DimProduct[EnglishProductName], 3) YEAR(DimDate[FullDateAlternateKey]) SUMIF -- v DAX nahrazeno přes CALCULATE + FILTER
Místo SQL JOIN používá DAX relace definované v datovém modelu — ty fungují jako implicitní joiny:
-- SQL JOIN: SELECT p.EnglishProductName, SUM(s.SalesAmount) FROM FactInternetSales s JOIN DimProduct p ON s.ProductKey = p.ProductKey -- DAX ekvivalent (relace je definovaná v modelu): [Prodej] = SUMX(FactInternetSales, FactInternetSales[SalesAmount]) -- DimProduct je dostupný přes relaci automaticky
Z MDX pochází klíčový koncept: measure se vždy vyhodnocuje v kontextu filtru — tedy záleží na tom, co je viditelné v daný moment (rok, produkt, region).
Prostředí a nástroje
V tomto kurzu budeme pracovat v následujícím prostředí:
| Nástroj | Účel | Kde najdeme |
|---|---|---|
| Power BI Desktop | Hlavní nástroj pro tvorbu modelu, DAX a reportů | Předinstalován na kurzovním PC |
| SSMS (SQL Server Management Studio) | Správa AdventureWorks DW databáze | Předinstalován na kurzovním PC |
| DAX Studio | Dotazování, ladění a optimalizace DAX | daxstudio.org — předinstalován |
| AdventureWorks DW 2019 | Demo databáze pro všechna cvičení | SQL Server na kurzovním PC |
FactInternetSales— internetové prodeje (fakta)FactResellerSales— prodeje přes resellery (fakta)DimDate— dimenze datumů (kalendář)DimProduct— dimenze produktůDimCustomer— dimenze zákazníkůDimGeography— dimenze zeměpisné polohyDimSalesTerritory— obchodní území