Funkcja CALCULATE
Oblicza wyrażenie w kontekście zmodyfikowanym przez określone filtry.
Składnia
CALCULATE(<expression>,<filter1>,<filter2>…)
Parametry
Termin |
Definicja |
---|---|
expression |
Wyrażenie, które ma zostać obliczone. |
filter1,filter2,… |
(Argument opcjonalny) Lista rozdzielonych przecinkami wyrażeń logicznych lub wyrażeń tabeli definiujących filtry. |
Wyrażenie użyte jako pierwszy parametr zasadniczo jest tym samym co 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 tabeli pokazano wyniki w przypadku utworzenia nowej miary o nazwie Stosunek do sprzedaży wszystkich odsprzedawców przy użyciu formuły pokazanej w sekcji kodu.
Aby zobaczyć działanie tej formuły, dodaj pole CalendarYear do obszaru Etykiety wierszy tabeli przestawnej i pole ProductCategoryName do obszaru Etykiety kolumn. Następnie dodaj nową miarę do obszaru Wartości tabeli przestawnej. Aby wyświetlić liczby jako wartości procentowe, zastosuj formatowanie procentowe do obszaru tabeli przestawnej, który zawiera nową miarę o nazwie Stosunek do sprzedaży wszystkich odsprzedawców.
Sprzedaż wszystkich odsprzedawców |
Etykiety kolumn |
|
|
|
|
---|---|---|---|---|---|
Etykiety wierszy |
Accessories |
Bikes |
Clothing |
Components |
Suma końcowa |
2005 |
0.02% |
9.10% |
0.04% |
0.75% |
9.91% |
2006 |
0.11% |
24.71% |
0.60% |
4.48% |
29.90% |
2007 |
0.36% |
31.71% |
1.07% |
6.79% |
39.93% |
2008 |
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.