Dlaczego sezonowość w FMCG to temat „być albo nie być”

Gigantyczny pik sprzedaży w lipcu i nagły dołek w sierpniu nie muszą oznaczać, że klienci po wakacjach przestali kupować napoje. Po złączeniu danych z kalendarzem dostaw i harmonogramem inwentaryzacji może się okazać, że taki „cudowny lipiec” to w dużej mierze efekt przepchnięcia dostaw do sieci przed zamknięciem okresu.

Tak wygląda codzienność FMCG. Sprzedaż w tej branży jest mocno sezonowa, ale część pików wcale nie wynika z wyborów konsumentów. Mieszają się tu pory roku, święta, lokalne wydarzenia, promocje, pogoda, cykle wypłat i zwykła logistyka detalisty.

Power BI i modele AI pozwalają rozłożyć ten chaos na czynniki pierwsze i zbudować analizę sezonowości, która nadaje się do decyzji, a nie tylko do ładnego dashboardu „do szuflady”.

Sezonowość w FMCG – ile tu naprawdę jest „sezonu”

Zacznijmy od skali zjawiska. W kategoriach typu lody, napoje chłodzące, repelenty czy kremy z filtrem różnica między sezonem wysokim a niskim jest bardzo duża. Przy słodyczach świątecznych, alkoholach i produktach premium skoki w grudniu są jeszcze większe.

Dodatkowo produkty typowo zimowe potrafią wygenerować zdecydowaną większość rocznego wolumenu w przedziale od października do marca. Innymi słowy, jeśli źle zaplanujesz ten okres, przez resztę roku możesz już tylko „gasić światło”.

W praktyce do tego globalnego obrazu dochodzi kilka warstw sezonowości, które trzeba od siebie odseparować:

  • sezonowość tygodniowa – inne zachowania w weekend, inne w środku tygodnia,
  • sezonowość roczna – święta, wakacje, powtarzalne akcje promocyjne,
  • sezonowość dzienna – pora dnia, „godziny zakupowe”, lokalne zwyczaje.

Jeśli w modelu AI wrzucisz to wszystko do jednego worka, dostajesz uśredniony, spłaszczony obraz, który niby „coś pokazuje”, ale nie nadaje się do konkretnych decyzji zakupowych. Dlatego te warstwy trzeba rozdzielić już na poziomie modelu danych w Power BI.

Power BI jako centrum analizy sezonowości – jak to realnie działa

Częsty punkt wyjścia: zespół ręcznie łączy w Excelu dane z POS, ERP i listę promocji, a forecast stoi, bo nikt nie ufa danym. Jeden model w Power BI może zastąpić większość takich zestawień.

Power BI dobrze sprawdza się w FMCG z kilku powodów. Po pierwsze, łączy w jednym miejscu:

  • dane POS (paragonowe, dzienne, często godzinowe),
  • dane z ERP (zakupy, stany magazynowe, koszty),
  • kalendarz świąt i dni handlowych,
  • dane o promocjach,
  • dane pogodowe z zewnętrznych źródeł.

Po drugie, ma wbudowane modele AI, które rozkładają szeregi czasowe na trend, sezonowość i składnik losowy. To nie jest pełny zamiennik dużych projektów data science, ale do decyzji operacyjnych „na jutro” i „na kolejny tydzień” bywa w zupełności wystarczający, szczególnie przy dobrze poukładanym modelu danych i cechach.

Dodatkowo modele wbudowane w Power BI dużo lepiej radzą sobie z sezonowością, gdy pracują na danych dziennych niż na agresywnie zrolowanych tygodniach czy miesiącach. Dlatego lepiej trenować na poziomie dnia, a dopiero prognozy agregować później. To pozwala uchwycić m.in. efekt weekendów, lead/lag promocji czy lokalne wydarzenia.

Model danych w Power BI – co musi się w nim znaleźć, żeby sezonowość „zagrała”

Klasyczny błąd na starcie: do modelu trafiają miesięczne dane sprzedaży i dość płaski kalendarz, bo „na co dzień tak patrzymy na biznes”. Prognozy zaczynają zbliżać się do rzeczywistości dopiero na danych dziennych i z rozbudowanym kalendarzem.

Dobrze zrobiony model danych pod sezonowość w FMCG w Power BI zwykle opiera się na kilku kluczowych elementach.

W centrum stoi tabela faktów sprzedaży – dzienna, możliwie szczegółowa. Łączy dane z POS i ERP: ilości, wartości sprzedaży, koszty, zamówienia, stany magazynowe, rotację. Im niższy poziom agregacji, tym łatwiej później zbudować sensowny indeks sezonowy i wykrywać anomalie.

Obok niej stoi rozbudowana tabela kalendarza. To nie jest tylko data, rok, miesiąc. W praktyce to coś, co wiele zespołów nazywa własnym kalendarzem sezonowości. Zawiera on:

  • święta stałe i ruchome,
  • lokalne wydarzenia (festyny, imprezy sportowe, jarmarki),
  • flagi typu: dzień wypłaty, długi weekend, ferie w danym województwie,
  • sezonowe tagi: „back_to_school”, „pre_christmas”, „post_easter”.

Zaawansowani analitycy FMCG często mają wręcz swój „tajny kalendarz”, dopracowywany latami – i tam kryje się spora część przewagi nad konkurencją, która używa wyłącznie standardowych kalendarzy.

Kolejny element to wymiar produktów: kategoria, marka, typ opakowania, poziom premium, segment funkcjonalny. W połączeniu z tabelą sklepów (format: convenience, supermarket, dyskont, lokalizacja: turystyczna, akademicka, sypialniana) daje to możliwość zobaczenia, że ten sam SKU ma zupełnie inną sezonowość w sklepie na deptaku w Sopocie niż w osiedlowym markecie pod Łodzią.

Sezonowość bardzo różni się też pomiędzy formatami sklepów. Lody w małym convenience przy stacji benzynowej mają zwykle wyższy udział wieczorem i w nocy, podczas gdy w hipermarkecie pik wypadnie wcześniej w ciągu dnia. Dlatego typ lokalizacji warto mieć w modelu albo jako cechę, albo trenować modele oddzielnie dla wybranych segmentów.

Do tego dochodzą jeszcze dwie grupy danych: promocje i pogoda. Dane promocyjne służą nie tylko do oznaczania tygodnia akcji. W praktyce bardzo ważny jest efekt przedsprzedaży i odsprzedaży promocji: sprzedaż rośnie kilka dni przed startem akcji (klienci „czują”, że coś się zbliża), a potem spada po jej zakończeniu. Dlatego w modelu DAX-owym tworzy się cechy typu Promo_Lead i Promo_Lag, które pozwalają uchwycić ten efekt w prognozach.

Pogoda jest z kolei sezonowością nieliniową. Przykład: sprzedaż lodów może realnie zaczynać rosnąć dopiero po przekroczeniu określonej temperatury odczuwalnej. Poniżej tego progu prawie nic się nie dzieje. Przy bardzo wysokich temperaturach może natomiast spadać sprzedaż części produktów „cięższych”, bo klienci nie mają na nie ochoty podczas upałów. Dlatego temperaturę warto kategoryzować (Temp_Bin) i dodawać flagi typu „heat_wave_flag”, zamiast wrzucać do modelu surową liczbę stopni.

Indeks sezonowy w DAX – małe narzędzie, duży porządek

Zanim sięgnie się po zaawansowane AI, dobrze policzyć w DAX najprostszy możliwy indeks sezonowy. Taka miara potrafi szybko pokazać, że część „magicznych” pików sprzedaży to logistyka, a nie konsument.

Indeks sezonowy w Power BI zwykle porównuje sprzedaż w konkretnym okresie (dzień, tydzień, miesiąc) do średniej rocznej lub bazowej. Dzięki temu od razu widać, kiedy sprzedaż w danym okresie jest wyraźnie powyżej lub poniżej typowego poziomu.

Indeks służy tu dwóm celom. Po pierwsze, normalizuje dane przed trenowaniem modeli AI. Chodzi o to, by model skupił się na trendach, efektach promocyjnych czy zmianach cen, a nie na „oczywistych” szczytach świątecznych. Po drugie, ten sam indeks działa później jako sanity-check dla prognoz. Jeśli model sugeruje spokojny grudzień w kategorii świątecznej czekolady, a indeks sezonowy pokazuje, że to powinien być szczyt, od razu widać, że coś jest nie tak.

DAX pozwala definiować indeks na różnych poziomach agregacji, od dnia przez tydzień aż po kwartał. Perspektywa zależy od tego, czy chodzi o retailowe convenience, czy o hurtownię obsługującą duże markety, ale logika pozostaje ta sama: oddzielić sezonowość od reszty i mieć prosty wskaźnik, który każdy w zespole zrozumie.

Wbudowane AI w Power BI – forecasting, anomalie i wpływające czynniki

Ten sam wykres sprzedaży w dwóch wersjach, zwykła linia i linia z forecastingiem oraz wykrywaniem anomalii, pokazuje różnicę od razu: w drugiej wersji widać, gdzie naprawdę coś się wydarzyło.

Forecasting w Power BI, przy poprawnie ustawionej sezonowości, potrafi wykryć powtarzalne wzorce i rozsądnie prognozować przyszłe poziomy sprzedaży. Kluczem jest to, by nie zostawiać wszystkiego w trybie „auto”. Dla danych dziennych sezonowość ustawia się ręcznie na 365, dla miesięcznych na 12. Dzięki temu model skupia się na właściwej częstotliwości powtarzalnych wzorców, zamiast szukać ich na ślepo.

Drugie narzędzie to wykrywanie anomalii. Find anomalies podświetla nagłe skoki i spadki. Próg czułości najlepiej ustawić mniej więcej w środku skali, żeby nie tonąć w fałszywych alarmach. Prawdziwa wartość pojawia się wtedy, gdy do pola „Explain by” trafią zmienne kontekstowe: czy był to tydzień promocji, jak wyglądała temperatura, czy zmienił się układ ekspozycji w sklepie.

Dopełnieniem jest Key Influencers, czyli analiza czynników najsilniej powiązanych z wynikiem. Może na przykład pokazać, że w kategorii napojów największe odchylenia od „typowej” sprzedaży dają weekendy, w których dobra pogoda zbiega się z promocją. Zespół często podejrzewa takie zależności intuicyjnie, a wizualizacja daje twardy dowód.

W tle coraz częściej pojawia się też integracja z usługami typu Azure OpenAI, nie do budowania samych prognoz, tylko do tłumaczenia wyników na język zrozumiały dla biznesu. Zamiast zawiłego wykresu powstaje zwięzłe podsumowanie: „W ostatnim tygodniu sprzedaż napojów w regionie północnym była wyższa niż typowy poziom sezonowy, głównie dzięki promocji X i wyższym temperaturom”.

Jak skonfigurować forecasting i anomalie na wykresie liniowym

Żeby to wszystko miało sens, konfiguracja wykresu liniowego w Power BI musi być przemyślana. Na osi X najlepiej używać ciągłej osi czasu, najczęściej konkretnej daty, czasem Year-Month. Na osi Y idzie miara sprzedaży (ilościowa lub wartościowa, w zależności od celu).

Na tej bazie w panelu analitycznym włącza się forecast. Horyzont prognozy powinien odpowiadać realnym decyzjom biznesowym, a dla FMCG najczęściej są to tygodnie lub miesiące. Parametr sezonowości trzeba zdefiniować jawnie, a nie zostawiać modelowi do zgadywania.

Potem dochodzi Find anomalies. Tu kluczowy jest kompromis: zbyt niska czułość zasypie zespół alertami, zbyt wysoka przeoczy realne problemy. W praktyce dobrze przetestować kilka ustawień na danych historycznych przed wyborem docelowego.

Do „Explain by” powinny trafić tylko zmienne, które faktycznie mogą tłumaczyć skoki: promocje, temperatura, dni wolne, czasem zmiana layoutu sklepu lub start nowej ekspozycji. W przeciwnym razie model będzie produkował mało użyteczne „wyjaśnienia”.

Tak skonfigurowany wykres przestaje być tylko ładną linią na monitorze, a staje się narzędziem operacyjnym: pokazuje prognozę, od razu sygnalizuje odchylenia i sugeruje ich możliwe przyczyny.

Modele AI do prognozowania popytu – co naprawdę działa w FMCG

Przy wyborze modelu znaczenie ma poziom danych. Im niższa agregacja i im więcej cech pogodowych oraz kalendarzowych, tym więcej mogą wnieść nowocześniejsze modele, zwłaszcza w kategoriach mocno promocyjnych i podatnych na pogodę.

W praktyce stosuje się kilka rodzin modeli:

  • klasyczne modele szeregów czasowych (ARIMA, ETS, Prophet) - bardzo dobre tam, gdzie są powtarzalne wzorce i względnie stabilny świat,
  • modele uczenia maszynowego (XGBoost, Random Forest) - gdy trzeba wykorzystać wiele cech zewnętrznych,
  • modele głębokie (LSTM, N-BEATS) – przy dużej ilości danych i bardziej złożonych wzorcach.

Power BI daje tu dwie ścieżki. Pierwsza to wbudowane funkcje AI – szybkie, proste, dobre na start lub dla zespołów, które nie mają dużego zaplecza data science. Druga to integracja z Python/R lub z Azure Machine Learning. W tej konfiguracji model jest trenowany i hostowany w chmurze, a Power BI pełni rolę semantycznej nakładki i silnika wizualizacyjnego.

Podejście można też rozdzielić według ważności produktów. Top 20% SKU, które generują większość sprzedaży i marży, dostaje bardziej zaawansowane modele. Długi ogon obsługują prostsze podejścia grupowe, czasem regresja na poziomie kategorii czy segmentu. To oszczędza moc obliczeniową i czas, a wysiłek trafia tam, gdzie zwrot z inwestycji jest największy.

Żeby to wszystko współgrało, w Power BI powstaje coś w rodzaju „feature store light”: model semantyczny z cechami typu IsHoliday, Temp_Bin, Promo_Lead_Lag, Store_Type, Academic_Town_Flag. Te same cechy trafiają do raportów i do modeli AI, dzięki czemu wyniki są spójne, a zespół nie musi zgadywać, skąd wzięła się konkretna prognoza.

Wizualizacje sezonowości, które naprawdę pomagają w decyzjach

Sezonowość trzeba pokazać tak, żeby zrozumiał ją też ktoś, kto nie siedzi w danych. Najlepiej sprawdza się kombinacja kilku prostych wizualizacji.

Podstawą są wykresy liniowe – do śledzenia zmian sprzedaży w czasie i oznaczania szczytów oraz dołów. Do tego dochodzą heatmapy kalendarzowe: jeden widok i od razu widać, które dni w roku są „gorące”, a które tradycyjnie spokojniejsze. Po dołożeniu indeksu sezonowego jako dodatkowej miary łatwo porównać aktualne wyniki z typowym poziomem sezonowości.

Przydatny jest też slopegraph, idealny do porównywania dwóch okresów, na przykład tej Wielkanocy z poprzednią, pod względem kluczowych kategorii. Od razu widać, co urosło, a co spadło i o ile.

Dashboardy KPI powinny odpowiadać na kilka pytań, które naprawdę interesują biznes:

  • jak wygląda całkowita sprzedaż vs typowa sezonowość,
  • jaki jest udział promocji w sprzedaży i marży,
  • które akcje promocyjne przynoszą rzeczywisty uplift, a które tylko „zjadają” marżę,
  • jak zmieniają się stany magazynowe wobec prognozowanego popytu.

Smart Narrative, czyli inteligentna narracja, dobrze sprawdza się jako warstwa dla zarządów i osób nietechnicznych. Zamiast przechodzić przez pięć wykresów, dostają podsumowanie w stylu: „W tygodniu X sprzedaż lodów była o Y% wyższa niż typowy poziom sezonowy, głównie dzięki promocji Z i wysokim temperaturom w regionach A i B”.

Przykład: napoje chłodzące i słodycze świąteczne - co pokazuje sezonowość

Przykładowy przebieg dla kategorii napojów chłodzących. Model AI w Power BI wykrywa coroczny wzrost w czerwcu i lipcu, a jako anomalię oznacza silny skok sprzedaży w maju. Po dołączeniu danych pogodowych okazuje się, że był to tydzień wyjątkowo wysokich temperatur, czyli wcześniejsze niż zwykle lato.

Dla zespołu zakupowego to wskazówka: przy kolejnej fali ciepła w maju lepiej wcześniej podciągnąć zamówienia, zamiast czekać na „tradycyjny” sezon.

Drugi przykład to słodycze świąteczne. W danych widać nie tylko grudniowy szczyt, ale także efekt przedsprzedaży w listopadzie i wyraźne „wypalenie” kategorii po Nowym Roku. Bez cech promo_lead i promo_lag model przeszacowuje sprzedaż w tygodniu samej promocji, bo nie widzi, że część zakupów została „ściągnięta” z okresu przed i po. Po ich dodaniu prognozy lepiej odwzorowują rzeczywiste piki i spadki.

Te przykłady pokazują, że analiza sezonowości to nie wyłącznie praca na historii. Dobrze zbudowane modele AI, zasilone danymi o pogodzie, świętach, promocjach i cenach (własnych oraz konkurencji), pozwalają reagować na zmiany w czasie zbliżonym do rzeczywistego.

Jakie konkretne korzyści daje to detalistom FMCG

Wspólny indeks sezonowy i te same prognozy kończą spory o to, kto ma rację: dział zakupów, sprzedaży czy logistyka.

Analiza sezonowości połączona z AI w Power BI może przynieść:

  • spadek braków towarowych (OOS) w sezonowych kategoriach – szczególnie tam, gdzie wcześniej ktoś „dmuchał na zimne” i zamawiał na oko,
  • zmniejszenie nadwyżek i ryzyka przeterminowanych zapasów, dzięki lepszemu dopasowaniu wielkości zamówień do realnego popytu,
  • wzrost marży brutto poprzez precyzyjniejsze planowanie promocji i lepsze zarządzanie rabatami,
  • wzrost sprzedaży dzięki temu, że towar jest dostępny w momencie, kiedy klienci rzeczywiście go szukają,
  • spadek błędu prognoz (MAPE), co bezpośrednio przekłada się na mniej nerwowe decyzje zakupowe.

Poniżej syntetyczne porównanie: typowy stan przed wdrożeniem takiego podejścia i oczekiwany kierunek zmian po nim:

Wskaźnik Przed wdrożeniem Po wdrożeniu
Braki towarowe (OOS) Wysokie, trudno przewidywalne Znacząco niższe w kluczowych sezonach
Nadwyżki i przeterminowane zapasy Częste nadmiary w spokojnych okresach Ograniczone dzięki lepszym prognozom
Marża brutto Pod presją częstych, szerokich promocji Wzrost dzięki selektywniejszym akcjom
Sprzedaż Niestabilna, mocno uzależniona od „strzałów” Bardziej przewidywalna, stopniowe wzrosty
Trafność prognoz (MAPE) Wysoki poziom błędu Niższy poziom błędu po uwzględnieniu sezonowości i cech

Jak to wszystko spiąć w spójny, automatyczny ekosystem

Wracając do lipcowego piku z początku, który może być efektem kalendarza dostaw: właśnie po to buduje się w Power BI spójne modele danych, indeksy sezonowe i integracje z AI, żeby odróżniać prawdziwy popyt konsumencki od logistycznych szumów.

W dobrze poukładanym ekosystemie wygląda to tak:

  • Power BI trzyma semantykę danych i cechy – coś w rodzaju lekkiego feature store,
  • modele AI (czy to wbudowane, czy hostowane w Azure ML) prognozują popyt na poziomie dnia i SKU,
  • indeks sezonowy w DAX służy jednocześnie do normalizacji danych i sanity-checku wyników,
  • wizualizacje pokazują nie tylko liczby, ale też kontekst: pogodę, święta, promocje, lokalne wydarzenia,
  • decyzje zakupowe i logistyczne opierają się na jednym, spójnym obrazie rzeczywistości.

Technologia ma tu być skalowalnym kręgosłupem decyzji operacyjnych, a nie „efekciarskim gadżetem”. W FMCG sezonowość to codzienność, więc im szybciej przeniesiesz ją z Excela i intuicji do dobrze zaprojektowanego modelu w Power BI z AI, tym mniej energii zmarnujesz na gaszenie pożarów.