Czemu sumy wyrażeń się nie zgadzają?

Często zdarza się, że gdy dokonujemy zaawansowanych obliczeń w Power BI, to po przeniesieniu ich do tabeli każdy wiersz jest odpowiednio przeliczany, natomiast gdy spojrzymy na sumę w tabeli okazuje się, że wyświetla nam się zupełnie inna wartość. Podobnie dzieje się w przypadku umieszczenia miary na wykresie. Problemem jest sposób wykonywania obliczeń. DAX jest językiem bazującym na kontekście i tworzenie skomplikowanych obliczeń wymaga analizy i zaplanowania ich dalszego wykorzystania.
Wyobraźmy sobie przykład, w którym posiadamy dane sprzedażowe zagregowane na poziomie dziennym. Naszym zadaniem jest utworzenie średniej sprzedaży i wyświetlenie jej sumy. W pierwszym etapie funkcja wydaje się być prosta:
Av Sales =
AVERAGE (
fSprzedaz[Wartość Sprzedaży]
)

Praca na zmiennych

Gdy umieścimy naszą miarę w tabeli, średnie wartości dla dni zostaną policzone poprawnie, natomiast w podsumowaniu miesięcznym Power BI pokaże nam wartość średniej dziennej dla miesiąca. Jak zamienić poprawić naszą miarę, aby pokazywać poprawne sumy? Z pomocą przychodzi kombinacja funkcji SUMMARIZE oraz SUMX. Funkcja SUMX dokonuje obliczenia sumy danego wyrażenia na poziomie rekordu w danej tabeli, natomiast SUMMARIZE służy podsumowaniu danych w tymczasowej tabeli. Warto w tym celu posłużyć się zadeklarowanymi zmiennymi, które ułatwią budowę miary. Będzie ona wyglądała następująco:
VAR _Srednia = [Av Sales]
VAR _Tabela=
SUMMARIZE (
VALUES ( Kalendarz [Data] ),
"Srednia", _Srednia
)
VAR _Podsumowanie=
SUMX(
_Tabela,
[Srednia]
)
RETURN
IF(
HASONEVALUE(
Kalendarz[Data]
),
_Srednia,
_Podsumowanie
)

Rozłóżmy naszą miarę na czynniki pierwsze. Zmienna _Srednia określa wykorzystanie miary [Av Sales], która oblicza średnią sprzedaż. Kolejna zmienna_Tabela, tworzy tymczasową tabelę utworzoną z dwóch kolumn – unikatowe wartości dni z kalendarza ( VALUES(Kalendarz[Data])) oraz wartość średniej sprzedaży dla danego dnia. Ostatnia zmienna _Podsumowanie oznacza sumę wartości średnich dla dni z tymczasowej tabeli _Tabela. Po zadeklarowaniu zmiennych chcemy otrzymać (RETURN) wyrażenie warunkowe, które mówi, że jeśli jest wyświetlany pojedynczy rekord dla dnia, to miara ma wykorzystać wartość średnią dla dnia, natomiast w przypadku braku pojedynczej wartości dla dnia wykorzystane zostanie podsumowanie średnich.

Podsumowanie

Choć na pozór powyższa miara wydaje się być skomplikowana, to opracowanie kilku przykładów pozwoli nam lepiej zrozumieć jej zastosowanie, a także utrwali tok opracowywania tej miary. W przypadku problemów z wykorzystaniem kombinacji powyższych miar, polecam prześledzić przykład na kanale Enterprise DNA.

Interesujący artykuł? Podaj dalej!