Część z Was pamięta zapewne narzędzie raportowe czy też technologię o dźwięcznej nazwie Power View. Na samym początku była ona związana z Power Pivot for Sharepoint, by następnie przenieść się do Excela gdzie pozostaje po dziś dzień. Narzędzie to mimo, że dawało pewne możliwości to miało również szereg różnego rodzaju ograniczeń w tym również jeśli chodzi o interakcję pomiędzy wizualizacjami, która była bardzo uboga. Warstwa wizualizacji Power BI jest z całą pewnością spadkobiercą wspomnianego narzędzia, czy problemy pierwowzoru zostały rozwiązane? Z całą pewnością tak! Obecnie mamy kilka możliwości filtracji pomiędzy poszczególnymi stronami raportu i o nich chciałbym dziś napisać parę słów. Jak zawsze zapraszam serdecznie do lektury.
Power BI z pudełka posiada kilka funkcjonalności pozwalających filtrować dane. Możemy do nich zaliczyć wizualizacje same w sobie, slicery, panel filtrów oraz akcje DRILLTHROUGH. Możemy poszerzyć tą listę o kilka dodatkowych opcji, jednakże my skupimy się tylko na wybranych pozwalających przesyłać filtr pomiędzy stronami raportu. Zbiór testowy to tradycyjnie WideWorldImportersDW do którego będziemy łączyć się technologią Direct Query (czyli po prostu będziemy odpytywać bazę zamiast ładować dane do Power BI).
Na ten moment nasz raport składa się z dwóch zakładek – pierwsza z nich to “Overview”:
Druga z kolei to “Details” zawierająca tabelę oraz trzy slicery:
Naszym zadaniem jest przesłanie filtracji z “Overview” do “Details”. Na pierwszy ogień powiemy sobie jak coś takiego skonstruować przy pomocy akcji drillthrough.
Przechodząc do meritum zaznaczmy naszą tabelę z danymi na zakładce Details. We właściwościach w sekcji Fields powinniśmy znaleźć miejsce nazwane Drillthrough filters. Właśnie to miejsce nas bardzo interesuje gdyż właśnie tutaj możemy przeciągnąć te pola, po których chcemy aby nasza tabela była filtrowana poprzez akcję. W niniejszym przykładzie tym przykładzie użyłem do tego celu następujących pól: Dimension Date[Calendar Year], Dimension City[Sales Territory] oraz Dimension Employee[Is Salesperson]. Rezultat tych działań możecie zauważyć na poniższym zrzucie ekranowym:
Co nam to tak naprawdę dało? Jedyną widoczną na pierwszy rzut oka różnicą, jest występowanie na polu raportu małego ledwo widocznego obrazka przedstawiającego strzałkę, który możemy oczywiście przenieść w dowolne miejsce na raporcie:
Przejdźmy teraz na stronę “Overview” i tam na dowolnej wartości kliknijmy prawym przyciskiem myszy. Jeśli wybrana wartość jest częścią wizualizacji zawierającej jedno z pól, które wybraliśmy jako filtr drillthrough, to powinniśmy mieć w menu kontekstowym taką właśnie możliwość.
Po kliknięciu zostaniemy przeniesieni na stronę szczegółów, która z kolei została przefiltrowana przez rok 2014 bo właśnie na wartość z tego roku kliknęliśmy ( to że filtr zadziałał możemy zauważyć chociażby patrząc na slicer z polem Calendar Year):
Strzałka o której mowa pozwala na powrót do strony, która nas tutaj przekierowała. Aby powrócić wystarczy przytrzymać CTRL i w nią po prostu kliknąć (na portalu przytrzymanie CTRL jest oczywiście zbędne). Jak już wspomniałem, a wy z całą pewnością się zgodzicie, strzałka ta domyślnie jest bardzo słabo widoczna, nie jesteśmy jednak na nią skazani i możemy ją dowolnie formatować lub zastąpić własnym obrazkiem. Wstawiając taki obrazek jedyne co należy zrobić aby działał on w pożądany sposób, to trzeba ustawić włączyć opcję “Link” i ustawić jej wartość “Back”:
Wracając do samej filtracji, to w tym miejscu może pojawić się pytanie dlaczego przefiltrowany został jedynie rok skoro kliknęliśmy na przecięciu pól Calendar Year, Buying Group oraz Size?
Po prostu Buying Group oraz Size nie były ustawione jako Drillthrough filter na docelowej wizualizacji. Po dorzuceniu tych pól akcja działa zgodnie z tym czego oczekiwaliśmy:
Power BI posiada również pewne udogodnienie w operowaniu tą funkcjonalnością. Chodzi o przycisk Drillthrough dostępny z poziomu wstążki po wybraniu danej wizualizacji:
Gdy włączymy ten przycisk to nasza wizualizacja będzie reagowała w taki sposób, że po kliknięciu konkretnego przecięcia wyświetlone zostaną dla nas możliwości drillowania (bez konieczności klikania prawym przyciskiem i wybierania odpowiedniej opcji z menu kontekstowego):
Ustawienie to zmienia domyślne zachowanie po kliknięciu w obiekt. Domyślnie kliknięcie takie powoduje asocjacyjne filtrowanie innych obiektów, z kolei po zaznaczeniu tej opcji domyślna stanie się operacja drillthrough, co z całą pewnością może to być porządanym efektem w niektórych scenariuszach.
Przechodząc dalej aby osiągnąć nasz cel mamy również do dyspozycji globalne filtry na poziomie raportu. W tym przypadku filtracja sprowadza się do ustawienia odpowiednich pól na zakładce bocznej. W zależności od typu danych możemy ustawić różne możliwości filtracji, od prostego wyboru z listy przez ręczne wpisywanie, aż po relatywne filtry daty:
Użytkownicy mogą ustawiać wartości tych parametrów z poziomu panelu bocznego i będą miały one wpływ na cały raport. Bardzo prosta do ustawienia funkcjonalność jednakże użytkownicy nie zawsze chcą z niej korzystać. Z doświadczenia mogę powiedzieć, że zazwyczaj klientom podoba się technologia asocjacyjna oraz slicery. Do niedawna slicery mogły filtrować jedynie bieżącą stronę lub wybrane na niej elementy i aby osiągnąć pożądany efekt musieliśmy używać głównie filtrów globalnych. Od lutego 2018 mamy jednak możliwość ustawienia globalnych slicerów mających wpływ na więcej niż jedną stronę! Jak to zrobić? To bardzo proste! Po pierwsze musimy na zakładce View włączyć sobie panel Sync Slicers, który posłuży nam jako miejsce do konfiguracji pożądanej opcji:
Po jej zaznaczeniu naszym oczom ukaże się pusty panel konfiguracyjny:
Teraz należy zaznaczyć interesujący nas slicer (póki co musimy to robić pojedynczo):
Widzimy teraz poszczególne strony oraz dwie opcje: synchronizacja oraz widoczność. Synchronizacja jak sama nazwa wskazuje powoduje, że slicery będą ze sobą w pełni połączone.Widoczność daje nam możliwość sterowania tym czy na danej zakładce pojawi się slicer, który aktualnie ustawiamy. Możliwa jest oczywiście filtracja poszczególnych stron bez konieczności występowania tam slicera. Jeśli chcemy aby slicer był widoczny na zakładce gdzie do tej pory go nie było to pojawi się on dokładnie w tym samym miejscu i będzie sformatowany w ten sam sposób jak obiekt macierzysty. Jeśli slicer na danym polu na określonej zakładce już istnieje to zostanie on potraktowany jako kopia obiektu macierzystego i będziemy mogli go według własnego uznania zsynchronizować lub nie. Warto tutaj zaznaczyć, że jeżeli synchronizujemy już istniejące slicery to ich formatowanie nie ulegnie zmianie ani tym bardziej nie będzie skopiowane tak jak ma to miejsce w przypadku gdy ustawimy widoczność slicera, którego do tej pory tam nie było.
Ciekawa sytuacja występuje również wtedy, gdy odznaczymy widoczność slicera, który został stworzony przez omawiany mechanizm. Czynność ta spowoduje, że zostanie on usunięty i jedyna możliwość jego przywrócenia to ponowna synchronizacja. Może w przyszłości będzie możliwość sterowania tym zachowaniem, póki co jest to bardzo fajna funkcjonalność spełniająca większość pokładanych w niej oczekiwań.
Z całą pewnością istnieją jeszcze inne sposoby globalnej filtracji raportów jak np. parametry przekazywane przez URL. Są to jednak funkcjonalności na trochę inny artykuł. Na ten moment mam nadzieje, że opisane tutaj funkcjonalności pomagają Wam spełnić wymagania użytkowników biznesowych.
- 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
Last comments