SELECTEDMEASURE() w praktyce czyli co to są grupy obliczane w Power BI
Jeżeli jesteście uważnymi użytkownikami Power BI i śledzicie na bieżąco nowości, którymi Microsoft nas często rozpieszcza powinniście zauważyć, że w minionym roku pojawiła się nowa funkcjonalność pozwalająca dostosować sposób obliczania wartości, w zależności od tego, jaka miara jest aktualnie wybrana w raporcie. Jeżeli nie wiecie o czym mowa to także dobrze trafiliście, bo w tym artykule przybliżymy Wam czym są grupy obliczane w Power BI Desktop oraz w jakim celu, w ogóle mogą być one przydatne. Postaramy się także zaprzyjaźnić z funkcją języka DAX czyli SELECTEDMEASURE(), która działa tylko w kontekście grup obliczanych i jest przydatna w scenariuszach, gdy trzeba dynamicznie zmieniać sposób obliczeń na raporcie.
Jest to jedna z tych funkcjonalności, o których można powiedzieć, że dla niektórych użytkowników będzie zbawienna, natomiast dla innych może być mało przydatna. Wszystko zależy od tego co jest Twoim celem projektując raport i jego funkcjonalność.
Jeśli wolisz oglądać zamiast czytać, poniżej znajdziesz, krótkie wprowadzenie do tajników funkcji SELECTEDMEASURE() w DAX w formie wygodnego odcinka.
Wykorzystanie funkcji SELECTEDMEASURE() w Power BI niesie za sobą wiele korzyści dlatego zawsze warto znać wszystkie możliwości, które oferuje nasze narzędzie pracy. Ale do szczegółów tej funkcji wrócimy w odpowiednim czasie. Na samym początku zobaczmy o co to całe „zamieszanie”, które nam Microsoft zafundował w ostatnich miesiącach. Warto też wspomnieć w ramach ciekawostki, że dotychczas aby skorzystać z grup obliczanych należało utworzyć je w zewnętrznym narzędziu Tabular Editor i połączyć z modelem danych w Power BI Desktop co nie było zbyt wygodnym i eleganckim rozwiązaniem.
Przechodząc już do meritum to gdy pracujemy na modelu danych i wykorzystujemy możliwości DAX tworząc zaawansowane miary to wcześniej czy później będziemy potrzebowali wykonać szereg obliczeń porównawczych, mierzących wskaźniki wydajności czy innych obliczeń niezbędnych do procesu raportowania. Często te czynności są powtarzalne i tworzymy w modelu dziesiątki czy setki miar aby obsłużyć i zaprezentować na tabeli czy wykresie każdą zmienną w raporcie. Jeżeli taka sytuacja występuje także u Was to jest odpowiedni moment aby zapoznać się z grupami obliczanymi w Power BI Desktop.
Czas na przedstawienie pierwszego z dwóch bohaterów tego artykułu czyli Grup obliczanych.
Grupy obliczane znajdziemy w zakładce „Widok modelu” jak na poniższym obrazie.
Jeżeli na Waszej wersji nie ma takiej funkcjonalności to jak najszybciej należy zaktualizować wersję Power BI Desktop.
Grupy obliczana w Power BI to narzędzie, które pozwala wprowadzać dodatkowe obliczenia dla istniejących miar. Mówiąc prostym językiem będzie to takie pudełko do którego dopiszemy miary za pomocą funkcji SELECTEDMEASURE() – czyli drugiego bohatera artykułu😊 aby później odwoływać się do miary używanej w raporcie i wykonywać na niej operację czy filtrowanie. Ogromną korzyścią wykorzystania grup obliczanych jest uproszczenie zarządzania modelem i zmniejszenie obciążenia wizualizacji, ponieważ ograniczamy liczbę miar. Dzięki temu model jest bardziej wydajny i łatwiejszy w utrzymaniu.
Spróbujmy wymyślić jakiś przykładowy scenariusz i w praktyce wykorzystajmy tą funkcjonalność. Możliwości jest zapewne tysiące ale na potrzeby tego artykułu potrzebujemy dokonać analizy różnych wyliczeń w różnych wymiarach. Wyobraźmy sobie, że prowadzimy sprzedaż na trzech kontynentach (Europa, Ameryka Północna i Australia) i potrzebujemy wiedzieć jak ta sprzedaż, zyski czy koszty kształtują się na tych obszarach w poszczególnych kategoriach. Niezbędna nam też jest analiza porównująca dynamikę wzrostu czy spadku tych wymiarów w ujęciu kwartalnym. Nawet zastanawiając się co powinniśmy zrobić trudno nie pomyśleć, że czeka nas sporo pracy tworząc miary.
Mając jednak do dyspozycji grupy obliczane, możemy utworzyć taką grupę a w niej elementy obliczeniowe, które później posłużą nam do analiz w raporcie.
Pierwszą ważna informacją, o której nie można zapomnieć jest fakt, że funkcjonalność ta pracuje tylko na miarach jawnych czyli nie można skorzystać np. z kolumn obliczeniowych w modelu. Po kliknięciu w tworzenie grupy dostajemy taki komunikat informujący nas o tym.
Nie powinno to zniechęcić nikogo do dalszego poznawania tego narzędzia ponieważ dobrą praktyką w Power BI jest praca z miarami a nie z kolumnami z wielu powodów, o których już wspominaliśmy kilka razy w innych artykułach.
Utworzę więc dla przykładu kilka prostych miar obliczających Wartości sprzedaży, Koszty i Zyski.
$ Wartość sprzedaży = SUM(FactInternetSales[Wartość sprzedaży])
$ Koszt = SUM(FactInternetSales[Koszt])
$ Zysk = SUM(FactInternetSales[Zysk])
Kolejnym etapem naszej przygody z grupami będzie utworzenie właśnie grupy obliczanej więc przechodząc na widok modelu wybieramy opcję Grupa obliczana (zmieniam jej nazwę np. na Analizy obszarów) – taka nazwa będzie też widoczna na raporcie. Zwróćcie uwagę, że w grupie pojawił się także element obliczeniowy. Na tym etapie można powiedzieć, że to taka trochę miara, którą definiujemy w tym miejscu, a później wykorzystamy ją elastycznie na raporcie.
I tutaj czas wrócić do wspomnianej wcześniej funkcji SELECTEDMEASURE().
Dzięki funkcji SELECTEDMEASURE() można uprościć model danych, unikając potrzeby definiowania wielu podobnych miar. Zamiast tego można użyć jednej uniwersalnej logiki w grupach obliczanych. Użyje funkcji aby utworzyć nowe elementy obliczeniowe, w grupie o nazwie Analizy obszarów. Zaznaczyłem element obliczeniowy i wykorzystałem wspomniana funkcję w celu utworzenia pierwszego elementu obliczeniowego. Dla uproszczenia nazwałem go Wybrana miara jak poniżej:
1 Wybrana miara = SELECTEDMEASURE()
Następnie w podobny sposób używając języka DAX oraz zmiennych utworze kolejne elementy obliczeniowe w grupie o nazwie Analizy obszarów gdzie wyliczę wartości dla każdego kontynentu oraz analizę porównawczą QbQ %. Nieocenionym atutem na tym etapie będzie dobra znajomość języka DAX aby w prawidłowy sposób napisać kod, który później posłuży nam do analiz i wizualizacji.
Poniżej przykład dla kontynentu Europa.
Europa =
CALCULATE(
SELECTEDMEASURE(),
DimRegion[Kontynent] = "Europa"
)
Analiza porównawcza kwartałów w procentach – proszę zwrócić uwagę, że w tym miejscu należy także dokonać formatowania aby na raporcie wynik był wyświetlany w odpowiedni sposób. W tym przykładzie zastosowałem formatowanie procentowe z dwoma miejscami po przecinku.
% QbQ Europa =
var __Europa =
CALCULATE(
SELECTEDMEASURE(),
DimRegion[Kontynent] = "Europa"
)
var __PQ =
CALCULATE(
SELECTEDMEASURE(),
DimRegion[Kontynent] = "Europa",
DATEADD(DimDate[Date],-1,QUARTER)
)
var __Diff = __Europa - __PQ
var __out =
IF(
HASONEVALUE(DimDate[Kwartał]),
DIVIDE(__Diff,__PQ)
)
return
__out
Dokładnie w ten sam sposób utworzyłem kolejne elementy obliczeniowe wyliczające wartości dla pozostałych kontynentów dla tej grupy obliczanej.
Finalny wynik wyglądać będzie jak poniżej:
W ten sposób możemy w Power BI Desktop utworzyć grupy obliczane a w nich elementy obliczeniowe. Zobaczmy zatem na widoku raportu ich zastosowanie w praktyce.
Dla przykładu utworzyłem prostą macierz prezentującą te wszystkie dane. Na wierszach wykorzystałem interwał czasu w postaci roku i kwartału, na wartościach zastosowałem miarę, którą potrzebuje wyliczyć. Na kolumnach natomiast należy umieścić utworzoną grupę obliczaną. Całą resztą zajmie się za nas Power BI a będąc bardziej precyzyjnym funkcja SELECTEDMEASURE() i wyliczy te wszystkie obliczenia dla takiej miary, którą wykorzystamy na raporcie.
Gdybym potrzebował wyliczyć takie dane dla zysków lub kosztów nie muszę już tworzyć kolejnych miar tylko zamienię miarę na wartościach jak poniżej:
Można powiedzieć, że grupy obliczane znakomicie sprawdzą się gdy potrzebujemy wiele elastycznych wyliczeń. Efekt taki uzyskamy za pomocą tej funkcjonalności przy bardzo małym nakładzie naszej pracy.
Zanim przejdziemy do podsumowania warto zauważyć, że w tabeli, która powstaje w wyniku utworzenia grupy obliczanej jest kolumna z liczbą porządkową. Pozwoli ona dopasować kolejność ustawienia elementów obliczeniowych, w odpowiedniej kolejności.
Podsumowując wykorzystanie funkcji SELECTEDMEASURE() i grup obliczanych w Power BI niesie za sobą wiele korzyści, szczególnie w kontekście zaawansowanego modelowania danych i optymalizacji raportów. Jest dobrym wyborem do budowy dynamicznych, elastycznych i skalowalnych modeli danych. Pozwoli zredukować liczbę miar w modelu i uprościć zarządzanie raportem wprowadzając za ich pomocą bardziej zaawansowaną logikę obliczeniową i formatowanie zaoszczędzimy mnóstwo czasu, który możemy wykorzystać na wypicie dobrej kawy zastanawiać się co dalej z naszym raportem bo to z pewnością nie koniec ciekawych możliwości, które oferuje nam Power BI Desktop😊.
Warto śledzić nowości bo z każdym miesiącem pojawiają się nowe funkcjonalności, na które być może czekacie.