11. července 2024

Řešení problému Default membara

 V minulém článku jsem Vám (kdo jste ještě neznali) představil Calculation Groups http://www.neoral.cz/2024/07/calculation-groups.html

Na ty nyní navážeme s řešením dalšího problému. Některé faktové záznamy jsou verzovány a seskupování více verzí dohromady nedává smysl. V bývalé firmě (Dixons) například byl verzovaný plán. Na začátku roku plán od prvního do dvanáctého měsíce, po prvních 4 měsících zpřesněný plán 5-12. Po dalších 4 měsících třetí zpřesněná verze 8-12. Pokud byste porovnávali ve dvanáctém měsíci aktuál vs plán a neřešili verzi plánu, máte problém. 

V multidimenzionálních kostkách se tento problém dal řeši natavením tzv. default membera. V Power BI a Tabularu si můžeme opět pomoci Calculation Group. 

Nasimulujeme si opět nad demo databází Adventure Works DW

Souhrny přes produkt a přes časovou osu vypadají smysluplně, nicméně přes měnu to vypadá, že sčítáme jablka s hruškami. Internetové prodeje USD+AUD+... = 29milionů.
Chtěl bych zobrazit hodnoty pro všechny metriky v dané měně, pokud je měna vybraná, nebo pokud se jedná o souhrn vícero měn, zobrazit čísla v dolarech.

V model view přidám new calculation group. Tu přejmenuji jako Default currency a do Počítané položky Default currency napíši následující výraz

Počítanou položku poté stačí použít v sekci filter všech stránek a zaškrtnout.


Závěr

Ukázali jsme si další scénář využití calculation groups. Tentokrát pro nastavení defaultu pro neagregovatelné položky.


4. července 2024

Calculation Groups

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

Pravé tlačítko na calculation groups, vytvořit novou. Dostaneme varování před používáním implicitních measures (že se se sloupec sám sesumuje při zaškrtnutí číselného sloupečku, správně je používat measures pojmenované/explicitní definované v modelu).
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á. 

Variance proti předchozímu roku by mohla vypadat následovně.
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".