TOP

DAX-Lekcja 2. Funkcja CALCULATE

Opis

Pierwszą funkcją rozpoczynającą naukę DAX jest CALCULATE. Ta funkcja nie ma dokładnego odpowiednika w Excel, ale jest porównywalna z funkcjami SUMIFS I COUNTIFS . Krótko mówiąc, funkcja ta stosuje filtry do innych funkcji obliczeniowych, dzięki czemu możemy wybrać i uwzględnić w obliczeniach tylko te dane, których potrzebujemy.

Składnia funkcji CALCULATE()

=OBLICZ.(< wyrażenie statystyczne >, < filtr1 >, < filtr2 >, ...)

< wyrażenie statystyczne >

Wyrażenie statystyczne powinien zwrócić nam wynik obliczeń (wartość, a nie tabelę). Z tego powodu w tym ustawieniu często stosuje się funkcje statystyczne tego typu SUMA , MIN , MAKS , KONTROLE itp.

  1. SUMA([ Nazwa kolumny ])
  2. SUMA([ NazwaKolumny 1 ]) / MAKS.([ NazwaKolumny2 ])
  3. Nazwa innego pola obliczeniowego (miary)

< filtr1 >, < filtr2 >, ...

Filtr określa zakres danych, nad którymi należy pracować. Warunki wyboru wartości są określone tutaj.

  1. [ Nazwa kolumny ] = Automatyczny
  2. [ Nazwa kolumny ] >= 6
  3. ALL( 'Nazwa tabeli' ) Lub ALL( 'Nazwa tabeli' [ Nazwa kolumny ] )
  4. FILTER ( 'Nazwa tabeli' , 'Nazwa tabeli' [ Nazwa kolumny ] = " Zielony ")

Załóżmy, że mamy taką tabelę, która nazywa się Demo i załadowane PowerPivot .

Stwórzmy na jej podstawie tabelę podsumowującą i policzmy ilość rekordów dla każdego produktu.

Utwórzmy teraz nowe pole obliczeniowe (Measure) Count_All_Product w naszej tabeli przestawnej, która wyświetli całkowitą liczbę rekordów we wszystkich wierszach.

Jak otrzymaliśmy liczby w polu obliczeniowym Count_All_Product 16 ? Wyjaśnieniem jest to, że usunęliśmy dla tego pola wszystkie filtry, które zostały zastosowane w tabeli przestawnej (każdy wiersz w tabeli przestawnej to osobny filtr), korzystając z funkcji ALL() . Inaczej mówiąc, jest to funkcja ALL (Demo) wydaje polecenie usunięcia wszystkich filtrów dla pola obliczeniowego Count_All_Product, które są zastosowane do tabeli Demo .

Dodajmy kolejne pole (City) w wierszach, aby zobaczyć sprzedaż każdego produktu według miast:

Widzimy, że liczby są w polu Count of Rows zmienić, ale nie w polu obliczeniowym Count_All_Product. Zgadza się, ponieważ w przypadku tego ostatniego usunęliśmy wszystkie filtry ze wzoru. Wprowadźmy teraz kilka drobnych zmian w naszej formule i zobaczmy wynik.

=CALCULATE(COUNTROWS(Demo);ALL(Demo[Product]))

Zmieniliśmy argument na funkcję ALL() poprzez zastąpienie Demo NA Demo[Product] . Teraz filtry nie zostaną usunięte dla całej tabeli Demo , ale tylko dla swojej kolumny Demo[Product] .

Widzimy więc, co dzieje się na boisku Count of Rows filtry działają Product I City i tylko filtr na polu obliczeniowym Count_All_Product City .