Jak wykonać analizę koszykową w programie Excel i Power BI?

Analiza koszykowa jest badaniem preferencji zakupowych klientów przez pryzmat zawartości ich koszyków. Pozwala uzyskać reguły na zasadzie: jeśli klient kupuje piwo, to kupuje suche przekąski (chipsy, snacki, paluszki) – temat przy okazji mundialu bardzo na czasie. Jak wykonać ją w Excelu i jak analizować ją graficznie?

Opisywany temat jest na styku obu blogów, które prowadzę – SkuteczneRaporty.plExcelBI.pl. Umieściłem go finalnie tutaj, choć będziemy posługiwać się technikami związanymi z modelem danych Power Pivot, który zwykle trafia na blog o dodatkach Power w Excelu. Wynika to z faktu, że kończymy analizę mapą cieplną, która jest jedną z prostszych technik analitycznych w tabeli przestawnej. Niemniej opisywana analiza, która przydaje się np. do planowania rozmieszczenia produktów na półkach lub w gazetkach, ma też identyczny przebieg w Power BI.

Krok 1: Przygotuj model danych w Power Pivot

Poprzez Power Query ładuję do modelu danych tabelę transakcyjną (faktów) Dane, tabelę słownikową Produkty oraz… Produkty po raz drugi pod nazwą Produkty Filtr. Następnie buduję relacje w modelu danych, przy czym relacja z tą drugą ma być nieaktywna, o czym dalej.

Krok 2: Zbuduj miarę w tabeli Dane

Buduję miarę w tabeli Dane:

Sprzedane w tym samym zamówieniu:=CALCULATE (
COUNTROWS ( Dane);
CALCULATETABLE (
SUMMARIZE (
Dane;
Dane[Nr zamówienia]
);
ALL ( Produkty );
USERELATIONSHIP ( Dane[Produkt Id];'Produkty Filtr'[Produkt Id])
)
)

Miara ta liczy, ile transakcji zostało wykonanych w tabeli Dane, ale zanim się policzy, ogranicza się tylko do tych zamówień, które zostały wybrane w tabeli filtrującej Produkty Filtr. Jest to konieczne, gdyż standardowo filtrując tabelę przestawną, widzimy tylko wybrane produkty, a inne znikają. Formuła wymaga włączenia nieaktywnej relacji poprzez formułę języka DAX o nazwie USERELATIONSHIP.

Krok 3: Zbuduj tabelę przestawną

Tabela przestawna pozwoli odpowiedzieć na pytanie: Co kupowali klienci, którzy kupili np. stoły? Pytania te zadajemy poprzez fragmentator, który koniecznie pochodzi z tabeli Produkty Filtr, zaś w tabeli przestawnej umieszczamy w wierszach pola z normalnej tabeli Produkty.

Analiza taka może odbywać się na poziomie Kategorii, Podkategorii czy – częściej – samych Nazw produktów. Mówi nam, że zamówień na stoły było 399, a razem ze stołami klienci najczęściej wkładali do koszyka papier i telefony.

Krok 4: Zbuduj macierz produktową

Gdy lekko zmodyfikujemy naszą miarę, możemy umieścić ją w macierzy produktów, aby sprawdzić, które produkty z całego portfolio są kupowane najczęściej. Ta technika jest już bardziej graficzna.

Sprzedane w tym samym zamówieniu Macierz :=
IF (
MIN(Produkty[Produkt Id])
<> MIN('Produkty Filtr'[Produkt Id]);
[Sprzedane w tym samym zamówieniu]
)

Miara odfiltrowuje wybrany produkt, który jak w kroku 3 nadal jest widoczny i zaburza kolorowanie macierzy.

Mając miarę, wstawiamy tabelę przestawną, w której w wierszach ląduje pole z tabeli Produkty (np. Nazwa produktu lub Kategoria produktu), a w kolumnach analogiczne pole, ale z tabeli Produkty Filtr.

Następnie, posługując się techniką mapy cieplnej, tworzymy obraz zależności. Przykładowy wniosek: klienci kupujący telefony kupują też produkty z podkategorii papier. Białe pola na przekątnej wynikają z tego, że miarą wyłączyliśmy liczenie samych siebie, jeśli chodzi o produkty.

Ta analiza zadziała w identyczny sposób w Power BI, gdzie znajdziemy te same mechanizmy Power Query i Power Pivot oraz formatowanie warunkowe wizualizacji Macierz.

Pobierz plik z analizą koszykową w Excelu

Tu możesz pobrać plik Excel z gotowymi formułami analizy koszykowej.

Udostępnij ten wpis:

Brak komentarzy

  1. Cześć,
    Kiedyś uczestniczyłam w twoim w szkoleniu, ale dosyć dawno używałam DAX.
    Do analizy koszykowej potrzebuje dodać wartość koszyka i wolumen (dwa oddzielne pivoty), które by się pojawiały dla produktów z wierszy.
    Jak utworzyć taką miarę?

  2. Hej Monika, wartość koszyka to będzie podmiana tylko drugiego argumentu w mierze:
    Zamiast: CALCULATE (COUNTROWS ( Dane);
    Będzie: CALCULATE (SUM(wartość);

Dodaj komentarz

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