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í
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
musí být označena jako Date Table z Cvičení 1. Pokud ne, vraťte se a označte ji.
Na blogu Jiřího Neorala: Kalendářová tabulka — jak vytvořit správnou Date Table — vše co potřebujete vědět
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í.