neoral.cz

Kalendářová tabulka

Na prakticky každém školení Power BI a na reálných projektech používám tabulku s kalendářem. Důvodů je několik. Automaticky generované hierarchie ve faktových tabulkách jsou neuvěřitelnými žrouty paměti a nelze je použít, pokud chci analyzovat data alespoň ze dvou faktových tabulek. Potřebuji společnou dimenzi, tedy kalendář. Stejně tak je tabulka s kalendářem prerekvizitou pro funkce Time Intelligence.

Kalendářová tabulka se dá vygenerovat mnoha způsoby. Možná ji máte už ve svém datovém skladu, dá se vygenerovat přes Power Query a také jako počítaná tabulka pomocí jazyka DAX. Pro koncové uživatele mi přijde jednodušší generování přes DAX díky podobnosti syntaxe počítaných sloupců s Excelovými vzorci. Jako inspiraci, co by takový kalendář mohl obsahovat, přikládám skripty na konci článku.

Nechtělo se mi ale psát něco, co už jsem dělal mnohokrát, tak jsem se rozhodl využít Copilota. Mám na mysli Copilota ve Windows, nikoliv Copilota v Power BI, který je aktuálně dostupný pouze pro rezervované kapacity MS Fabric F64 a vyšší.

Pokud tedy chcete jen finální kalendář, skočte na konec stránky. Pokud se chcete podívat na konverzaci, přeji příjemné čtení!






Finální kalendář česky

Kalendář = 
VAR _CurrentYear = YEAR(TODAY())
VAR _StartDate = DATE(_CurrentYear - 2, 1, 1)
VAR _EndDate = DATE(_CurrentYear, 12, 31)
RETURN
ADDCOLUMNS (
    CALENDAR(_StartDate, _EndDate),
    "Rok", YEAR([Date]),
    "Kvartal", "Q" & FORMAT([Date], "Q"),
    "MesicCislo", MONTH([Date]),
    "MesicNazev", FORMAT([Date], "MMMM", "cs-CZ"),
    "PoradiDneVTydnu", WEEKDAY([Date], 2),
    "CisloTydne", WEEKNUM([Date], 21),
    "RelativniRok", YEAR([Date]) - YEAR(TODAY()),
    "RelativniKvartal", (YEAR([Date]) - YEAR(TODAY())) * 4 + QUARTER([Date]) - QUARTER(TODAY()),
    "RelativniMesic", (YEAR([Date]) - YEAR(TODAY())) * 12 + MONTH([Date]) - MONTH(TODAY()),
    "RelativniTyden", DATEDIFF(TODAY(), [Date], WEEK),
    "RelativniDen", DATEDIFF(TODAY(), [Date], DAY),
    "JeVikend", IF(WEEKDAY([Date], 2) > 5, TRUE(), FALSE())
)


A anglicky

Calendar = 
VAR _CurrentYear = YEAR(TODAY())
VAR _StartDate = DATE(_CurrentYear - 2, 1, 1)
VAR _EndDate = DATE(_CurrentYear, 12, 31)
RETURN
ADDCOLUMNS (
    CALENDAR(_StartDate, _EndDate),
    "Year", YEAR([Date]),
    "Quarter", "Q" & FORMAT([Date], "Q"),
    "MonthNumber", MONTH([Date]),
    "MonthName", FORMAT([Date], "MMMM"),
    "DayOfWeek", WEEKDAY([Date], 2),
    "WeekNumber", WEEKNUM([Date], 21),
    "RelativeYear", YEAR([Date]) - YEAR(TODAY()),
    "RelativeQuarter", (YEAR([Date]) - YEAR(TODAY())) * 4 + QUARTER([Date]) - QUARTER(TODAY()),
    "RelativeMonth", (YEAR([Date]) - YEAR(TODAY())) * 12 + MONTH([Date]) - MONTH(TODAY()),
    "RelativeWeek", DATEDIFF(TODAY(), [Date], WEEK),
    "RelativeDay", DATEDIFF(TODAY(), [Date], DAY),
    "IsWeekend", IF(WEEKDAY([Date], 2) > 5, TRUE(), FALSE())
)

Závěr

Kalendářová tabulka se používá prakticky ve všech datových modelech. Jednou z variant, jak k ní dojít, je generování s použitím jazyka DAX. Proč ale objevovat kolo? Stačí zkopírovat hotový skript a ten případně doupravit. Dá se též využít generativní AI, pokud dokážete dobře popsat, co chcete. Kalendář není kompletní, ale obsahuje základní informace. Zadání by se dalo komplikovat například o státní svátky. Ty bych implementoval tabulkou se seznamem svátků a dohledával funkcí LOOKUPVALUE. Musím říct, že si Copilot poradil s generováním kalendáře docela dobře. Dobrá práce.

Další v tématu Power BI

Power BI

Zlo dostalo jméno Auto date/time intelligence

Kdybych měl dostat pětikorunu za každý případ, kdy jsem na tento nešvar upozornil, pravděpodobně bych nezbohatl. Bylo by to ale minimálně na solidní párty. Proto jsem se rozhodl zvěčnit své myšlenky v…

Power BI

Podmíněný formát s visual calculations

V minulém článku jsem psal o Visual Calculations a probral některé scénáře, kdy mohou být užitečné. Pro opakovaně použitelné výpočty v rámci modelu budou většinou výhodnější measures . Psát však measure do…

Power BI

Visual Calculations

Jednou z nejzajímavějších novinek, které v poslední době přibyly do Power BI, jsou Visual Calculations . O co se jedná? Jak už název napovídá, jde o výpočty prováděné přímo na úrovni vizualizace.…