Power BI wyposażony jest w mechanizm parametrów o którym miałem już okazję pisać w ramach niniejszego bloga. Parametry te związane są raczej z fazą ładowania danych niż z ich kalkulacją/wyświetleniem na raporcie. Jednakże część z Was zapewne zauważyła na wstążce Power BI Desktop przycisk “New Parameter” w sekcji What If. Do czego to służy i jak w ogóle tego użyć? Postaram się to przedstawić w niniejszym wpisie.
Na samym wstępie powiedzmy sobie czym tak naprawdę jest analiza What-If. Pod kątem raportowania czy też analizy jest to nic innego jak wizualizowanie/obliczanie określonego miernika na podstawie jakiejś formuły, której jeden bądź wiele składników jest zmienną ustawianą na bieżąco przez użytkownika. Brzmi skomplikowanie? W rzeczywistości z całą pewnością nie jest! W naszym przykładzie bardzo uprościmy cały scenariusz i przedstawimy sobie wyniki sprzedaży przy założeniu 10% wzrostu sprzedaży miesiąc do miesiąca.
W celach demonstracyjnych dodałem do mojego modelu testowego standardową “gwiazdę” pochodzącą z AdventureWorksDW:
Wartość sprzedaży znajduje się w kolumnie FactInternetSales[SalesAmount] i dlatego też utworzymy sobie prostą miarę agregującą tą kolumnę funkcją SUM:
Sales Amount = SUM(FactInternetSales[SalesAmount])
Aby zobrazować tą wartość na przestrzeni czasu użyjemy wykresu liniowego (na osi X znajduje się DimDate[FullDateAlternateKey]):
Drugą linią na wykresie ma być wspomniana planowana wartość sprzedaży tak abyśmy mogli porównać plan do wykonania. Miara dla naszego planu przedstawia się następująco:
Planned Sales Amount = CALCULATE ( SUM ( FactInternetSales[SalesAmount] ); PARALLELPERIOD ( 'DimDate'[FullDateAlternateKey]; -1; MONTH ) ) * 1.10
Jak możecie zauważyć w definicji powyższej miary przemnożyłem wartość razy 1.10 czyli “na sztywno” zaszyłem wzrost 10%. Poniżej możecie zauważyć wykres jaki udało mi się otrzymać po dodaniu powyższej miary:
Wszystko wygląda w porządku, ale co tak naprawdę się stanie w momencie jak planowana wzrost zmieni się z 10% na np. 8? Przy zastosowaniu sztywnej miary będziemy musieli edytować miarę co nie jest dla nas najszczęśliwszym wyborem. Sytuacja staje się jeszcze gorsza w sytuacji gdy użytkownik raportu chce na bieżąco zmieniać wartość przyrostu. W takich sytuacjach pomaga nam właśnie bohater dzisiejszego wpisu czyli parametr What-If, który w gruncie rzeczy jest standardowym parametrem “opakowanym” w specjalny szablon o czym za chwilę się przekonacie. Aby go stworzyć na wstążce na zakładce Modelling musimy znaleźć:
Okno definiowania parametru wygląda następująco:
Nie ma w tym oknie nic szczególnego i wszystko wydaje się intuicyjne, jednakże mimo wszystko wytłumaczmy sobie co widzimy mamy do skonfigurowania:
- Name – nazwa parametru,
- Data type – typ danych,
- Minimum – minimalna wartość jaką może przyjąć parametr,
- Maximum – maksymalna wartość jaką może przyjąć parametr,
- Increment – o jaką wartość może się zwiększać parametr.
- Default – domyślna wartość,
- Add slicer to this page – po zaznaczeniu tej opcji slicer zostanie dodany do naszego raportu.
Po kliknięciu OK do naszej strony zostanie dodany slicer, który będzie zmieniał wartość parametru. Po przełączeniu się na widok danych zauważymy, że stworzona została dla nas tabela wyliczana o nazwie naszego parametru. Do tej stworzenia wykorzystana została funkcja GENERATESERIES z parametrami, które zdefiniowaliśmy w oknie parametru. W moim przypadku przedstawia się ona następująco:
PlannedIncrease = GENERATESERIES(0; 1; 0.01)
Ze względu na fakt, że skonfigurowaliśmy wartości parametru jako Decimal, możemy zmienić format na procentowy z brakiem liczb po przecinku, dzięki czemu slicer będzie wyglądał nieco lepiej:
Warto zdawać sobie z tego sprawę, że aby zmienić wygenerowany przez nas parametr w gruncie rzeczy musimy zmienić znajdującą się pod nim tabelę. Oprócz samej tabeli powstała miara, która wybiera z tabeli aktualnie wybraną na slicerze wartość:
PlannedIncrease Value = SELECTEDVALUE(PlannedIncrease[PlannedIncrease]; 1)
Teraz aby móc użyć parametru nie pozostaje nic innego jak podmienić sztywny zapis w naszej mierze z planowaną wartością sprzedaży na miarę:
Planned Sales Amount = CALCULATE ( SUM ( FactInternetSales[SalesAmount] ); PARALLELPERIOD ( 'DimDate'[FullDateAlternateKey]; -1; MONTH ) ) * ( 1 + PlannedIncrease[PlannedIncrease Value] )
Rezultat naszych zmian prezentuje się następująco:
Całkiem prosta w implementacji i fajna w użyciu technika. W tym miejscu może pojawić się pytanie czy czegoś takiego nie można było stworzyć “na piechotę” bez użycia What-If? Odpowiedź jest brzmi TAK, można i nie będzie to wiązało się z jakąś większą trudnością w implementacji, jeżeli jednak mamy przygotowany szablon to dlaczego z niego nie skorzystać. Przedstawiony przypadek był oczywiście dużym uproszczeniem jednakże myślę, że w odpowiedni sposób przedstawia ideę stojącą za analizą tego typu i jej implementacją w Power BI. Miara bazowa na którą ma mieć wpływ na nasz parametr może być dowolnie skomplikowana ważne żebyśmy wiedzieli jak wpleść do środka nieco dynamizmu. Mam nadzieję, że artykuł przypadł Wam do gustu i okazał się pomocny.
- Avoiding Issues: Monitoring Query Pushdowns in Databricks Federated Queries - October 27, 2024
- Microsoft Fabric: Using Workspace Identity for Authentication - September 25, 2024
- Executing SQL queries from Azure DevOps using Service Connection credentials - August 28, 2024
This can make reports so much more interactive. I really like the power of Power BI.
You are right, PBI is getting more and more mature:)