GOC644 — DAX základy (2 dny)
1. Úvod do Power BI 2. Datový model 3. Úvod do DAX 4. Oblasti použití DAX 5. Kontext výpočtu 6. Časová inteligence 7. Optimalizace DAX 8. Row Level Security 9. Nástroje
GOC6441 — Pokročilý DAX (2 dny)
1. Opakování & přehled 2. Dynamické reporty 3. DAX jako dotazovací jazyk 4. VertiPaq engine 5. Ladění výkonu 6. Composite Models 7. Workshop
Cvičení
1. Datový model 2. DAX základy 3. Kontext výpočtu 4. Časová inteligence
🏠 Rozcestník kurzů
GOC644 · Cvičení 2

Cvičení 2 — Základní DAX: Calculated Columns a Measures

Vytvořte své první DAX výrazy — sloupce a míry pro analýzu
⏱ ~25 minut🗂 Cíl: Zvládnout calculated columns a basic measures

Cíle cvičení

  • Vytvořit calculated columns v datovém modelu
  • Pochopit rozdíl mezi Calculated Column a Measure
  • Napsat jednoduché DAX výrazy s funkcemi SUM, DIVIDE, COUNTROWS
  • Organizovat measures do logických skupin
  • Ověřit measures v Report zobrazení
1

Calculated Column: Profit

1
Otevřete soubor GOC644_cviceni.pbix z Cvičení 1 Pokud jste jej již zavřeli, otevřete jej pomocí Soubor > Otevřít.
2
Přejděte do zobrazení Data V levém panelu klikněte na ikonu Data (vypadá jako tabulka).
3
Vyberte tabulku FactInternetSales V levém panelu klikněte na FactInternetSales.
4
Vytvořte nový calculated column "Profit" V pásu karet (Home) klikněte na Nový sloupec. Do pole "Sloupec" zadejte:
DAX
Profit = FactInternetSales[SalesAmount] - FactInternetSales[TotalProductCost]
💡 Zobrazit nápovědu
Zkopírujte text výše, klikněte do pole formule a vložte. Poté stiskněte Enter. Sloupec se přidá na konec tabulky FactInternetSales.
5
Ověřte vytvoření sloupce Měli byste vidět nový sloupec "Profit" v tabulce FactInternetSales s vypočtenými hodnotami (rozdíl mezi SalesAmount a TotalProductCost).
2

Calculated Column: PriceBand

1
Vytvořte nový calculated column "PriceBand" V pásu karet klikněte na Nový sloupec. Zadejte:
DAX
PriceBand =
SWITCH(
    TRUE(),
    FactInternetSales[UnitPrice] < 100, "Nízká",
    FactInternetSales[UnitPrice] < 500, "Střední",
    "Vysoká"
)
💡 Zobrazit nápovědu
SWITCH funkce zde porovnává jednotkovou cenu a přiřazuje kategorii. Hodnoty jsou: < 100 = "Nízká", < 500 = "Střední", ostatní = "Vysoká".
2
Ověřte, že sloupec obsahuje tři kategorie Scrollujte v tabulce a ověřte, že se zobrazují hodnoty "Nízká", "Střední" a "Vysoká" podle jednotkové ceny.
3

Calculated Column: CustomerFullName

1
Přepněte na tabulku DimCustomer V levém panelu klikněte na DimCustomer.
2
Vytvořte calculated column "CustomerFullName" V pásu karet klikněte na Nový sloupec. Zadejte:
DAX
CustomerFullName = DimCustomer[FirstName] & " " & DimCustomer[LastName]
💡 Zobrazit nápověda
Operátor & (ampersand) v DAX spojuje textové řetězce. Vytváří celé jméno zákazníka kombinací křestního a příjmení.
3
Ověřte vytvořené jméno Měli byste vidět celá jména zákazníků ve formátu "Jméno Příjmení".
4

Vytvoření Measures Složky

ℹ️ Poznámka: Measures jsou na rozdíl od Calculated Columns vypočítány v čase query (runtime), ne při načtení. Jsou ideální pro agregace.
⚠️
Context transition v calculated columns: Pokud v calculated column použijete CALCULATE(), DAX vytvoří context transition — row context se převede na filter context. To znamená, že agregace (SUM, COUNTROWS…) pracují přes celou tabulku filtrovanou aktuálním řádkem, ne jen s hodnotami aktuálního řádku. Context transition v calculated columns není chyba — je to záměrné chování CALCULATE(), ale je třeba jej mít vědomě pod kontrolou.
1
Přejděte do zobrazení Model V levém panelu klikněte na ikonu Model.
2
Vytvořte novou tabulku pro measures V pásu karet klikněte na Domů > Zadejte data. V dialogu vytvořte prázdnou tabulku s jedním sloupcem a pojmenujte jej "Measures". Stiskněte Enter a pak Zatvorte.
💡 Zobrazit nápovědu
Alternativně: Klikněte na FactInternetSales, v pásu karet vyberte Nová míra (New Measure), která se pak vytvoří přímo v tabulce FactInternetSales. Obě metody jsou validní.
3
Přejmenujte novou tabulku na "Measures" Klikněte pravým tlačítkem na novou tabulku a vyberte Přejmenovat.
5

Vytvoření Základních Measures

1
Vytvořte measure "Total Sales" V pásu karet vyberte Nová míra (New Measure). V editoru formule zadejte:
DAX
Total Sales = SUM(FactInternetSales[SalesAmount])
2
Vytvořte measure "Total Orders" Vytvořte novou míru:
DAX
Total Orders = COUNTROWS(FactInternetSales)
💡 Zobrazit nápovědu
COUNTROWS počítá počet řádků v tabulce. COUNTA by počítala neprázdné buňky v sloupci, COUNTROWS se lépe hodí pro počet objednávek.
3
Vytvořte measure "Average Order Value"
DAX
Average Order Value = DIVIDE([Total Sales], [Total Orders])
💡 Zobrazit nápovědu
DIVIDE funkce bezpečně dělí dvě hodnoty. Pokud je dělitel 0, vrací prázdnou hodnotu místo chyby. Notace [Total Sales] odkazuje na dříve definovanou míru.
4
Vytvořte measure "Total Discount"
DAX
Total Discount = SUM(FactInternetSales[DiscountAmount])
5
Vytvořte measure "Total Profit"
DAX
Total Profit = SUM(FactInternetSales[Profit])
6
Vytvořte measure "Profit Margin %"
DAX
Profit Margin % = DIVIDE([Total Profit], [Total Sales], 0)
💡 Zobrazit nápovědu
Třetí parametr v DIVIDE (0) je "alternativní hodnota", která se vrací, pokud je dělitel 0. Zde vrátíme 0 místo prázdné hodnoty.
6

Ověření Measures v Report

1
Přejděte do zobrazení Report V levém panelu klikněte na ikonu Report.
2
Přidejte Card vizualizaci pro Total Sales Z panelu Vizualizace vlevo přetáhněte Card na stránku. Z podokna Pole v sekci Measures přetáhněte [Total Sales] do oblasti Value karty.
💡 Zobrazit nápověuda
Měla by se zobrazit hodnota součtu prodejů (např. ~12 milionů). Pokud se nezobrazuje, ověřte, že jste vytvořili míru správně.
3
Přidejte Table vizualizaci pro všechny measures Přetáhněte Table vizualizaci na stránku. Do Values přetáhněte všech 6 measures:
  • [Total Sales]
  • [Total Orders]
  • [Average Order Value]
  • [Total Discount]
  • [Total Profit]
  • [Profit Margin %]
✓ Měli byste vidět tabulku s jedním řádkem obsahujícím všechny vypočtené agregace.
4
Formátujte měny a procenta Pro měny: Vyberte measure v tabulce, v panelu Formátování (napravo) nastavte na "Měna". Pro [Profit Margin %] nastavte na "Procento".
5
Uložte soubor Klikněte na Soubor > Uložit.
7

Bonus: Conditional Measure (Sales Category)

💡 Toto je pokročilejší příklad. Pokud máte čas, zkuste ho vytvořit.
1
Vytvořte measure "Sales Category"
DAX
Sales Category =
SWITCH(
    TRUE(),
    [Total Sales] > 1000000, "Vysoké",
    [Total Sales] > 500000, "Střední",
    "Nízké"
)
2
Přidejte ji do vaší Table vizualizace Přetáhněte [Sales Category] do Values vaší tabulky. Měla by zobrazit jednu z kategorií ("Vysoké", "Střední" nebo "Nízké") na základě celkového prodeje.
✓ Úspěšně jste dokončili Cvičení 2, pokud: Máte 6+ measures vytvořených, vidíte je v Report vizualizacích, a tabulka zobrazuje všechny vypočtené hodnoty.