CALCULATE
Dotyczy:kolumna obliczeniowatabela obliczeniowaMeasureobliczenia wizualne
Oblicza wyrażenie w zmodyfikowanym kontekście filter.
Nuta
Istnieje również funkcja CALCULATETABLE. Wykonuje dokładnie te same funkcje, except modyfikuje kontekst filter zastosowany do wyrażenia zwracającego obiekt tabeli .
Składnia
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametry
Termin | Definicja |
---|---|
expression |
Wyrażenie do obliczenia. |
filter1, filter2,… |
(Opcjonalnie) Wyrażenia warunkowe or wyrażenia tabeli, które definiują filters, orfilter funkcje modyfikatora. |
Wyrażenie używane jako parametr first jest zasadniczo takie samo jak measure.
Filters mogą być następujące:
- Wyrażenia filter warunkowe
- Wyrażenia filter tabeli
- funkcje modyfikacji Filter
Jeśli istnieje wiele
Wyrażenia filter warunkowe
Wyrażenie logiczne filter jest wyrażeniem, które daje TRUE
orFALSE
. Istnieje kilka reguł, które muszą przestrzegać:
- Mogą odwoływać się do kolumn z jednej tabeli.
- Nie mogą odwoływać się do miar.
- Nie mogą używać zagnieżdżonej funkcji CALCULATE.
Począwszy od wersji programu Power BI Desktop z września 2021 r., obowiązują również następujące elementy:
- Nie mogą używać funkcji, które skanują or zwracają tabelę, chyba że są przekazywane jako argumenty do funkcji agregacji.
-
mogą zawierać funkcję agregacji zwracającą valueskalarną . Na przykład
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Wyrażenie filter tabeli
Wyrażenie tabeli filter stosuje obiekt tabeli jako filter. Może to być odwołanie do tabeli modelu, ale najprawdopodobniej jest to funkcja zwracająca obiekt tabeli. Możesz użyć funkcji FILTER, aby zastosować złożone warunki filter, w tym te, których nie można zdefiniować za pomocą wyrażenia logicznego filter.
funkcje modyfikatora Filter
Filter funkcje modyfikatora umożliwiają wykonywanie więcej niż tylko dodawanie filters. Zapewniają one dodatkową kontrolę podczas modyfikowania kontekstu filter.
Funkcja | Cel |
---|---|
REMOVEFILTERS | Usuń allfilters, orfilters z jednej or więcej kolumn tabeli, or z kolumn all pojedynczej tabeli. |
ALL 1, ALLEXCEPT, ALLNOBLANKROW | Usuń filters z jednej or większej liczby kolumn, or z kolumn all pojedynczej tabeli. |
KEEPFILTERS | Dodaj filter bez usuwania istniejących filters w tych samych kolumnach. |
USERELATIONSHIP | Angażowanie nieaktywnej relacji między kolumnami related, w tym przypadku aktywna relacja automatycznie stanie się nieaktywna. |
CROSSFILTER | Zmodyfikuj kierunek filter (od obu do jednego, or z pojedynczego do obu) or wyłączyć relację. |
1 funkcja ALLand jej warianty zachowują się jako modyfikatory filterand jako funkcje zwracające obiekty tabeli. If funkcja REMOVEFILTERS jest obsługiwana przez narzędzie, lepiej użyć jej do usunięcia filters.
Zwracanie value
value, który jest wynikiem wyrażenia.
Uwagi
Po podaniu wyrażeń filter funkcja CALCULATE modyfikuje kontekst filter w celu evaluate wyrażenia. Dla każdego wyrażenia filter istnieją dwa możliwe standardowe wyniki, gdy wyrażenie filter jest not opakowane w funkcję KEEPFILTERS:
- If kolumny (tabeleor) nie są w kontekście filter, a nowe filters zostaną dodane do kontekstu filter w celu evaluate wyrażenia.
- If kolumny (tabeleor) znajdują się już w kontekście filter, istniejące filters zostaną zastąpione przez nowe filters w celu evaluate wyrażenia CALCULATE.
Funkcja CALCULATE używana bez filters osiąga określone wymaganie. Przenosi kontekst wiersza na kontekst filter. Jest to wymagane, gdy wyrażenie (not modelu measure), które podsumowuje dane modelu, należy ocenić w kontekście wiersza. Ten scenariusz może wystąpić w formule kolumny obliczeniowej or po obliczeniu wyrażenia w funkcji iteratora. Należy pamiętać, że gdy model measure jest używany w kontekście wiersza, przejście kontekstu jest automatyczne.
Ta funkcja jest not obsługiwana do użycia w trybie DirectQuery w przypadku użycia w kolumnach obliczeniowych or reguł zabezpieczeń na poziomie wiersza.
Przykłady
Poniższa tabela Salesmeasure generuje wynik przychodu, ale tylko w przypadku produktów, które mają kolor niebieski.
Przykłady w tym artykule mogą być używane z modelem sample Adventure Works DW 2020 Power BI Desktop. Aby uzyskać model, zobacz DAXsample model.
Blue Revenue =
CALCULATE(
SUM(Sales[Sales Amount]),
'Product'[Color] = "Blue"
)
Kategoria | Kwota sprzedaży | Niebieski przychód |
---|---|---|
Akcesoria | $1,272,057,89 | 165 406,62 USD |
Rowery | 94 620 526,21 USD | $8,374,313,88 |
Odzież | $2,117,613.45 | 259 488,37 USD |
Składniki | 11 799 076,66 USD | 803 642,10 USD |
łączna | $109,809,274,20 | $9,602,850,97 |
Funkcja CALCULATE oblicza sum tabeli SalesSales Amount w zmodyfikowanym kontekście filter. Do tabeli filter jest dodawana nowa Productkolumna Color —or— filter zastępuje wszystkie filter, które zostały już zastosowane do kolumny.
Poniższa tabela Salesmeasure tworzy stosunek sprzedaży w stosunku do sprzedaży dla kanałów sprzedaży all.
Kanał | Kwota sprzedaży | Przychód % łączny kanał |
---|---|---|
Internet | $29,358,677,22 | 26.74% |
Sprzedawcy | 80 450 596,98 USD | 73.26% |
łączna | $109,809,274,20 | 100.00% |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
Funkcja DIVIDE dzieli wyrażenie sumujące tabelę SalesSales Amount kolumny value (w kontekście filter) przy użyciu tego samego wyrażenia w zmodyfikowanym kontekście filter. Jest to funkcja CALCULATE, która modyfikuje kontekst filter przy użyciu funkcji REMOVEFILTERS, która jest funkcją modyfikatora filter. Usuwa
W poniższej tabeli Customer definicja kolumny obliczeniowej klasyfikuje klientów do klasy lojalnościowej. Jest to bardzo prosty scenariusz: gdy przychody generowane przez klienta są mniejsze niż 2500 USD, są one klasyfikowane jako Low; w przeciwnym razie są high.
Customer Segment =
IF(
CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
"Low",
"High"
)
W tym przykładzie kontekst wiersza jest konwertowany na kontekst filter. Jest to nazywane przejściem kontekstu . Funkcja