Jak utworzyć w Power BI wykres Pareto? – Przykład wykorzystania funkcji WINDOW

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.

Udostępnij ten wpis:

Brak komentarzy

  1. 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ć?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *