Łukasz Micherda, analityk danych Kod na GitHubie

Z 41 115 wierszy zostało 39 544 zamówień. Każdą różnicę da się wyjaśnić.

Hurtownia danych fikcyjnego polskiego sklepu internetowego, od surowego eksportu po raport w Power BI i asystenta, który odpowiada na pytania po polsku. Zbudowana razem z AI, a każda liczba jest sprawdzona testami.

  1. raw, eksport ze sklepu

    41 115

    wierszy zamówień załadowanych 1:1, z błędami źródła

  2. staging, czyszczenie

    40 951

    −164 wiersze zdublowane przez proces ETL

  3. marts, model gwiazdy

    40 915

    −36 zamówień z kont testowych zespołu QA

  4. raport, Power BI

    39 544

    −1 371 anulowanych lub bez poprawnych pozycji

Z czego składa się projekt

Wszystko działa na jednym serwerze VPS za kilka euro miesięcznie i odtwarza się jednym poleceniem.

Hurtownia danychPostgreSQL 16, dbt

Warstwy raw → staging → marts, model gwiazdy z 4 tabelami faktów i 4 wymiarami, kohorty retencji, segmentacja RFM i raport jakości danych. 20 modeli, 58 testów.

Raport Power BIDAX, Power Query

Strony przeglądu sprzedaży i jakości danych. 40 miar DAX: analiza czasowa, dynamika r/r liczona tylko na porównywalnych okresach, wykrywanie anomalii z-score.

Asystent AIClaude API

Pytanie po polsku zamienia się w zapytanie SQL, które wykonuje się na koncie tylko do odczytu. Wynik wraca z wykresem, krótkim komentarzem i samym zapytaniem do sprawdzenia.

Agent dla zespołu due diligenceCopilot Studio, Power Automate, Dataverse

Osobny moduł: tracker pytań do sprzedającego w Dataverse, codzienny raport mailem z Power Automate i agent, który sprawdza statusy, dodaje pytania po potwierdzeniu i wyjaśnia pojęcia z due diligence.

Automatyczne testyGitHub Actions

Każda zmiana w kodzie stawia czystą bazę, generuje dane, buduje całą hurtownię i sprawdza zabezpieczenia asystenta.

Technologie: Python, PostgreSQL, dbt, Power BI, Metabase, Docker, Caddy, GitHub Actions, Claude API, Power Automate, Copilot Studio, Dataverse.

Co widać w danych

Dane są syntetyczne, ale zachowują się jak prawdziwe: mają sezonowość, kampanie, awarie i luki w eksportach.

Błąd, który wyglądał jak poprawny wynik

Pierwsza wersja raportu pokazywała tę samą marżę, 44,8%, dla każdej kategorii produktów. Liczby wyglądały wiarygodnie, ale filtr kategorii w ogóle do nich nie docierał. Miary liczyły z nagłówków zamówień, a nagłówek nie ma kategorii, bo jedno zamówienie może zawierać produkty z kilku.

Po przeniesieniu miar na poziom pozycji zamówienia marża waha się od 34% w elektronice do 58% w modzie. W tym samym przeglądzie okazało się, że dynamika r/r +62% porównywała 24 miesiące z 12. Na porównywalnych okresach wynosi +35%.

Raport Power BI

Dwie strony: przegląd sprzedaży oraz jakość danych i anomalie. Raport jest interaktywny, więc fragmentatory, filtry i podpowiedzi działają. Wnioski pod wykresami powstały razem z Claude, a każda liczba jest sprawdzona zapytaniem w hurtowni.

Pusty obszar zamiast raportu? Sieć firmowa może blokować osadzanie usług Microsoft: otwórz raport w nowej karcie.

Asystent AI w działaniu

Pytanie po polsku zamienia się w zapytanie SQL do hurtowni. Wynik wraca w kilka sekund, razem z wykresem, komentarzem i samym zapytaniem do sprawdzenia.

Asystent odpowiada na pytanie o średnią wartość zamówienia w aplikacji, na stronie i w marketplace: założenia, komentarz, wykres słupkowy i tabela
Pytanie o średnią wartość zamówienia w trzech kanałach sprzedaży.
  1. Model dostaje opis hurtowni: tabele, kolumny, przykładowe wartości i reguły biznesowe, np. że kategorie produktów są tylko w pozycjach zamówień.
  2. Zwraca jedno zapytanie SELECT, typ wykresu i przyjęte założenia. Serwer odrzuca wszystko poza odczytem warstwy raportowej.
  3. Zapytanie wykonuje się na koncie tylko do odczytu, z limitem czasu i liczby wierszy.
  4. Drugi, mniejszy model pisze komentarz wyłącznie na podstawie zwróconych liczb.

Zadaj własne pytanie

Agent Copilot Studio dla zespołu due diligence

W projekcie due diligence zespół prowadzi listę pytań do sprzedającego, zwykle w Excelu aktualizowanym ręcznie. Tutaj lista jest tabelą w Dataverse. Power Automate codziennie rano wysyła pytania bez odpowiedzi od ponad 3 dni, a agent odpowiada na pytania o ich status.

Film się nie wyświetla? Otwórz go na YouTube.

Agent zapisał wiersz bez zgody użytkownika

W instrukcji jako przykład potwierdzenia podałem słowo „dodaj”, a prośba użytkownika zaczynała się od „Dodaj pytanie…”. Model uznał samą prośbę za zgodę i od razu dopisał wiersz do trackera.

Wykrył to test, zanim agent trafił do kogokolwiek. Instrukcja dzieli teraz zapis na dwa kroki, a opis narzędzia mówi wprost, że prośba nie jest potwierdzeniem. Kolejne testy: zapis tylko po „tak”.

Jak wykorzystałem AI

Projekt powstał we współpracy z Claude i nie ukrywam tego. AI pisało dużo kodu, a moja praca polegała na decyzjach, budowie raportu i sprawdzaniu, czy liczby się zgadzają.

EtapCo zrobiło AICo zrobiłem ja
Wybór zakresu Przegląd ofert pracy i popularności platform BI Zakres projektu pod polski rynek: najpopularniejsze narzędzia, bazy danych i branża
Generator danych Kod generatora, wybór zdarzeń i incydentów Sprawdzenie, czy dane zawierają typowe błędy, sezonowość i incydenty do wykrycia
Model danych Cały model w dbt: warstwy, model gwiazdy, testy Ręczne odtworzenie relacji w Power BI, przebudowa na układ nagłówek-pozycja po wykryciu błędu
Power BI Miary DAX, motyw, projekt stron Budowa stron, kontrola wartości, pierwsze wersje wniosków, publikacja
Weryfikacja Testy dbt i asystenta, CI Porównanie wyników z trzech źródeł: obliczeń modelu AI, asystenta na hurtowni na VPS i Power BI; przychód zgadza się co do grosza
Infrastruktura Skrypt serwera, Docker Compose, CI Reinstalacja i zabezpieczenie VPS, domena i DNS, HTTPS, konto Power BI na własnej domenie
Asystent Kod aplikacji, zabezpieczenia, testy Wdrożenie, testy na prawdziwych pytaniach, ocena odpowiedzi
Agent Copilot Studio Projekt tabeli, przepływu i agenta, instrukcje krok po kroku, analiza błędów ze zrzutów Konfiguracja dzierżawy, licencji i rozliczeń, budowa w Power Platform, testy zachowania agenta, nagranie

Pełna lista problemów wykrytych przy weryfikacji jest w README projektu.