Power BI
CALCULATE w DAX – najważniejsza funkcja Power BI wyjaśniona po ludzku
Marcin Słupikowski · · 8 min czytania
Jeśli miary w Power BI „czasem się nie zgadzają”, prawie zawsze chodzi o kontekst filtra. A najważniejszą funkcją, która go zmienia, jest CALCULATE. Gdy ją zrozumiesz, reszta DAX zaczyna mieć sens.
Najpierw: kontekst filtra
Każda wartość w wizualizacji jest liczona w jakimś kontekście – zestawie filtrów pochodzących z wierszy tabeli, fragmentatorów, osi wykresu i filtrów raportu. Ta sama miara:
Sprzedaż = SUM ( Sprzedaz[Kwota] )w wierszu „Polska” policzy sprzedaż tylko dla Polski, a w wierszu „Niemcy” – tylko dla Niemiec. Miara jest jedna, kontekst się zmienia.
CALCULATE zmienia kontekst
CALCULATE liczy wyrażenie (pierwszy argument) w zmienionym kontekście filtra (kolejne argumenty):
Sprzedaż PL =
CALCULATE ( [Sprzedaż], Klienci[Kraj] = "Polska" )Ta miara pokaże sprzedaż dla Polski niezależnie od tego, jaki kraj jest wybrany w wierszu – bo CALCULATE zastępuje filtr na kolumnie Klienci[Kraj]. Filtry na innych kolumnach (np. rok, produkt) nadal działają.
Udział w całości: ALL
Żeby policzyć udział produktu w sprzedaży, potrzebujesz mianownika, który ignoruje filtr produktu:
Udział % =
DIVIDE (
[Sprzedaż],
CALCULATE ( [Sprzedaż], ALL ( Produkty ) )
)ALL ( Produkty ) usuwa filtry z tabeli Produkty, więc mianownik to sprzedaż wszystkich produktów – w tym samym roku czy regionie, bo te filtry zostają. DIVIDE zabezpiecza przed dzieleniem przez zero.
Rok do roku
Sprzedaż RR =
CALCULATE ( [Sprzedaż], SAMEPERIODLASTYEAR ( Kalendarz[Data] ) )Funkcje analizy czasowej wymagają poprawnej tabeli kalendarza: ciągłych dat bez luk, połączonej relacją z tabelą faktów i oznaczonej jako tabela dat.
Najczęstsze pułapki
- Filtr nadpisuje wybór użytkownika – jeśli chcesz zawęzić, a nie zastąpić filtr, użyj
KEEPFILTERS. - Brak tabeli kalendarza – funkcje czasowe na kolumnie dat z tabeli faktów dają dziwne wyniki.
- Kolumna obliczeniowa zamiast miary – kolumny liczą się raz przy odświeżeniu i nie reagują na filtry raportu.
Kontekst filtra, CALCULATE i analizę w czasie omawiam szczegółowo w kursie DAX i modelowanie danych. Zapisz się na listę oczekujących – dam znać, gdy ruszy.