Czym są tabele dat w Power BI
Tabele (tablice) dat (ang. date tables) są ważnym elementem w Power BI, ponieważ umożliwiają one efektywne tworzenie raportów i analizowanie danych chronologicznie. Tablice dat zwykle zawierają informacje dotyczące daty, takie jak dzień, miesiąc, rok, kwartał, itp. Te informacje są następnie używane jako filtry lub osie wizualizacji, umożliwiając użytkownikom szybkie i łatwe porównywanie danych w różnych przedziałach czasowych.
Tabele dat są także przydatne do tworzenia wskaźników biznesowych i trendów, takich jak średnie sprzedaży miesięcznie lub roczne, które są kluczowe dla podejmowania decyzji strategicznych.
Tabele dat mogą być tworzone ręcznie lub automatycznie w Power BI. Może się okazać że tabela dat jest już w danych które ładujemy, a tym samym jest ona zaimportowana. Ważne jest aby jednak sprawdzić czy tabela ta jest odpowiednio sformatowana do wykorzystania w analizach.
W najprostszym wydaniu tabela dat to po prostu tabela, która zawiera wszystkie daty między datą początkową a końcową.
Bardziej rozbudowane tabele będą zawierały informacje o latach, miesiącach, tygodniach, dniach, dniach wolnych od pracy, datowanie, offsety i wiele, wiele więcej. Wszystko, aby ułatwić dalszą pracę na wartościach w czasie.
Dlaczego tabela dat jest tak ważna?
Tabele dat w Power BI są konieczne, ponieważ bez nich, analitycy i użytkownicy mogliby mieć trudności z analizowaniem danych chronologicznie. Bez tabeli dat, dane mogą być trudne (a czasami wręcz niemożliwe) do grupowania, filtrowania i analizowania w różnych przedziałach czasowych.
Tabele dat umożliwiają w Power BI łatwiejsze zrozumienie kontekstu czasowego dla danych, co pozwala na lepsze porównywanie danych w różnych przedziałach czasowych. Umożliwiają też łatwe tworzenie wskaźników biznesowych, takich jak średnie sprzedaży miesięcznie czy roczne, co jest kluczowe dla podejmowania decyzji strategicznych.
Tabele dat mogą być również używane do określania dni roboczych, weekendów, dni wolnych od pracy, itp, co jest niezbędne do analizowania danych dotyczących przestojów, pracy zmianowej, itp..
W skrócie tabela dat pozwala wykorzystanie wbudowanych funkcji analizy w czasie i lepsze zrozumienie kontekstu czasowego danych.
W jaki sposób stworzyć tabelę dat w Power BI?
Możesz ją stworzyć z wykorzystaniem Edytora Power Query albo DAX. Czy któraś z tych metoda jest lepsza? Czy można jednoznacznie określić, która z tych metod jest lepsza? Nie.
Ostatecznie będą one zbliżone do siebie zarówno pod kątem łatwości tworzenia jak i ich wydajności więc wybór należy tylko do Ciebie i Twoich osobistych preferencji.
Funkcja CALENDARAUTO()
Funkcja CALENDARAUTO() jest funkcją Power BI, która służy do automatycznego tworzenia tabeli dat. Używa ona danych z tabel z danymi biznesowymi, w celu stworzenia tabeli dat zawierającej daty od pierwszej do ostatniej daty w tabelach danych biznesowych.
Działanie funkcji CALENDARAUTO() polega na:
- wyszukaniu wszystkich kolumn datowych w tabelach danych biznesowych
- znalezieniu najwcześniejszej i najpóźniejszej daty w kolumnach datowych
- stworzeniu tabeli dat zawierającej wszystkie daty od pierwszej do ostatniej daty
Funkcja ta jest przydatna, ponieważ pozwala na automatyczne utworzenie tabeli dat, bez potrzeby jej ręcznego tworzenia. Może być to szczególnie przydatne, gdy dane są dostarczane często i trzeba być pewnym, że tabela dat jest zawsze aktualna i zawiera wszystkie potrzebne informacje.
Składnia funkcji CALENDARAUTO() jest następująca:
CALENDARAUTO( <start_date>, <end_date>, <column_name> )
gdzie start_date i end_date są opcjonalne i mogą być użyte do określenia przedziału dat dla tabeli, natomiast column_name to nazwa kolumny daty w tabelach danych biznesowych z którymi tabela dat będzie połączona.
Jest przydatna, ale z niej nie korzystam. Dlaczego?
Ponieważ mam przygotowane własne skrypty, które tworzą bardziej rozbudowane i możliwe do skonfigurowania tabele 🙂
Tabela Dat w DAX
Zacznijmy od stworzenia nowej tabeli obliczeniowej i nazwijmy ją Kalendarz.
Kalendarz = CALENDAR(
DATE( 2000, 1, 1), // Data początkowa tabeli
DATE( 2022, 12, 31) // Data końcowa tabeli
)
I właśnie utworzyliśmy tabelę z jedną kolumną w której wylistowane są wszystkie daty w tym przedziale.
Zmieńmy jeszcze tylko typ danych na Data i format na Short Date i mamy gotową bazę do dalszej pracy.
Dodajmy do niej kolumnę z rokiem
Rok = YEAR( [Date] )
I podobne kolumny stwórzmy dla miesiąca i dnia miesiąca
Miesiąc = MONTH( [Date] )
Dzień w miesiącu = DAY ( [Date] )
I nasza bardzo podstawowa tabela daty jest gotowa.
Oczywiście w zależności od potrzeb biznesu możemy ją rozbudować o kolejne kolumny. Często spotykanym przypadkiem jest raportowanie oparte o tygodnie.
Dlatego dodajmy sobie kolejną kolumnę z numerem tygodnia:
Numer tygodnia = WEEKNUM( [Date], 2 )
Tylko co to za dziwna „2” w tym kodzie?
Power BI pozwala Ci skonfigurować dzień od którego ma się zaczynać tydzień. W naszym kręgu kulturowym tym dniem jest Poniedziałek – więc wpisujemy parametr „2”. Jedynka sprawi, że tygodnie będą obliczane z Niedzielą jako pierwszym dniem.
Kolejną kwestią w obliczaniu numeru tygodnia jest przyjęta konwencja w danej organizacji. W naszym przykładzie rok 2000 zaczyna się w sobotę. Czyli powinniśmy te pierwsze dwa dni roku traktować jako pierwszy tydzień roku? A może jednak Jako ostatni poprzedniego?
Zgodnie z kodem, który wprowadziliśmy przed chwilą traktowane są jako pierwszy tydzień roku. Zmodyfikujmy go, aby były obliczane tylko pełne tygodnie.
Numer tygodnia ISO = WEEKNUM( [Date], 21 )

Tabela Dat w Power Query
Przejdźmy do Edytora Power Query i stwórzmy najprostszy z możliwych kalendarz.
Stwórzmy tutaj dwa parametry:
- KalendarzPoczatek
- KalendarzKoniec
Będą one nam wyznaczały początkowy i końcowy rok naszej tabeli dat,

Dalej stwórzmy nowe Puste zapytanie

W edytorze zaawansowanym wpiszmy poniższy kod dla tego zapytania
let
RokPoczatek = #date( KalendarzPoczatek, 1, 1 ),
RokKoniec = #date( KalendarzKoniec, 12, 31 ),
LiczbaDni = Duration.Days( RokKoniec - RokPoczatek )
in
LiczbaDni
Dzięki temu obliczymy liczbę dni między krańcowymi datami.
Dodajmy do tego jeszcze trochę kodu 🙂
let
RokPoczatek = #date( KalendarzPoczatek, 1, 1 ),
RokKoniec = #date( KalendarzKoniec, 12, 31 ),
LiczbaDni = Duration.Days( RokKoniec - RokPoczatek ),
Daty = List.Dates( RokPoczatek, LiczbaDni +1, #duration( 1, 0, 0, 0 ) )
in
Daty
I tak wygląda wynik:

Teraz za pomocą wcześniej ustalonych parametrów w prosty sposób możemy modyfikować datę starty i końca naszego kalendarza.
Przekształćmy jeszcze nasza listę do tabeli

I możemy dalej ją rozbudowywać.
I tutaj jest to mega proste, ponieważ z poziomu menu Dodaj kolumnę możemy sobie w zasadzie dużą część wymaganych kolumn po prostu wyklikać, bez ręcznego wpisywania kodu.

Gotowe skrypty kalendarzy
Przygotowałem dla Ciebie pliki z gotowymi skryptami do stworzenia bardziej rozbudowanych tabeli dat. Spróbuj wkleić je do Twoich raportów, prześledź ich kod i zobacz, jakie informacje możemy tam jeszcze wcisnąć.
Pobierz pliki do tego wpisu
Aby móc pobrać pliki musisz się zalogować