Projekt Power BI · studia podyplomowe 2026

Analiza Sprzedaży Internetowej

Lipiec 2007: jak nowa oferta odwróciła spadek sprzedaży

Analiza sprzedaży internetowej VII 2005 – VI 2008 · kwoty netto w €

  • Power BI
  • DAX
  • Power Query
  • IBCS
−19% przychód r/r w roku obrotowym 2006/2007
+186% przychód r/r w 2007/2008, po wejściu nowej oferty
91% przyrostu przychodu dały rowery (ok. 9,7 z 10,7 mln €)
8 786 klientów (50%) kupiło w 2007/2008 tylko dodatki
89% rowerzystów dokupuje dodatki (2007/2008)

Historia w pięciu krokach

Raport prowadzi odbiorcę od problemu do decyzji. Tytuł każdej strony to wniosek z liczbą, więc samo czytanie tytułów daje całą historię.

Problem

W roku obrotowym 2006/2007 przychód spadł o ok. 19% r/r: z 7,1 do 5,8 mln €. Firma sprzedawała wtedy wyłącznie rowery.

Zwrot

Od lipca 2007 firma wprowadziła nową ofertę: nową linię rowerów turystycznych oraz akcesoria i odzież. W roku 2007/2008 przychód wzrósł do 16,5 mln € (+186% r/r).

  • Wzrost był we wszystkich krajach. USA (+282%) wyprzedziło Australię (+109%), która rok wcześniej była największym rynkiem.
  • Rowery dały ok. 91% przyrostu (ok. 9,7 z 10,7 mln €): górskie +4,2 mln €, nowa linia turystyczna +3,8 mln € (wcześniej nie istniała), szosowe +1,7 mln €.
Przychód netto wg roku obrotowego mln €, lata VII–VI
7,1
5,8
16,5
2005/20062006/20072007/2008

Mechanizm

Wzrost dała liczba klientów, a nie większe zakupy. Nowi klienci przyszli po tańsze dodatki.

  • r/r: klientów przybyło ok. 5,4× (3 222 → 17 412), a przychód na klienta spadł ok. 1,9× (1 788 € → 946 €).
  • Względem 2005/2006: klientów prawie 8× więcej (2 206 → 17 412), przychód na klienta ok. 3× mniejszy (3 206 € → 946 €).
Klienci liczba unikalnych klientów wg roku obrotowego
2 206
3 222
17 412
2005/20062006/20072007/2008
Przychód na klienta € netto wg roku obrotowego
3 206 €
1 788 €
946 €
2005/20062006/20072007/2008

Koszyk

W danych nie ma numeru zamówienia, więc koszyk liczę na poziomie klientów (rok obrotowy 2007/2008).

  • 89% rowerzystów dokupuje dodatki.
  • Ale połowa klientów (8 786 osób, 50%) kupuje wyłącznie dodatki i nie ma roweru.
  • Rowery kupują głównie 35–44-latkowie. Bez roweru zostają najmłodsi (28–34), najstarsi (55+) i duże rodziny (4–5 dzieci). Płeć nie różnicuje (49% kobiet vs 52% mężczyzn).

Rekomendacja

Kampania rowerowa skierowana do klientów, którzy kupują tylko dodatki, bo znają już sklep. W pierwszej kolejności w USA (prawie 4 tys. osób), z akcentem na grupy 28–34, 55+ i duże rodziny.

Model i strony raportu

Model: płatek śniegu, 7 tabel z bazy SQL Server (tryb Import) i własna tabela dat. 39 miar w tabeli _Miary, podzielonych na 7 folderów.

  • Start Lipiec 2007: jak nowa oferta odwróciła spadek sprzedaży Panele „Jak czytać kolory” i „Co możesz zrobić”, duży rower SVG jako przycisk wejścia.
  • 1. Przełom Lipiec 2007: nowa oferta odwróciła spadek sprzedaży 4 karty KPI z r/r w kolorach, slicer roku obrotowego, trend z wyróżnionym VII 2007, AC vs PY (IBCS), klienci vs przychód na klienta.
  • 2. Źródła wzrostu Wzrost napędziły rowery i rynek USA Kraje AC vs PY, ranking TOP N podkategorii (3/5/8/10) z dynamicznym tytułem, drill-down Kategoria → Podkategoria → Produkt.
  • 3. Koszyk Połowa klientów kupuje tylko dodatki Karty 89% / 50% / 949 / 8 786, segmenty klientów z przełącznikiem Liczby / Procenty (bookmarki), rekomendacja i rower SVG.
  • 4. Klienci Bez roweru zostają najmłodsi, najstarsi i duże rodziny Segmenty wg wieku, liczby dzieci i stanu cywilnego, piktogram płci, persona „Do kogo kierować kampanię rowerową”.
  • Szczegóły kraju (drill-through) Szczegóły: [kraj] KPI kraju, pozycja wśród 6 rynków, udział w przychodzie, segmenty, trend, ranking i rekomendacja. Wszystkie tytuły są dynamiczne.
  • Nota metodologiczna Założenia analizy Kwoty netto (podatek 8% pominięty), € umowne, okno VII 2005 – VI 2008, rok obrotowy, segmenty w 2007/2008, wiek na 30.06.2008, brak numeru zamówienia, obszar sprzedaży.

Funkcjonalności: CALCULATE, Time Intelligence (SAMEPERIODLASTYEAR), drill-down, drill-through, bookmarki, parametr TOP N, niestandardowe etykiety, dynamiczne tytuły i kolory, grafiki SVG z DAX, nawigacja i przyciski, IBCS, dopracowane tooltipy.

Warsztat: 3 miary DAX

Nazwy według konwencji uczelni: $ waluta, # liczby, % procenty, zmienne VAR __Nazwa.

1. Rok obrotowy VII–VI w tabeli dat

W latach kalendarzowych rok 2008 miał tylko 6 miesięcy i wyglądał na plateau. Rok obrotowy pokazał prawdziwą historię.

-- kolumna w DimData (ADDCOLUMNS)
"RokObrotowy",
    VAR __Rok = YEAR([Date])
    VAR __RokStart = IF(MONTH([Date]) >= 7, __Rok, __Rok - 1)
    RETURN __RokStart & "/" & (__RokStart + 1)

2. Koszyk bez numeru zamówienia: INTERSECT / EXCEPT

Zamiast koszyków porównuję zbiory klientów. Ta sama para zmiennych z EXCEPT daje klientów, którzy kupili tylko dodatki.

# KlienciRoweryIDodatki =
    VAR __KlienciRowery = CALCULATETABLE(VALUES(FactInternetSales[Klucz klienta]), DimKategoria[Nazwa Kategorii] = "Rowery")
    VAR __KlienciDodatki = CALCULATETABLE(VALUES(FactInternetSales[Klucz klienta]), DimKategoria[Nazwa Kategorii] <> "Rowery")
    RETURN COUNTROWS(INTERSECT(__KlienciDodatki, __KlienciRowery))

-- # KlienciDodatkiBezRoweru: RETURN COUNTROWS(EXCEPT(__KlienciDodatki, __KlienciRowery))

3. Ranking TOP N z parametrem

ALL liczy ranking względem wszystkich podkategorii, a filtry roku i kraju z innych tabel zostają.

$ PrzyrostTopNPodkategorie =
    VAR __N = [ParametrTopN Value]
    RETURN
        CALCULATE(
            [$ PrzyrostPrzychodu],
            FILTER(
                DimPodkategoria,
                RANKX(ALL(DimPodkategoria), [$ PrzyrostPrzychodu]) <= __N
            )
        )

Decyzje i lekcje

Rok obrotowy zamiast kalendarzowego

Rok VII–VI pokazał spadek o 19%, a potem +186%. Sprawdziłem, że wniosek trzyma się też przy porównaniu tych samych miesięcy (I–VI) w latach kalendarzowych.

Hipoteza sprawdzona na danych

Pierwsza intuicja: „wzrost dały dodatki”. Ranking przyrostu pokazał, że 91% wzrostu dały rowery, a do oferty weszła też nowa linia rowerów turystycznych.

Części muszą sumować się do całości

Brak filtra roku na stronie zawyżał ranking: trzy podkategorie dawały więcej niż cały przyrost firmy. Błąd wyłapałem dzięki liczbom kontrolnym.

Cross-selling bez numeru zamówienia

Zbiory klientów (INTERSECT / EXCEPT) zamiast koszyków. Definicję i ograniczenie opisałem w nocie metodologicznej raportu.

Uczciwa wizualizacja

Sylwetka wypełniona do połowy wysokości zakrywała ok. 75–80% powierzchni i przekłamywała proporcje. Zamieniłem ją na piktogram 10 sylwetek (1 = 10%).

Świadomie odrzucone

Wskaźnik lift (≈ 0,94, nie różnicuje grup), CROSSFILTER (zbędny, liczę w tabeli, do której dociera filtr), SUMX dla zysku (ilość zawsze = 1), panel filtrów jako bookmark (kłóciłby się z tytułami-wnioskami).

Dane: przykładowa baza Microsoft AdventureWorks (przetłumaczona wersja udostępniona w ramach kursu). Dane nie dotyczą prawdziwej firmy, kwoty są w umownej walucie €.

Kontekst: projekt zaliczeniowy I semestru studiów podyplomowych z analizy danych (Power BI, 2026).

AI: projekt był konsultowany z asystentem AI, który zadawał pytania i robił code review. Model danych, miary i decyzje wykonałem sam. Gotowe propozycje AI dotyczyły m.in. motywu JSON, miar SVG i części tytułów dynamicznych.