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í 4

Cvičení 4 — Time Intelligence

Vytvoření pokročilých měr pro analýzu časových řad a meziroční porovnání
⏱ ~25 minut🗂 Cíl: Zvládnout funkce TOTALYTD
📝
Na blogu Jiřího Neorala: Časové kalkulace v DAX problém otevřeného období — chyba otevřeného období v YTD kalkulacích — jak ji řešit
, SAMEPERIODLASTYEAR, DATESINPERIOD

Cíle cvičení

  • Vytvořit measures pro kumulativní agregace (YTD)
  • Porovnávat data z minulého roku (PY, YoY)
  • Pracovat s klouzavými okny dat (Rolling 3M)
  • Použít funkce TOTALYTD, SAMEPERIODLASTYEAR, DATESINPERIOD, PREVIOUSMONTH
  • Vytvořit a používat vlastní Date Table z DAX
⚠️ Předpoklad: DimDate
📝
Na blogu Jiřího Neorala: Kalendářová tabulka — jak vytvořit správnou Date Table — vše co potřebujete vědět
musí být označena jako Date Table z Cvičení 1. Pokud ne, vraťte se a označte ji.
1

Measure: Sales YTD (Year-to-Date)

ℹ️ Koncept: YTD (Year-to-Date) vrátí kumulativní součet od začátku roku do aktuálního data.
1
Otevřete soubor a přejděte do Model Pokud jste zavřeli soubor z předchozího cvičení, otevřete GOC644_cviceni.pbix.
2
Vytvořte míru "Sales YTD" V pásu karet klikněte na Nová míra. Zadejte:
DAX
[Sales YTD] =
TOTALYTD([Total Sales], DimDate[FullDateAlternateKey])
💡 Zobrazit nápovědu
TOTALYTD automaticky znalý aktuální rok (z kontextu) a sčítá hodnoty od 1. ledna do aktuálního data. Druhý parametr je sloupec data, kterou má funkce použít.
3
Ověřte míru Přejděte do Report a přidejte Card vizualizaci s [Sales YTD]. Měla by zobrazit kumulativní součet do dnešního dne (nebo poslední data v datech).
2

Measure: Sales PY (Předchozí rok)

ℹ️ Koncept: SAMEPERIODLASTYEAR posouvá data o rok zpět a vrátí součet za stejné období v minulém roce.
1
Vytvořte míru "Sales PY"
DAX
[Sales PY] =
CALCULATE(
    [Total Sales],
    SAMEPERIODLASTYEAR(DimDate[FullDateAlternateKey])
)
💡 Zobrazit nápovědu
SAMEPERIODLASTYEAR vezme aktuální filtr data a vrátí sama období z roku předešlého. Pokud jste v červenci 2023, vrátí červenec 2022 — SAMEPERIODLASTYEAR posouvá o přesně jeden rok zpět do stejného období.
2
Přidejte do vizualizace Přidejte [Sales PY] do Card nebo Table vizualizace. Měla by zobrazit součet prodejů za stejné období minulého roku.
3

Measure: Sales YoY % (Meziroční růst)

1
Vytvořte míru "Sales YoY %"
DAX
[Sales YoY %] =
VAR CurrentPeriod = [Total Sales]
VAR PriorPeriod = [Sales PY]
RETURN
    DIVIDE(CurrentPeriod - PriorPeriod, PriorPeriod, 0)
💡 Zobrazit nápovědu
Toto vypočítá (Aktuální - Minulý rok) / Minulý rok. Kladná hodnota = růst, záporná = pokles. Formátujte na Procento.
2
Přidejte do vizualizace a formátujte Přidejte [Sales YoY %] do vizualizace a nastavte formát na "Procento" (nebo "Desetinné číslo" s formátem 0,00%).
4

Measure: Sales Rolling 3M (Klouzavé 3 měsíce)

ℹ️ Koncept: Klouzavé součty agregují data za posledních N období (např. 3 měsíce) na základě aktuálního data.
1
Vytvořte míru "Sales Rolling 3M"
DAX
[Sales Rolling 3M] =
CALCULATE(
    [Total Sales],
    DATESINPERIOD(
        DimDate[FullDateAlternateKey],
        LASTDATE(DimDate[FullDateAlternateKey]),
        -3,
        MONTH
    )
)
💡 Zobrazit nápovědu
DATESINPERIOD vrátí řadu datumů od zadaného data na počet období nazpět. LASTDATE vrátí poslední datum v kontextu. -3 znamená 3 měsíce zpět.
2
Testujte v Line Chart Vytvořte Line Chart s měsíci na X-ose a [Sales Rolling 3M] jako hodnota. Měla by vám ukázat klouzavý součet prodejů za posledních 3 měsíce (hladší křivka než měsíční prodeje). Jde o rolling SUM, nikoliv průměr — každý bod reprezentuje celkové tržby za předcházející 3měsíční okno.
5

Measure: Sales PM (Předchozí měsíc)

1
Vytvořte míru "Sales PM"
DAX
[Sales PM] =
CALCULATE(
    [Total Sales],
    PREVIOUSMONTH(DimDate[FullDateAlternateKey])
)
💡 Zobrazit nápověuda
PREVIOUSMONTH vrátí všechna data z předchozího měsíce na základě aktuálního měsíce v kontextu.
2
Ověřte míru Přidejte [Sales PM] do Card. Měla by zobrazit součet prodejů z minulého měsíce.
6

Vytvoření Line Chart s čásovými řadami

1
Vytvořte Line Chart vizualizaci Z panelu Vizualizace přetáhněte Line Chart na Report stránku.
2
Nakonfigurujte osy
  • X-axis (Category): DimDate → Datum → FullDateAlternateKey (nebo měsíce/roky)
  • Y-axis (Values): [Total Sales], [Sales PY], [Sales YTD]
💡 Zobrazit nápovědu
Pokud chcete vidět trendy jasněji, vyberte měsíce místo jednotlivých datumů. V Datum hierarchii klikněte na měsíce.
3
Ověřte vizualizaci Měli byste vidět tři čáry:
  • Modrá čára = [Total Sales] (aktuální rok)
  • Oranžová čára = [Sales PY] (minulý rok, nižší)
  • Zelená čára = [Sales YTD] (rostoucí od začátku roku)
4
Uložte soubor Klikněte na Soubor > Uložit.
7

Bonus: Vlastní Date Table z DAX

💡 Pokud máte čas a chcete se naučit vytvořit date table dynamicky, zkuste to.
1
Vytvořte novou tabulku "DateTable" V pásu karet (Model view) klikněte na Nová tabulka. Do řádku vložte:
DAX
DateTable =
ADDCOLUMNS(
    CALENDAR(DATE(2010,1,1), DATE(2030,12,31)),
    "DateKey", YEAR([Date])*10000 + MONTH([Date])*100 + DAY([Date]),
    "Year", YEAR([Date]),
    "Month", MONTH([Date]),
    "Quarter", "Q" & QUARTER([Date]),
    "MonthName", FORMAT([Date], "MMMM"),
    "YearMonth", FORMAT([Date], "YYYY-MM")
)
💡 Zobrazit nápovědu
CALENDAR vytvoří řadu datumů od 1.1.2010 do 31.12.2030. ADDCOLUMNS přidá sloupce s rokem, měsícem, kvartálem atd. FORMAT formátuje data jako text.
2
Označte novou tabulku jako Date Table Klikněte pravým tlačítkem na DateTable a vyberte Označit jako tabulku data. Vyberte sloupec "Date".
3
Vytvořte relaci na FactInternetSales Klikněte a přetáhněte FactInternetSales[OrderDateKey] na DateTable[DateKey]. Vytvořte relaci.
⚠️
Důležité: OrderDateKey je celé číslo (formát YYYYMMDD, např. 20130101). DateTable[Date] je typ Date — tyto typy jsou navzájem nekompatibilní pro vytvoření relace. Proto jsme do DateTable přidali sloupec DateKey jako celé číslo (YEAR*10000 + MONTH*100 + DAY) a relaci tvoříme přes DateKey ↔ OrderDateKey, nikoliv přes Date ↔ OrderDateKey.
4
Otestujte nový date table Vytvořte Matrix vizualizaci s novým DateTable sloupci (Year, MonthName) a vašimi measures. Měla by fungovat stejně jako původní DimDate.
✓ Úspěšně jste dokončili Cvičení 4 (a celý kurz!), pokud: Máte všechny time intelligence measures vytvořené, vidíte je v Report vizualizacích, a Line Chart zobrazuje správné trendy.
💡 Konec kurzu: Gratulujeme! Prošli jste všemi čtyřmi cvičeními a naučili se základy datového modelování a DAX v Power BI. Pokud chcete pokračovat, prozkoumejte pokročilé témata jako RLS, drills, nebo Power BI service publikování.