POWRÓT DO ARTYKUŁÓW

PBI  (pożyteczne wskazówki) - daty porównywalne w kalendarzu (funkcja "in values")


Dobrą praktyką podczas pracy z narzędziem PBI jest zbudowanie kalendarza (słownika) dat, gdzie dla każdej unikatowej daty będziemy mieli pożyteczne pochodne, np. rok, kwartał, miesiąc, nazwa miesiąca, liczba dni bieżącego miesiąca, nr tygodnia, ostatni dzień miesiąca itp. Pochodnych może być bardzo dużo i dla każdej z nich z pewnością znajdziemy uzasadnienie, jeśli zaczniemy robić bardziej zaawansowane modele w DAX. Kalendarz możemy stworzyć samodzielnie lub skorzystać z generatorów, np. kody funkcji w języku M, aby zautomatyzować to zadanie. Ważne jest, aby oprócz wymaganej historii wypełnić kalendarz o co najmniej 2 lata do przodu. Po zaimportowaniu słownika do PBI należy tabelę oznaczyć jako tabelę dat: "mark as date table".

Chcąc badać dynamikę zmian rok do roku możemy skorzystać z wbudowanej funkcji DAX: sameperiodlastyear lub zbudować bardziej złożone formuły oparte choćby o funkcje MTD i YTD. Jednak takie podejście zakłada, że porównujemy zawsze takie same okresy, np. 01.01 - 16.01.2020 z 01.01-16.01.2019. Często zachodzi potrzeba porównań niestandardowych, np. w oparciu od dni tygodnia, okresy świąt ruchomych itp. Dlatego dobrą praktyką analityczną jest dodanie w słowniku (kalendarzu) dat pozycji: data_porównywalna. Najczęściej data ta uwzględnia przesunięcie, aby porównywać dzień tygodnia z odpowiednim dniem (np. poniedziałki z poniedziałkami itd.) Jednak podejście może być bardzo różne, dlatego wielokrotnie tworzy się kilka wersji daty porównywalnej. W samym narzędziu PBI chcąc pokazać dla wybranej daty wartość aktualną oraz wartość zeszłoroczną wg daty porównywalnej skorzystamy z kompilacji kilku funkcji wg wzoru poniżej:


GBP_PY = calculate(sum(waluty[GBP]);data[date] in values(data[comparable_date]))


GBP to miara w tabeli "waluty" pokazująca aktualne notowania funta wg NBP. Samodzielnie tworzymy miarę zeszłoroczną: GBP_PY. W tym celu z pomocą funkcji calculate zbieramy dane wg daty głównej w tabeli "data" i za pomocą "in values" odnosimy do daty porównywalnej w tej samej tabeli. Zatem np. dla 2 stycznia 2020 (kurs GBP 5,0211) otrzymamy GBP_PY z 3 stycznia 2019 (kurs GBP 4,7589).


przykład