Przykładowy raport Power BI dla średniej wielkości firmy logistyczno-spedycyjnej. Starałem się zobrazować najistotniejsze informacje z punktu widzenia zarządzania taką firmą, a jednocześnie wybrać nietypowe wizualizacje, inne od pozostałych raportów. Raport to w istocie jednostronicowy dashboard operacyjny skupiony wokół mapy tras wykorzystywanych w raportowanym okresie. Im większe zagęszczenie na jednej trasie, tym więcej było historycznie wysyłek pomiędzy tymi lokalizacjami. Jednocześnie baner nad mapą pokazuje najpopularniejsze miejsca docelowe (porty, lotniska, terminale), przychody na danej trasie i zmiany w stosunku do poprzedniego miesiąca.
Wszystkie wizualizacje możemy oczywiście filtrować po wykorzystywanym środku transportu (drogowy, kolejowy, powietrzny, morski) oraz po wybranych miesiącach. Druga wizualizacja warta uwagi to wykres słupkowy typu waterfall na dole dashboard'u, pokazujący w jaki sposób poszczególne środki transportu kontrybuowały do zysku operacyjnego miesiąc po miesiącu. Widzimy tutaj jak np. prawie cały zysk w maju 2020 r. został potem skonsumowany przez stratę na przesyłkach morskich w czerwcu 2020 r. Najmniejsza wizualizacja to dynamiczna mapa rozmiarów kontenerów użytych do obsłużenia przesyłki.
W tym raporcie chciałem pokazać jak można ciekawie przedstawić dane branżowe pochodzące z różnych systemów (księgowość, CRM, śledzenie przesyłek). Starałem się podkreślić znaczenie danych geolokacyjnych w raportach dla branży logistyczno-spedycyjnej. Niestety raport jest oparty na danych historycznych, a można wyobrazić sobie rozbudowanie go w oparciu o streaming danych i śledzenie drogi przesyłek w czasie rzeczywistym.
Korzystałem z publicznie dostępnego datesetu Shipments z "Power BI Challenge Transport & Shipping Data" ze strony https://forum.enterprisedna.co/t/power-bi-challenge-12-transport-shipping-data/14846 W formie fizycznej było to plik Excel z ponad 100 kolumnami i 200 wierszami, pełen błędów i niespójności. 5-literowe kody lokalizacji krajów i regionów/miast UNLOCO pobrałem ze strony https://unece.org/trade/cefact/unlocode-code-list-country-and-territory w formacie CSV.
Power Query (M) – transformacje danych: scalanie, filtrowanie, unpivot, dodawanie indeksów; Azure Maps – wizualizacja tras jako warstwa ścieżek, Power BI Desktop (główne środowisko), Power BI Service (zarządzanie)
Największe wyzwania wynikały z niskiej jakości danych, dużego rozmiaru pliku źródłowego (>100 kolumn), niespójnych i niepełnych rekordów. Skutkiem były pracochłonnej normalizacje i przekształcenia. Efektem był bardzo rozbudowany model danych w Power BI. Wizualizacja mapy tras wymagała zapoznania się dokumentacją Azure Maps i wykonania przekształceń tabeli Origins, Destinations i Unlocodes tak, aby spełnić wymagania tej wizualizacji (kolumny path_id i point_order). Dużą pomocą okazał się AI Copilot w przygotowaniu skryptu w języku M. Problemem było też źródło UNLOCO w formacie CSV z kodami krajów i miast z racji swojego rozmiaru (ponad 300 tys. wierszy) i formatu utrudniającego pracę konektora CSV do Power BI (pojawiający się w pliku nieregularny wiersz z podsumowaniem dla każdego kraju powodował wartości null).
Niemałe trudności sprawiła też wizualizacja pokazująca użyte rozmiary kontenerów, która wymagała unpivota kilku kolumn z rozmiarami(20F, 30F itp.) i zgrupowanie po ShipmentID. Niektóre miary DAX typu time intelligence, wymagały uprzedniego rozszerzenia i tak już dużej tabeli faktów Shipments o kolumnę kalkulowaną. W efekcie, mogliśmy śledzić takie KPI jak % terminowo dostarczonych przesyłek. Poniżej przykładowe zdjęcia z pracy nad raportem:
E-mail: kontakt@jakubwozniak.pl