Plánovacie týždne a práca s nimi v jazyku DAX (Power BI, PowerPivot)

Pri práci s kalendárnymi týždňami máme častokrát problém, ako vykazovať ukazovatele na prelome rokov. Takmer nikdy nespadne začiatok týždňa na začiatok roka, a štatistika za takéto týždne sa rozdelí do 2 rokov. Ako štandardné riešenie sa namiesto toho používa vykazovanie, kde použijeme plánovacie týždne a roky, ktoré týmto neduhom netrpia. A na to sa teraz pozrieme podrobnejšie. Na demonštráciu opäť použijeme náš vzorový súbor Power BI, resp. PowerPivotu. Vytvoríme si kontingenčnú tabuľku, kde: do oblasti hodnôt dáme merítko Obrat z tabuľky Objednávky, do oblasti riadkov dáme stĺpce CalendarYear, WeekNumberOfYear a DateKey. To nám vytvorí kontingenčku, kde budeme mať zobrazené obraty po rokoch, týždňoch a dátumoch. Keď si kontingenčku rozklikneme na prelom rokov 2001 a 2002, až na dátumy, tak to bude vyzerať takto: Poznámka: naša vzorová databáza má predpočítané čísla týždňov podľa amerických týždňov, ktoré začínajú v nedeľu, a nie v pondelok. Dátum 30.12.2001 je nedeľa. Tam vidíte hlavný problém vykazovania po týždňoch. Keďže sme použili kalendárne týždne, predpočítané v stĺpci WeekNumberOfYear, tak sa nám štatistika za ten týždeň na prelome rokov rozdelila do oboch rokov, podľa toho v ktorom roku bol daný dátum. Keď však potrebujeme vykazovať po týždňoch, tak údaje z jedného týždňa potrebujeme mať úplne nečakane v jednom týždni pokope. Aby sme napríklad vedeli porovnať susedné týždne, či vykonať iné výpočty po týždňoch. Väčšina ľudí to rieši tak, že oželie presnú štatistiku na prelome rokov. Veď vo väčšine firiem predsa nie je veľa aktivity počas koncoročných sviatkov, takže sa to nejako zakecá a po sviatkoch pokračuje život ďalej. Čo však, keď práve naša firma je jedna z tých, ktorá má vysokú aktivitu, ak nie najvyššiu počas roka, práve počas prelomu rokov? Ako napríklad e-shopy, hotely, banky či logistika? V tom prípade to musíme spraviť poriadne. Riešenie je celkom jednoduché. Stačí použiť plánovacie týždne podľa ISO normy ISO8601, ktorá bola vytvorená ako štandardizované riešenie tohto problému. Podľa tejto normy sa počítajú a priraďujú čísla týždňov k jednotlivým dátumom tak, aby každý jeden týždeň mal vždy 7 dní, a zároveň patril vždy do jedného roka. To je zabezpečené pomocou pravidla, že ak 1. január spadá na pondelok až štvrtok, tak spadá do 1. plánovacieho týždňa v roku. Ak spadá na piatok až nedeľu, tak patrí do posledného plánovacieho týždňa predchádzajúceho plánovacieho roka. Podobne sú odvodené aj čísla plánovacích rokov. Konkrétny výpočet si tu nebudeme ukazovať, pretože ho nájdete v našej ultimátnej časovej tabuľke pre Power Query. Tam sú už vypočítané stĺpce Rok ISO a Týždeň ISO, kde sú pre každý deň v analyzovanej histórii predpočítané čísla príslušných plánovacích rokov a týždňov. Takže si už iba stačí pridať takúto tabuľku cez Power Query, upravenú na roky v našich dátach (v tomto prípade 2001 2004), a v dátovom modeli ju prepojiť cez dátumový stĺpec na hlavnú tabuľku s transakciami. V našom prípade túto tabuľku nazveme UCT a prepojíme ju cez stĺpec Dátum na tabuľku Objednávky na stĺpec SaleDateKey. Potom stačí už len poskladať novú kontingenčku takýmto spôsobom: do oblasti hodnôt dáme merítko Obrat z tabuľky Objednávky, do oblasti riadkov dáme stĺpce Rok ISO, Týždeň ISO a Dátum z tabuľky UCT. To nám opäť vytvorí kontingenčku, kde budeme mať zobrazené obraty po rokoch, týždňoch a dátumoch. Tentokrát však po plánovacích rokoch a týždňoch namiesto kalendárnych. Keď si kontingenčku rozklikneme na prelom rokov 2001 a 2002, až na dátumy, tak to bude vyzerať takto: Tam už vidíte, že každý týždeň má presne 7 dní. Dátum 31.12.2001 (pondelok) spadá podľa hore uvedených pravidiel do plánovacieho roku 2002. A najmä nemáme rozbitý jeden týždeň na zopár dní v roku 2001 a zvyšok v roku 2002. Takto sa robí následné vykazovanie po týždňoch úplne jednoducho. Takisto ako aj následné výpočty, ako napríklad porovnanie týždňa s rovnakým týždňom pred rokom: Obrat pred rokom = CALCULATE([Obrat], UCT[Rok ISO] = SELECTEDVALUE(UCT[Rok ISO]) - 1) Čo nám dá takýto výsledok: Takto teda viete vyriešiť problém s celistvosťou týždňov na prelome rokov. Riešením sú plánovacie týždne podľa ISO normy. Takto už nemusíte riešiť problém so štatistikou po týždňoch na prelome rokov. Plánovacie týždne to poľahky vyriešia za vás. Príspevok Plánovacie týždne a práca s nimi v jazyku DAX (Power BI, PowerPivot) zobrazený najskôr PowerPivot.sk - Ultimátna analýza dát v Exceli a Power BI.

prejsť na článok

Pozvánka na webinár Čo ste nevedeli o Power Query a jazyku M

Power Query skrýva rôzne záhady a zaujímavosti. Niekedy aj tie najjednoduchšie veci fungujú úplne inak, ako sme si mysleli. Inokedy nám zasa lepšie znalosti umožnia spraviť tú istú úlohu rýchlejšie alebo jednoduchšie. Power Query toho skrýva mnoho, a je n

prejsť na článok

Chystá sa kniha o Power Query a jazyku M

Koncom minulého roka som sa odhodlal napísať ďalšiu knihu. Po dlhom rozhodovaní padla voľba na Power Query. Následne som využil dlhé zimné večery, a neskôr neplánovane aj tie kratšie jarné, a po takmer 6 mesiacoch práce na knihe môžem konečne oznámiť, že

prejsť na článok

Pozvánka na webinár Časová analýza v Power BI s jazykom DAX

Analýza údajov naprieč časom je jedna z najčastejších činností pri reportingu v Power BI aj Exceli. Aj preto som pre Vás pripravil webinár o časovej analýze v Power BI a excelovskom PowerPivote. Na tomto webinári si ukážeme, ako vám vedia rôzne nástroje

prejsť na článok

Pozvánka na webinár Pokročilá vizualizácia dát v Power BI

Ste si istí, že zo svojich vizualizácií v Power BI dostávate maximum aj po vizuálnej stránke? V spojení s jazykom DAX a vhodným dátovým modelovaním z nich viete dostať oveľa viac, ako bežne uvidíte v reportoch. A na tomto webinári si ukážeme, ako na to.

prejsť na článok

Pozvánka na webinár Príprava dát v Power Query s pomocou jazyka M

Power Query v Power BI či Exceli vykonáva všetky transformácie dát a výpočty pomocou jazyka M. Mnoho ľudí však odradzuje jeho relatívna komplikovanosť či spleť rôznych zátvoriek, a preto svoju prácu v Power Query obmedzujú len na použitie tlačítok a jedno

prejsť na článok