Co się najlepiej sprzedaje? – czyli TOP 5 produktów Power BI

Power BI

Spis treści:

Wolisz oglądać niż czytać?

Poniżej znajdziesz wideo, w którym opowiadamy o tym samym mechanizmie, co w tym artykule. W filmie zobaczysz jak korzystać z funkcji TOPN, CONCATENATEX, SUMMARIZE czy też wykorzystywać sztuczkę UNICHAR(10).

Jako właściciel sklepu z elektroniką wiem jedno, że nie wszystko sprzedaje się tak samo dobrze. Jeden produkt leci z półki zanim zdążę go rozpakować, inny kurzy się w magazynie jak zapomniana ładowarka do Nokii.

Dlatego postanowiłem sprawdzić, które z moich produktów sprzedają się najlepiej, a które najgorzej. Dokładniej chcę zobaczyć 5 produktów z największą sprzedażą, ale też 5 produktów z najmniejszą sprzedażą. Chcę zobaczyć te produkty w formie listy, ale również na wykresie. Postanowiłem zatrudnić do tego Power BI Desktop i język DAX.

To zestawienie pozwoli mi dowiedzieć się, których produktów należy sprowadzać więcej, ale też i promować więcej, żeby sprzedawały się jeszcze lepiej. Z drugiej strony to zestawienie pozwoli mi przestać kupować i promować produkty, ze słabymi wynikami sprzedaży.

Zacząłem od stworzenia wizualizacji tabeli, do której przeciągnąłem nazwy produktów oraz wartość przychodu, a następnie posortowałem dane po wartościach przychodu (kliknąłem w nagłówek kolumny z przychodem).

Co prawda takie rozwiązanie zawiera listę wszystkich produktów, ale łatwo zobaczyć (przez sortowanie), które produkty sprzedają się najlepiej, a które najgorzej (wystarczy jeszcze raz kliknąć w nagłówek kolumny z przychodem by zmienić kierunek sortowania).

Jednak takie rozwiązanie mnie nie satysfakcjonuje. Chcę uzyskać wyniki bardziej profesjonalnie i przede wszystkim chcę uzyskać listy najlepiej i najgorzej sprzedających się produktów. Za namową zaprzyjaźnionego analityka postanowiłem sporządzić odpowiednią miarę wyznaczającą dla mnie te listy.

Musiałem zacząć od dodania nowej miary np.: przez kliknięcie w polecenia Nowa miara na karcie Narzędzia tabel.

Funkcja SUMMARIZE

W mierze w pierwszej kolejności potrzebowałem stworzyć podsumowanie sprzedaży dla poszczególnych produktów, czyli uzyskać tabelę jak na wizualizacji powyżej za pomocą funkcji SUMMARIZE języka DAX.

W pasku formuły dla miary wpisałem nazwę nowej miary przed znakiem równości, a po nim funkcję SUMMARIZE:

Top5 =
SUMMARIZE (
    'Sprzedaż',
    Produkty[Nazwa produktu],
    "Przychód", SUM ( 'Sprzedaż'[Przychód] )
)

Poszczególne argumenty funkcji SUMMARIZE to:
Table, czyli tabela, którą będziemy podsumowywać,
GroupBy_ColumnName1…N, czy kolumny, po których mają być zgrupowane dane, Nazwa1…NWyrażenie1…N, czyli pary argumentów, określające nazwę nowej kolumny oraz wyrażenie użyte do obliczania wartości w niej.

Ponieważ ta formuła zwraca tabelę, miara będzie zwracała ostrzeżenie, że nie może poprawnie zwrócić wartości skalarnej, ale naprawię to dodając kolejne funkcje.

W tej chwili miara Top5 zwraca mi podsumowania dla wszystkich produktów, a mi zależy tylko na 5 najlepszych dodaję do niej funkcję TOPN, która wyciągnie, w tym przykładzie, tylko wiersze z największymi wartości w kolumnie Przychód:

Top5 =
TOPN (
    5,
    SUMMARIZE (
        'Sprzedaż',
        Produkty[Nazwa produktu],
        "Przychód", SUM ( 'Sprzedaż'[Przychód] )
    ),
    [Przychód], DESC
)

Dane wciąż będą zwracane w formie tabeli, ale tylko z 5 produktami generującymi największy przychód co symuluje rysunek poniżej.

Szkolenie Power BI

970  netto

Naucz się tworzyć nowoczesne i dynamiczne raporty w dedykowanym narzędziu ze stajni Microsoft. Dzi...
Zobacz szkolenie

Funkcja TOPN

Poszczególne argumenty funkcji TOPN to:

N_Value, czyli liczba elementów/wierszy, które funkcja ma wyciągnąć z tabeli,
Tabela, czyli tabela analizowana pod kontem największych wartości,
OrderBy_Expression1…NOrder1…N, czyli pary argumentów opcjonalnych określających wyrażenie (najczęściej kolumnę danych), po której dane mają być sortowane oraz kierunek sortowania. Słowo DESC oznacza sortowanie malejąco (od największych do najmniejszych wartości), a słowo ASC oznacza sortowanie rosnąco (od najmniejszych do największych wartości). Jeśli te argumenty nie zostały podane funkcja TOPN dokona sortowania po pierwszej kolumnie podanej tabeli rosnąco.

Teraz pozostało mi tylko połączenie ze sobą razem nazw produktów w odpowiedniej kolejności za pomocą funkcji CONCATENATEX. Ponieważ mam długie nazwy produktów, chcę, żeby każdy produkt znalazł się w osobnej linii, więc potrzebuję jako ogranicznika użyć znaku nowej linii czyli najprościej użyć funkcji UNICHAR(10). Dodatkowo żeby miara i obliczenia w niej były bardziej zrozumiałem wykorzystam w niej zmienne (VAR) jako wcześniejsze obliczenie i zmienię nazwę miary na Top5List:

Top5List =
VAR Top5 =
    TOPN (
        5,
        SUMMARIZE (
            'Sprzedaż',
            Produkty[Nazwa produktu],
            "Przychód", SUM ( 'Sprzedaż'[Przychód] )
        ),
        [Przychód], DESC
    )
RETURN
    CONCATENATEX ( Top5, [Nazwa produktu], UNICHAR ( 10 ), [Przychód], DESC )

Funkcja CONCATENATEX

Poszczególne argumenty funkcji CONCATENATEX to:

Tabela, czyli tabela, z której pobieramy dane do połączenia.
Wyrażenie, czyli najczęściej odwołanie do kolumny, albo formuła zwracająca tekst, który ma być połączony.
Delimiter, czyli opcjonalny argument oznaczający ogranicznik, którym będą łączone poszczególne wyniki wyrażenia (’słowa’). Jeśli pominięty wyniki wyrażenia będą łączone bezpośrednio ze sobą, bez dodatkowych znaków. Znak nowej linii może wstawić za pomocą funkcji UNICHAR(10).
OrderBy_Expression1…NOrder1…N, czyli pary argumentów opcjonalnych określających wyrażenie (najczęściej kolumnę danych), po której dane mają być sortowane oraz kierunek sortowania.

Tak obliczoną miarę mogę umieścić na wizualizacji Karta.

Ewentualnie mogę dodać jeszcze tekst przed samą listą (funkcją CONCATENATEX), żeby było bardziej zrozumiałe co ta lista zawiera:

Top5List =
VAR Top5 =
    TOPN (
        5,
        SUMMARIZE (
            'Sprzedaż',
            Produkty[Nazwa produktu],
            "Przychód", SUM ( 'Sprzedaż'[Przychód] )
        ),
        [Przychód], DESC
    )
RETURN
    "Najlepiej sprzedające się produkty to: " & UNICHAR ( 10 )
        & CONCATENATEX ( Top5, [Nazwa produktu], UNICHAR ( 10 ), [Przychód], DESC )

Odpowiednio zmieni to wynik wyświetlany na wizualizacji karta.

Formuły w Power BI - Język DAX (Data Analysis eXpressions)

399  netto

Poznaj funkcje, osobliwości i tajniki języka DAX, który wykorzystasz w Power BI, Power Pivot, SSAS...
Zobacz szkolenie

Dzięki tej liście wiem już dokładnie jakie 5 produktów generuje mi największy przychód, więc mogę się skupić na promocji tych produktów.

Z kolei, żeby uzyskać listę produktów z najgorszym przychodem wystarczy zmienić we wszystkich użytych przeze mnie funkcjach kolejność sortowania z DESC na ASC (oczywiście trzeba też odpowiednio zmienić nazwy zmiennych i miar).

Stworzone przeze mnie miary dają mi jeszcze dodatkową możliwość zobaczenia, które produkty najlepiej sprzedają się w poszczególnych lokalizacjach. Wystarczy, że dodam wizualizację fragmentatora, do które przeciągnę pole Lokalizacja, a następnie kliknę na lokalizacji, która mnie interesuje.

Podobne artykuły

Wszystkie artykuły