Warto śledzić na bieżąco comiesięczne aktualizacje aplikacji Power BI Desktop. W grudniu 2022 została dodana DAX-owa funkcja WINDOW. Korzystanie z funkcji okienkowych otwiera nam wiele ciekawych możliwości analitycznych. W tym wpisie przedstawię Ci możliwość zbudowania wykresu Pareto przy użyciu Power BI Desktop i wspomnianej wyżej funkcji.
Jak działa funkcja WINDOW?
Funkcja WINDOW należy do rodziny funkcji okienkowych, którą tworzą także funkcje INDEX i OFFSET.
Dzięki funkcji WINDOW zbudujesz „okienka na danych”, co znaczy, że możesz podzielić dany zbiór według wybranych przez Ciebie atrybutów i dokonywać kalkulacji w ramach zdefiniowanego okna. W ramach funkcji definiujemy parametry, które odnoszą się do startu partycji, jej końca (możliwe jest żonglowanie początkiem i końcem). Dodatkowo definiujemy atrybut, po którym sortujemy podzbiór, a także atrybut, który służy do budowania partycji.
Po szczegółowe wyjaśnienie argumentów zapraszam na blog SQLBI.com.
Co ciekawe, przed dodaniem funkcji WINDOW stworzenie analizy Pareto było dużo trudniejsze. W tym artykule została przedstawiona logika budowania takiej analizy. Zachęcam do porównania z nowym rozwiązaniem, które znajdziesz w artykule. Użycie funkcji WINDOW jest zdecydowanie „przyjemniejsze” dla użytkownika.
W naszym przykładzie z wykresem Pareto dla każdego modelu produktu powstanie jedno duże okno, które będzie obliczać skumulowaną wartość sprzedaży dla wszystkich produktów, które są wcześniej na osi x.
Przykładowy model danych w Power BI
Do realizacji naszego zadania analitycznego użyjemy modelu danych opartego o bazę AdventureWorks. Link do pobrania raportu *.pbix i opisu modelu znajdziesz na GitHub oraz na dole artykułu.
Czym jest reguła Pareto?
W kwestii przypomnienia, reguła Pareto, zwana też często zasadą 80/20 została sformułowana przez Josepha Jurana. To reguła ekonomiczno-zarządcza mówiąca o tym, że 20% badanych obiektów związanych jest z 80% pewnych zasobów. Na przykład:
20% Klientów generuje nam 80% zysków, 20% reklamacji generuje 80% kosztów, korzystamy z 20% funkcjonalności PBI’a przez 80% czasu etc.
Wykres Pareto opisywałem już na blogu SkuteczneRaporty.pl, ale dotychczas jego wykonanie w Power BI było dużo trudniejsze niż w Excelu.
Przygotowanie modelu danych w Power BI Desktop
Przejdźmy zatem do konkretów. Chcemy przeanalizować dane względem wymiaru [Product] i jego atrybutu [Model]. Odpowiemy sobie na pytanie, które modele produktu odpowiadają za 80 % naszej wartości sprzedaży.
Krok 1: Zapoznaj się z danymi przy użyciu zakładki „Widok danych” i „Widok modelu”
Krok 2: Stwórz tabelę z miarami
Zgodnie z dobrymi praktykami tworzenia raportów w Power BI, warto, żebyś przetrzymywał stworzone przez siebie miary w dodatkowej tabeli. Dzięki temu łatwiej będzie Tobie znaleźć miary, edytować je w przyszłości itp. Więcej informacji znajdziesz w tym artykule.
Najprościej będzie dokonać tego przez opcję Wprowadź dane z paska Narzędzia Główne.
Po wybraniu opcji, pojawi się okno, w którym możesz zdefiniować nazwę tabeli oraz kolumny. Z racji, że przykładowy model jest w języku angielskim, zastosujemy angielskie nazewnictwo – nasza tabelka będzie miała nazwę (_Measures). Pamiętaj, że nazwy niektórych obiektów są zastrzeżone (np. Measures), dlatego nazwę tabeli poprzedź znakiem podkreślenia „_” . Nazwę kolumny możemy ustawić jako Measures.
Nazwy obiektów możemy edytować poprzez „dwuklik” na aktualną nazwę.
Właśnie utworzyłeś swoją tabelę _Measures, w której będziemy przechowywać definicje miar. Znajdziesz ją w modelu.
Krok 3: Stwórz miarę bazową [Sales Amount]
Skupmy się teraz na stworzeniu miar, które pomogą nam stworzyć wykres Pareto. Jak wcześniej wspominałem, dokonamy analizy wielkości sprzedaży (ang. Sales Amount) w przecięciu z wymiarem Product i jego atrybutem Model. Dzięki temu uda Ci się ustalić, które modele produktu odpowiadają za 80 % wielkości sprzedaży.
Zacznijmy od miary [Sales Amount]. Definicja DAX’owa jest w tym wypadku bardzo prosta, zsumujemy wartość z tabeli faktowej.
Sales Amount = SUM('Sales'[Sales Amount])
Pamiętaj, żeby miary formatować w odpowiedni sposób, co pozwoli Ci zachować ich czytelność i łatwość zrozumienia ich działania w przyszłości. Możesz skorzystać z Dax Formattera w wersji przeglądarkowej.
Krok 4: Stwórz miarę [Pareto %]
Potrzebna nam będzie jeszcze miara [Pareto %]. Oto jej definicja:
Pareto % = VAR TotalSales = CALCULATE ( [Sales Amount], ALLSELECTED ( 'Product'[Model] ) ) VAR ParetoSales = SUMX ( WINDOW ( 0, ABS, 0, REL, ALLSELECTED ( 'Product'[Model] ), ORDERBY ( [Sales Amount], DESC ) ), [Sales Amount] ) RETURN ParetoSales / TotalSales
Warto sformatować ją jako miarę procentową.
Krok 5: Zbuduj wykres Power BI
Po stworzeniu miary przejdź do Widoku raportu, gdzie zbudujesz wizualizację.
Wybierz wykres liniowy, następnie na osi X zaprezentuj atrybut [Model] z wymiaru [Product]. Z kolei na oś Y zrzutuj miarę [Pareto %]. Pamiętaj, żeby posortować oś, która zawiera miarę [Pareto %] w sposób rosnący.
Wykres reguły Pareto i rozwiązanie problemu biznesowego
Voilà! Zaznaczone na obrazku modele produktu odpowiadają za 80% wartości sprzedaży. Wykres świetnie obrazuje problem biznesowy, który chcieliśmy przeanalizować.
Teraz możemy zbudować wykresy powiązane, np. wykres kombi z linią referencyjną.
Pobierz plik
Tutaj możesz pobrać plik Power BI z wykresem Pareto i samodzielnie potestować rozwiązanie.
Ćwiczenie samodzielne
Spróbuj przeanalizować dane sprzedażowe i regułę Pareto pod kątem innego wymiaru lub innego atrybutu opisującego produkt. Pamiętaj, że aby tego dokonać, należy wyedytować miarę [Pareto %], którą stworzyliśmy we wcześniejszych krokach.
Super, działa. Niestety dodając fragmentator i wybierając konkretny numer tygodnia na wykresie pozostają puste nazwy za cały okres. Idzie coś z tym zrobić?
W panelu bocznym Filtry ustaw na mierze Sales Amount filtr „nie jest pusta”.