neoral.cz

Časové kalkulace v DAX problém otevřeného období

V květnu jsem měl na téma časových kalkulací přednášku na Techedu v Praze. Bohužel jsem s blogem prokrastinoval a dostávám se ke článku až nyní. Nicméně lepší pozdě, než nikdy :) Slíbil jsem, že na téma napíši související blog post. Samostatným časovým kalkulacím jsem se věnoval v následujícím článku http://www.neoral.cz/2015/06/powerpivot-dax-casove-funkce-1-cast.html Takže nyní přidám jen část o pokročilejších metodách. Konkrétně se bude jednat o práci s otevřeným obdobím. V následujícím blogu popíšu, jak se vypořádat s problémem, když se v čase mění den vůči kterému chci dělat meziroční srovnání.
Problém otevřeného období
Opět použiji datový model vytvořený nad datovým skladem Adventure Works. Soubor v Power Pivotu si můžete stáhnout zde: https://drive.google.com/open?id=0B9ZohZ1CALKZdTNxbTdKOE5XbTQ
Koukněme se na následující kontingenční tabulku
Internet sales je skutečnost, Internet LY minulý rok (last year), Internet VLY variance proti loňskému roku absolutní, hned vedle v procentech.
Rok 2008 je posledním rokem, který obsahuje data a neobsahuje data za kompletní rok. Dnes je 29.6 takže taky máme jen data za půl roku. No a je nesmysl na roční úrovni porovnávat uzavřený rok 2016 s půlkou roku 2017. Něco podobného právě dělá můj aktuální Excelový model.
Chtěl bych porovnávat jen proporciální část prodejů roku vztaženou ke dnešnímu dni.
V tabulce internet sales si můžu pomoci počítaným sloupcem, kde jednoduše skryji prodeje, které jsou po 29.6.
DAXový vzorec by vypadal následovně
=
IF (
   VALUE ( MID ( [OrderDateKey], 5, 2 ) ) > MONTH ( TODAY () )
       || (
           VALUE ( MID ( [OrderDateKey], 5, 2 ) ) = MONTH ( TODAY () )
               && VALUE ( RIGHT ( [OrderDateKey], 2 ) ) > DAY ( TODAY () )
       ),
   BLANK (),
   [SalesAmount]
)

OrderDateKey je datum ve formátu RRRRMMDD, funkcí mid řežu příslušnou část, kterou chci porovnat s měsícem/dnem z dneška.
Textově rozloženo VALUE ( MID ( [OrderDateKey], 5, 2 ) ) > MONTH ( TODAY () )
říká pokud je měsíc objednávky vyšší, než měsíc dnešního datumu
Nebo ||
(
           VALUE ( MID ( [OrderDateKey], 5, 2 ) ) = MONTH ( TODAY () ) –měsíc je stejný
               && VALUE ( RIGHT ( [OrderDateKey], 2 ) ) > DAY ( TODAY () ) – den v měsíci je větší
)
vrátit prázdnou buňku, jinak vrátit skutečnost.
Pokud nad tímto vytvořím měřítko Internet Sales TD (To date /ke dnešku) jako
=SUM(‘FactInternetSales’[Sales TD detail])
A příslušné variance které umístím do následující kontingenční tabulky dostanu následující výstup
Sekce 1 mi zobrazuje prodeje prodeje za celé uzavřené období.
Sekce 2 jsou prodeje po dnešek, tedy 29.6.
Sekce 3 variance proti předchozímu roku v absolutních číslech za celé uzavřené období (VLY) a srovnání po dnešek VLY TD. Zde je to právě velmi zajímavé. Když kouknete na rok 2008, je rozdíl, jestli -20160 proti loňsku (způsobeno, neúplným rokem 2008). Nebo srovnávám srovnatelné se srovnatelným a zjišťuji, že jsem vlastně 6,7 milionu v plusu za stejné období od ledna do konce června.
Sekce 4 stejná jako 3, ale vyjádřená v procentech. Místo toho, aby firma byla -0,2 procenta ve ztrátě, je vlastně 221% v plusu a to je hodně velký rozdíl :)
Závěr

Pro potřeby analýzy je nutno srovnávat srovnatelné se srovnatelným. Nikoliv celý minulý rok s aktuálním rokem otevřeným. Logika by se dala aplikovat i na nižší úrovně časové hierarchie jako kvartály, měsíce, týdny dokonce i dny. V dnešním článku jsem Vám ukázal jak by se dalo vypořádat s tímto problémem pomocí počítaného sloupce. Dalo by se to vyřešit i přímo v Measure. Šlo mi v tuto fázi ale hlavně o onu myšlenku :) Příště se vrhnu na jiný problém při práci s časem a sice proměnnost vzorce pro meziroční srovnání.

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