CALCULATETABLE
Dotyczy:kolumna obliczeniowatabela obliczeniowaMeasureobliczenia wizualne
Oblicza wyrażenie tabeli w zmodyfikowanym kontekście filter.
Nuta
Istnieje również funkcja CALCULATE. Wykonuje dokładnie te same funkcje, except modyfikuje kontekst filter zastosowany do wyrażenia zwracającego skalarną value.
Składnia
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametry
Termin | Definicja |
---|---|
expression |
Wyrażenie tabeli 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 musi być tabelą modelu or funkcji zwracającej tabelę.
Filters mogą być następujące:
- Wyrażenia filter warunkowe
- Wyrażenia filter tabeli
- funkcje modyfikacji Filter
Jeśli istnieje wiele filters, są one oceniane przy użyciu operatora logicznego AND. Oznacza to, że all warunki muszą być TRUE
w tym samym time.
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ę tylko do jednej kolumny.
- 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ą .
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
Tabela values.
Uwagi
Po podaniu wyrażeń filter funkcja CALCULATETABLE 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 CALCULATETABLE.
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ład
W poniższym przykładzie użyto funkcji CALCULATETABLE, aby uzyskać sum sprzedaży internetowej dla 2006 roku. Ta value jest później używana do calculate stosunku sprzedaży internetowej w porównaniu do sprzedaży all dla year 2006 r.
Następująca formuła:
= SUMX(
CALCULATETABLE(
'InternetSales_USD',
'DateTime'[CalendarYear] = 2006
),
[SalesAmount_USD]
)
Spowoduje to wykonanie następującej tabeli:
Etykiety wierszy | Internet SalesAmount_USD | CalculateTable 2006 Internet Sales | Stosunek sprzedaży internetowej do 2006 |
---|---|---|---|
2005 | $2,627,031.40 | $5,681,440,58 | 0.46 |
2006 | $5,681,440,58 | $5,681,440,58 | 1.00 |
2007 | 8705 066,67 USD | $5,681,440,58 | 1.53 |
2008 | $9,041,288,80 | $5,681,440,58 | 1.59 |
Suma końcowa | 26 054 827,45 USD | $5,681,440,58 | 4.59 |