POWRÓT DO ARTYKUŁÓW

PBI - wykorzystanie funkcji "DATEADD" i "HASONEVALUE" do analizowania danych przesuniętych w czasie.


Analizując dane wielokrotnie istnieje potrzeba, aby odnieść się nie tylko do zeszłego roku, ale także poprzedniego okresu (np. miesiąca lub kwartału). Chcąc pokazać dynamikę miesiąc do miesiąca lub kwartał do kwartału z pomocą przychodzi nam funkcja "DATEADD", dzięki której określimy dane przesunięte o wskazany interwał. W funkcji tej możemy przesuwać dane dla roku, kwartału, miesiąca lub dnia. Poniżej pokazałem prosty przykład dot. przesunięcia o 1 miesiąc wstecz. Jak widzimy, w kolumnie "Prev_M" zawsze dla bieżącego wiersza mamy pokazane dane z poprzedniego miesiąca.


przykład

Podobną operację możemy zastosować dla kwartału. Ważne przy tym jest tylko, aby dla tak zdefiniowanej funkcji przeglądać dane po kwartałach, a nie np. po miesiącach. Gdybyśmy zastosowali fragmentatory czasu, to także one powinny być tożsame z danymi wykorzystanymi dla danej wizualizacji.


przykład

Tak jak wyżej wspomniałem, dane możemy przesuwać dla roku, kwartału, miesiąca i dnia. A co z tygodniami? Mimo że nie możemy przesuwać bezpośrednio tygodni, jednak jeśli wykorzystamy przesunięcie dni o 7 do tyłu to uzyskamy podobny efekt.

Problem może pojawić się wtedy, kiedy mamy hierarchię czasową i chcemy na jednej wizualizacji analizować lata, kwartały, miesiące i dni. Wówczas wspomniane powyżej miary pokazują prawidłowe dane tylko dla określonego kontekstu. Jeśli np. w wierszu mamy miesiąc, to prawidłowe dane pokaże funkcja dateadd dot. miesiąca. Jednak ta funkcja pokaże zupełnie nieprawidłowe wyniki dla innych wierszy, w których mamy np. lata, kwartały i dni. Z pomocą może nam przyjść tutaj funkcja "HASONEVALUE", która pozwala zorientować się, jak wygląda kontekst filtra. Np. dla danego kwartału możemy mieć tylko 1 rok i kwartał, ale 3 miesiące i wiele dni. Mamy tutaj do czynienia z logicznym sprawdzeniem (prawda/fałsz) w ramach poszczególnych okresów, jak na poniższym przykładzie:


przykład

Dzięki określeniu, jaki mamy poziom w wierszu możemy odpowiednio dopasować właściwą funkcję:


przykład

Poniższa tabela pokazuje proste zastosowanie funkcji dateadd dla poszczególnych okresów (z błędami, gdy kontekst jest niewłaściwy). Ostatnia tabela to prawidłowy raport, gdzie funkcje dateadd zostały skompilowane w ramach miary: "Sales_prev_period".


przykład

przykład