Poziomy ziarnistości dat w Power BI - jakie mają znaczenie i jak je wykorzystać?
Spis treści:
Power BI to jedno z najpotężniejszych narzędzi do analizy i wizualizacji danych. Jednym z jego kluczowych elementów, który umożliwia skuteczną pracę z danymi, jest możliwość manipulowania datami na różnych poziomach ziarnistości. W tym artykule przyjrzymy się, czym są poziomy ziarnistości dat, jak wpływają na analizę danych, oraz jak wykorzystać je w Power BI, aby uzyskać lepsze i bardziej zrozumiałe wizualizacje.
Przejdźmy zatem do wyjaśnienia tego pojęcia.
W Power BI, kiedy analizujemy dane związane z czasem, często spotykamy się z pojęciem poziomu ziarnistości dat. Może to brzmieć skomplikowanie, ale w rzeczywistości jest to dość prosta koncepcja, która ma kluczowe znaczenie przy pracy z danymi związanymi z czasem.
Tłumacząc prostym językiem poziom ziarnistości dat oznacza, na jakim poziomie szczegółowości są przechowywane i wyświetlane dane czasowe. Innymi słowy, chodzi o to, czy patrzymy na dane na poziomie dnia, miesiąca, kwartału czy roku. Warto pamiętać, że mamy także daty o bardzo wysokiej ziarnistości (np. dane na poziomie minut czy sekund).
Na przykład, jeśli mamy dane sprzedaży i chcemy zobaczyć, ile produktów sprzedaliśmy w każdym miesiącu, to nasz poziom ziarnistości to miesiąc. Jeśli natomiast chcemy zobaczyć sprzedaż na poziomie każdego dnia, to nasz poziom ziarnistości to dzień.
Przykłady poziomów ziarnistości daty
Poziom roku – Zwykle wykorzystywany do analiz długoterminowych, takich jak prognozy roczne czy analiza trendów na przestrzeni lat. Agregowanie danych na poziomie rocznym pozwala na uzyskanie ogólnych informacji o rozwoju firmy, branży lub rynku.
Poziom kwartału – Dobrze sprawdza się w analizach cyklicznych, takich jak analiza wyników finansowych czy wydajności produkcji w podziale na kwartały.
Poziom miesiąca – Bardzo popularny w raportach biznesowych, gdzie analiza odbywa się na poziomie miesięcznym. Dzięki temu można łatwo zauważyć np. sezonowe wahania.
Poziom tygodnia – Przydatny w bardziej szczegółowych analizach, gdzie chcemy zrozumieć zmiany w krótkim okresie czasu, gdzie ważna jest analiza danych na poziomie tygodniowym.
Poziom dnia – W przypadku bardzo szczegółowych analiz operacyjnych, np. w logistyce, sprzedaży codziennej. Pozwala to na dokładną analizę wyników na poziomie poszczególnych dni.
Poziom godziny – Niezwykle precyzyjny poziom ziarnistości, wykorzystywany w analizach czasowych, gdzie każda godzina ma znaczenie, np. w branży transportowej, monitorowaniu produkcji.
Poziom minuty/sekundy – Często spotykany w analizach, które wymagają ekstremalnej precyzji czasowej, np. w analizach danych z urządzeń pomiarowych, czy w systemach monitorowania, w czasie rzeczywistym.
Poniżej przykład tabeli gdzie poziom ziarnistości jest dostosowany do dnia każdej sprzedaży. Proszę zwrócić uwagę, że każda transakcja umieszona jest w osobnym wierszu więc w jednym dniu może być ich wiele.
Poziom ziarnistości ma kluczowe znaczenie w Power BI, ponieważ decyduje o tym, jak nasze dane będą prezentowane w raportach i jak będziemy w stanie je analizować. Wybór niewłaściwego poziomu ziarnistości może prowadzić do trudności w analizie danych lub w wyciąganiu wniosków.
Na przykład, jeśli analizujemy dane sprzedaży na poziomie dni, ale nasze dane mają tylko informacje miesięczne, może to prowadzić do niedokładnych wniosków. Podobna sytuacja może wystąpić także, w drugą stronę, kiedy potrzebujemy porównać się do np. najlepszego okresu w historii działalności naszej firmy, ale posiadamy dane bardzo szczegółowe np. na poziomie pojedynczej sprzedaży, w każdym dniu podobnie jak na obrazie powyżej. W takim przypadku konieczne będzie dostosowanie poziomu ziarnistości, aby uzyskać odpowiednią dokładność analizy, ale do tego tematu wrócimy w dalszej części artykułu.
Ogólnie rzecz ujmując można powiedzieć, że odpowiedni poziom ziarnistości pozwala uzyskać czytelne raporty, a także unikać nadmiernej szczegółowości, która mogłaby sprawić, że raport stałby się chaotyczny.
Zastanówmy się w jaki sposób możemy opanować daty w tabelach aby pasowały do naszych potrzeb.
Przede wszystkim zawsze dobrym pomysłem będzie utworzenie tabeli kalendarza, która automatycznie tworzy hierarchię dat. Pozwoli na łatwe przechodzenie między różnymi poziomami ziarnistości. Możesz rozpocząć od poziomu roku, a potem przejść do poziomu miesiąca lub dnia. To bardzo przydatne, gdy chcesz analizować dane na różnych poziomach szczegółowości.
Poniżej przykładowy kod DAX tworzący kilkukolumnową tabelę z datami.
Proszę zwrócić uwagę, że za pomocą funkcji DAX możemy utworzyć dodatkowe kolumny wyliczające tygodnie czy dni tygodnia. Kolumny takie mogą być przydatne do utworzenia niestandardowych hierarchii i zarządzania nimi na raporcie.
DimDate =
var __min_rok = YEAR(MIN(FactInternetSales[Data zamówienia]))
var __max_rok = YEAR(MAX(FactInternetSales[Data dostawy]))
var __min_data = DATE(__min_rok,1,1)
var __max_data = DATE(__max_rok,12,31)
var __kalendarz = CALENDAR(__min_data,__max_data)
return
ADDCOLUMNS(
__kalendarz,
"Rok",YEAR([Date]),
"Nr miesiąca", MONTH([Date]),
"Nazwa miesiąca", FORMAT([Date],"MMM"),
"Kwartał", FORMAT([Date],"\QQ"),
"Numer dnia tygodnia", WEEKDAY([Date],2),
"Nazwa dnia tygodnia",FORMAT([Date],"DDDD"),
"Nr tygodnia",WEEKNUM([Date],21)
)
Po utworzeniu relacji z tabelą faktów możemy bez przeszkód korzystać na raporcie z hierarchii sprawnie przełączając się między różnymi poziomami ziarnistości jak poniżej.
Aby przełączać się między poziomami hierarchii wystarczy wykorzystać strzałeczki, w prawnym górnym rogu wizualizacji służące do wyszczególniania i uogólniania danych.
Jeżeli potrzebujesz wykorzystać niestandardową hierarchię jak np. miesiąc – tydzień – dzień tygodnia to możesz ją utworzyć w Power BI w tabeli.
Poniżej przykład w jaki sposób utworzyć niestandardową hierarchię z datami.
Aby to zrobić, wystarczy w zakładce Widok modelu kliknąć prawym przyciskiem myszy na pole daty, wybrać „Utwórz hierarchię” i dodać poziomy, które Cię interesują.
Posiadając taką hierarchię, w modelu bez przeszkód można analizować dane, w niestandardowy sposób.
Spróbujmy się zastanowić co w sytuacji odwrotnie, czyli jeśli masz dane na poziomie dziennym, ale chcesz je analizować na poziomie miesięcznym, Power BI pozwala na agregowanie tych danych. Weźmy na tapetę przykład gdy potrzebujemy pokazać na raporcie KPI porównujący wynik sprzedażowy każdego kwartału, do kwartału najlepszego, w historii naszej firmy. Dane w tabeli faktów przechowujemy na poziomie ziarnistości każdej sprzedaży, a potrzebujemy otrzymać tabelę w podsumowaniu rocznym i kwartalnym. Możemy za pomocą kodu DAX dane zagregować za pomocą tzw. tabel tymczasowych i wykorzystać je do dalszych analiz.
Poniżej wykorzystanie funkcji SUMMARIZE do pogrupowania danych do poziomu roku i kwartału oraz ADDCOLUMNS w celu dodania nowych kolumn obliczeniowych. W wyniku działania takiego wyrażenia otrzymamy nową tabelę na odpowiednim poziomie ziarnistości, która posłuży nam do dalszych wyliczeń, w miarach w Power BI.
Po utworzeniu takiej tabeli otrzymamy, w modelu zagregowane dane na odpowiednim poziomie ziarnistości, który nas interesuje, w analizach i możemy ją wykorzystać do dalszych wyliczeń. Uwaga! Ciekawostka dla chętnych!
Dlaczego została użyta funkcja Calculate, w wyrażeniu skoro ona tylko jako argument posiada SUM()? Podpowiedź – pracujemy w kontekście wiersza i niezbędne jest wymuszenie tzw. „Przejścia kontekstu” . Takie smaczki i ciekawostki DAX szczegółowo są omawiane na szkoleniach DAX, na które przy okazji zapraszamy😊.
Obrazując przykład z KPI wykonam dzielenie funkcją DIVIDE, gdzie w liczniku odwołam się do miary, w bieżącym kontekście filtra na raporcie, natomiast w mianowniku funkcją MAX() skorzystam z nowej pogrupowanej tabeli na poziomie ziarnistości roku i kwartału.
% do najlepszego okresu =
DIVIDE(
[$ Wartość sprzedaży],
MAX('tTemp Rok Kwartał'[Wartość])
)
Manipulując danymi, w ten sposób jestem w stanie zarządzać datami na raporcie i tworzyć zaawansowane wyliczenia, w DAX.
Poniżej tabela prezentująca wyniki sprzedażowego każdego kwartału, oraz porównanie procentowe zawsze do najlepszego okresu sprzedażowego. Efekt taki uzyskałem dzięki agregacji dat za pomocą wyrażeń DAX.
Podsumowując poziom ziarnistości dat, w Power BI to bardzo ważny element, który pozwala na precyzyjną analizę danych związanych z czasem. W zależności od tego, co chcesz zobaczyć w swoich raportach, możesz dostosować poziom ziarnistości do swoich potrzeb – od dnia, przez miesiąc, aż po rok. Dzięki możliwością Power BI, takim jak hierarchie dat, agregacja w DAX czy dynamiczne filtrowanie danych, możesz łatwo dostosować ziarnistość dat do swoich potrzeb, co pozwala na lepsze podejmowanie decyzji biznesowych. Pamiętaj, że odpowiedni wybór poziomu ziarnistości, ma kluczowe znaczenie dla dokładności analizy danych i zależy od specyfiki analizowanych danych i celów, które chcesz osiągnąć.