Kalendarz w Power BI. Istnieje wiele funkcji, dzięki którym możemy w szybki sposób wykonywać obliczenia związane z czasem. Wymiar „Czas” jest obecny w każdym raporcie, dlatego możliwość korzystania z tych funkcji jest niezwykle istotna.
Do czego możemy wykorzystać kalendarz w Microsoft Power BI?
Jeżeli doczytamy do kalendarza na przykład dane dotyczące urlopów naszych pracowników możliwe będzie przygotowanie raportu ich wykorzystania.

Po co budować osobny kalendarz jeżeli nasza tabela źródłowa zawiera kolumnę z datą?
Kluczowe do odpowiedzenia na to pytanie jest zrozumienie metodyki obliczeniowej formuł pozwalających na pokazanie np. zmiany rok do roku. Jeżeli porównamy dane urlopowe z niedziel jednego roku do odpowiadających im dni w kolejnym roku okaże się, że kolumna w tabeli źródłowej nie zawiera żadnych danych. W takiej sytuacji porównamy się do nieistniejących dat i nie zobaczymy zmiany rok do roku, a to zaburzy wyliczenia wskaźników. Zbudowany kalendarz zapewnia nam uzupełnienie wszystkich „dziur” w założonym zakresie czasu. Drugim powodem potrzeby budowania kalendarza jest oczywiście kwestia wydajnościowa. Dostawiając do tabeli zawierającej kilka milionów rekordów kolejne kolumny do zaprezentowania np. numeru tygodnia bardzo obciążylibyśmy nasz model danych. Wprowadzenie takiej kolumny do tabeli słownikowej jest kilkukrotnie wydajniejsze i prostsze w zarządzaniu.
Po co budować kalendarze w Power BI?
Należy udzielić odpowiedzi „Dla optymalizacji wydajności raportu oraz zabezpieczenia poprawności wyliczeń wskaźników”.
Aby raporty mogły prawidłowo wykonywać swoją pracę, w modelu danych powinien znaleźć się kalendarz lub tabela dat. Usługa Power BI zapewnia nam wbudowaną hierarchię dat utworzoną na podstawie pól zawierających wymiar czasu. Daje nam ona prostą klasyfikację dat składającą się z roku, kwartału, miesiąca i dnia. Taka wbudowana hierarchia bardzo ułatwia pracę z danymi jednak ma pewne ograniczenia. Nie możemy za jej pomocą podzielić naszych danych np. na tygodnie, dni tygodnia czy chociażby odpowiedzieć na pytanie jak będę wyglądały nasze dane używając innego niż standardowy rok finansowy. Między innymi właśnie z tego powodu bardzo dobrą praktyką jest przygotowanie własnego kalendarza jeszcze przed rozpoczęciem pracy nad raportem.
Power Query lub DAX do stworzenia kalendarza w Power BI
W Power BI mamy dwie drogi do stworzenia własnego kalendarza. Możemy skorzystać z dodatku Power Query lub napisać go w języku DAX. Obie te metody są do siebie bardzo podobne pod względem wydajności i zastosowań. Dzisiaj jednak przyjrzymy się jak stworzyć czytelny i funkcjonalny kalendarz, wykonując jednorazową pracę, która będzie do wykorzystywana we wszystkich raportach. Kalendarz ten napisać możemy np. w języku DAX.
Do utworzenia Kalendarza w DAX Power Bi daje nam dwie proste funkcje:
- CALENDARAUTO
- CALENDAR
Obie te funkcje zwrócą nam kolumnę „Date” zawierającą listę unikatowych wartości dat. Pojawia się z pewnością pytanie czym różnią się obie te funkcje.
Funkcje Calendarauto lub Calendar w Power BI
Tak więc funkcja CALENDARAUTO automatycznie przeszukuje cały model danych, znajduje pierwszą i ostatnią datę i na ich podstawie tworzy kalendarz. Nie jest to jednak rozwiązanie idealne, ponieważ wystarczy, że w naszych danych pojawi się jedna błędna data lub mamy kolumnę z datami urodzenia. W efekcie możemy otrzymać kalendarz zawierający daty od np. 1990 roku do roku bieżącego.
Funkcja CALENDAR pozwala nam na samodzielne określenie interesującego nas zakresu czasu. Możemy to zrobić podając jako start najstarszą datę dostępną w naszych danych (wpisując ją lub wyliczając z określonej tabeli i kolumny), a koniec jako kolejny rok liczony od daty dzisiejszej. Tak przygotowana funkcja zwróci nam kolumnę z datami z zakresu np. 2020.01.01 – 2023.12.31.

Mając już zdefiniowany zakres dat możemy przygotować pełny kalendarz posiadający wszystkie dane, których potrzebujemy. Korzystając z dostępnych w DAX funkcji możemy rozszerzać nasz kalendarz o interesujące nas kolumny.
W tym miejscu warto zastanowić się czego możemy potrzebować aby rozszerzyć formułę o dodatkowe kolumny korzystając z odpowiednich funkcji celem wyświetlenia informacji o roku, kwartale, miesiącu, numerze tygodnia, dniu czy też dniu tygodnia oraz różnych kombinacji powyższych przykładów w jednej kolumnie (np. rok w połączeniu ze skrócona nazwą miesiąca)
Tworzenie tabeli dat rzeczywistych w Power BI
Odpowiednio przygotowując funkcje możemy też przykładowo określić własną definicję roku finansowego. Przedstawiony i opisany fragment to oczywiście tylko punkt wyjścia do stworzenia tabeli dat rzeczywistych. To jak bardzo ją rozbudujemy i co dokładnie w niej umieścimy zależy już tylko od tego jakie wymagania są określone wobec raportów nad którymi pracujemy. Pewne jest jednak to, że daje nam to ogromne możliwości. Poniżej zamieszony jest przykładowy kalendarz z szeregiem automatycznie wygenerowanych kolumn, bez potrzeby korzystania z opcji „dodaj kolumnę” i żmudnego powielania przy kolejnych raportach tych samych formuł.

Aby kalendarz był bardziej funkcjonalny, czytelny, a przede wszystkim automatyczny możemy część argumentów zapisać korzystając ze zmiennych co pozwoli nam tworzyć wewnętrzne definicje pojęć wykorzystywanych następnie w kalkulacjach tworzących kolejne kolumny kalendarza. Dzięki takiemu zabiegowi będziemy mieli większą kontrolę nad naszymi danymi i w szybki i łatwy sposób będziemy w stanie dostosować dane do tego co jest nam potrzebne. Jeżeli chcemy aby z kalendarza korzystali różni użytkownicy zasadnym jest również zastosowanie dodatkowych komentarzy z opisami i wskazówkami.

Sprawi to, że odnalezienie się w naszej tabeli będzie dużo łatwiejsze zarówno dla nas jak i dla osób, które będą na niej pracować po raz pierwszy. Ważną rzeczą jest również ustawienie aby wszystkie pola tekstowe jak na przykład „Nazwa miesiąca” miały sprecyzowane według której kolumny mają być posortowane. Jeżeli tego nie wykonamy, nazwy miesiąca zostaną ustawione alfabetycznie.
Zalety tworzenia własnej tabeli dat
Zalet z utworzenia własnej tabeli dat jest bardzo dużo. Pozwala ona na filtrowanie raportów według podstawowych atrybutów czasowych oraz wszystkich innych agregacji, których wymaga dany raport. Możemy utworzyć widok czasu, który różni się od standardowego kalendarza, a jest uszyty na miarę naszych potrzeb. Tak naprawdę dobrze przygotowany kalendarz wystarczy zrobić jeden raz i można używać go we wszystkich swoich raportach. Dodatkowo dostępne w danych tabele faktów zazwyczaj nie zawierają wiersza dla każdego dnia w przeciwieństwie do kalendarza przygotowanego przez nas.
Z całą pewnością każdy użytkownik Power Bi przygotowujący raporty prędzej czy później będzie musiał przygotować własny kalendarz, a z czasem będzie go wykorzystywał na co dzień. Czas jest jednym z najważniejszych wymiarów w raportowaniu, a przygotowanie własnego kalendarza oszczędza czas tworzenia raportu oraz poprawia wydajność i spójność używanych przez nas danych.
Joanna Korbecka