Udostępnij za pośrednictwem


Funkcja CALCULATE (język DAX)

Oblicza wyrażenie w kontekście zmodyfikowanym przez określone filtry.

Składnia

CALCULATE(<expression>,<filter1>,<filter2>…)

Parametry

Termin

Definicja

wyrażenie

Wyrażenie, które ma zostać obliczone.

filtr1,filtr2,…

(Argument opcjonalny) Lista rozdzielonych przecinkami wyrażeń logicznych lub wyrażeń tabeli definiujących filtry.

Wyrażenie używane jako pierwszy parametr jest zasadniczo taki sam, jako miara.

Wyrażenia logiczne używane jako argumenty podlegają następującym ograniczeniom:

  • Wyrażenie nie może odwoływać się do miary.

  • Wyrażenie nie może zawierać zagnieżdżonej funkcji CALCULATE.

  • Wyrażenie nie może zawierać żadnej funkcji, która skanuje lub zwraca tabelę, w tym funkcji agregacji.

Jednak wyrażenie logiczne może zawierać funkcję, która wyszukuje pojedynczą wartość lub oblicza wartość skalarną.

Wartość zwracana

Wartość będąca wynikiem wyrażenia.

Uwagi

W przypadku filtrowania danych funkcja CALCULATE zmienia kontekst, w którym dane są filtrowane, i oblicza wyrażenie w nowym kontekście określonym przez użytkownika.Dla każdej kolumny użytej w argumencie filtr wszelkie istniejące filtry dotyczące kolumny są usuwane i w zamian jest stosowany określony filtr.

Przykład

Aby obliczyć stosunek wartości sprzedaży bieżącego odsprzedawcy do wartości sprzedaży wszystkich odsprzedawców, należy dodać do tabeli przestawnej miarę, w której w liczniku będzie obliczana suma sprzedaży dla bieżącej komórki, a w mianowniku będzie obliczana suma sprzedaży wszystkich odsprzedawców.Aby zagwarantować, że mianownik będzie zawsze taki sam, niezależnie od sposobu filtrowania lub grupowania danych tabeli przestawnej, w części formuły odpowiadającej mianownikowi należy użyć funkcji ALL w celu wyczyszczenia wszystkich filtrów i utworzenia poprawnej sumy końcowej.

W poniższej tabela przedstawiono wyniki podczas tworzenia nowej miara o nazwie stosunek sprzedaży wszystkich sprzedawcy, przy użyciu formuły w sekcji kodu.

Aby zobaczyć, jak działa, Dodaj pole CalendarYear, do Etykiety wierszy obszaru tabela przestawna, i dodać do pola, ProductCategoryName, Etykiety kolumn obszaru.Następnie dodaj nowego miara wartości obszaru tabela przestawna.Aby wyświetlić liczby jako wartości procentowe, należy zastosować formatowanie do obszaru tabela przestawna, zawierającą nowej miara stosunek sprzedaży sprzedawcą wszystkich liczb procent.

Sprzedaż wszystkich odsprzedawców

Etykiety kolumn

 

 

 

 

Etykiety wierszy

Accessories

Bikes

Clothing

Components

Suma końcowa

2001

0.02%

9.10%

0.04%

0.75%

9.91%

2002

0.11%

24.71%

0.60%

4.48%

29.90%

2003

0.36%

31.71%

1.07%

6.79%

39.93%

2004

0.20%

16.95%

0.48%

2.63%

20.26%

Suma końcowa

0.70%

82.47%

2.18%

14.65%

100.00%

=( SUM('ResellerSales_USD'[SalesAmount_USD]))
 /CALCULATE( SUM('ResellerSales_USD'[SalesAmount_USD])
           ,ALL('ResellerSales_USD'))

Wyrażenie CALCULATE w mianowniku umożliwia uwzględnienie w wyrażeniu SUM wszystkich wierszy.Powoduje to zastąpienie niejawnych filtrów wartości CalendarYear i ProductCategoryName, które są stosowane dla licznika wyrażenia.

Funkcje pokrewne

Podczas gdy funkcja CALCULATE wymaga, aby jej pierwszym argumentem było wyrażenie zwracające pojedynczą wartość, funkcja CALCULATETABLE przyjmuje jako argument tabelę wartości.