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
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.