Když jsem někdy kolem roku 2016 stál v bývalé firmě jako BI datový architekt před strategickým rozhodnutím, jestli pro nové BI řešení použí SQL Server Analysis Services v Multidimenzionálním provedení, nebo použít Tabular. Chyběly v té době v Tabularu některé funkce. Jako největší nedostatek jsem považoval nemožnost použít calculate skript pro výpočty uložené v dimenzi.
Tento nedostatek byl odbourán v SQL Serveru 2019 a máme je již nějakou dobu i v Power BI. Dříve bylo potřeba použít k jejich nastavení Tabular Editor, nyní je možno je spravovat přes modelové zobrazení v Power BI Desktopu.
Nejčastější scénář, byť ne jediný, kde se dají použít calculation groups jsou časové kalkulace.
Představte si, že máte v modelu 3 základní metriky
Výpočet předchozího roku pro Internetové prodeje by mohl vypadat následovně
Kdybychom chtěli pro tři vstupní metriky spočítat předchozí rok, měli bychom 3 počtítané členy. Když by bylo potřeba ještě variance proti předchozímu roku, varianci v % a kumulovaný souhrn, nastává explozivní nárůst počtu počítaných členů z bázových metrik. 3 vstupní a jejich 4 (LY,VLY,VLY%, YTD) časové variance a jsme hned na 15 measures v datovém modelu.
Tento problém jsme schopni elegantně vyřešit s calculation groups.
Přepneme se do model view
Vznikne nová počítaná položka, kterou pojmenuji Actual a bude se odkazovat na funkci SELECTEDMEASURE() která je takovým chameleonem podle toho, co je aktuálně vybrané v Power BI vizualizaci.
Nová počítaná položka pro výpočet předchozího roku se může odkazovat místo explicitního názvu measure právě na SELECTEDMEASURE(), jinak je syntaxe stejná. Procentuální variance s možností přepsat pro procenta format string
Následovně by mohl vypadat výstup s použitím calculation groups na sloupcích ve vizuálu Matrix. Dá se ale použít i jako Slicer a v podstatě všude možně.
Závěr
Calculation groups se dají použít kdekoliv, kde máte opakovatelný pattern, jen metrika se mění. Dalo by se přirovnat k počítané položce v Excelu, případně počítanému členu v SSAS Multidimenzional. Hezký a častý scénář jsou časové kalkulace. Nicméně tam použití Calculation Groups nekoknčí.Příště si ukážeme například jak řešit problém "defaultního membera".
Žádné komentáře:
Okomentovat