CALCULATETABLE
Dotyczy: Obliczanie kolumny obliczeniowej tabeli Obliczeniowej Obliczenie wizualizacji
Oblicza wyrażenie tabeli w zmodyfikowanym kontekście filtru.
Uwaga
Istnieje również funkcja CALCULATE . Wykonuje dokładnie te same funkcje, z wyjątkiem modyfikacji kontekstu filtru zastosowanego do wyrażenia zwracającego wartość skalarną.
Składnia
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametry
Termin | Definicja |
---|---|
wyrażenie | Wyrażenie tabeli do obliczenia. |
filter1, filter2,... | (Opcjonalnie) Wyrażenia logiczne lub wyrażenia tabeli definiujące filtry lub funkcje modyfikujące filtr. |
Wyrażenie używane jako pierwszy parametr musi być tabelą modelu lub funkcją zwracającą tabelę.
Filtry mogą być następujące:
- Wyrażenia filtru warunkowego
- Wyrażenia filtru tabeli
- Funkcje modyfikacji filtru
Jeśli istnieje wiele filtrów, są one oceniane przy użyciu operatora logicznego AND. Oznacza to, że wszystkie warunki muszą mieć wartość TRUE w tym samym czasie.
Wyrażenia filtru warunkowego
Filtr wyrażenia warunkowego to wyrażenie, które zwraca wartość TRUE (prawda) lub FALSE (fałsz). 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ą lub zwracają tabelę, chyba że są przekazywane jako argumenty do funkcji agregacji.
- Mogą zawierać funkcję agregacji, która zwraca wartość skalarną.
Wyrażenie filtru tabeli
Filtr wyrażenia tabeli stosuje jako filtr obiekt tabeli. 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 filtrowania, w tym te, których nie można zdefiniować za pomocą wyrażenia filtru logicznego.
Funkcje modyfikujące filtr
Funkcje modyfikujące filtr umożliwiają wykonywanie więcej niż tylko dodawanie filtrów. Zapewniają one dodatkową kontrolę podczas modyfikowania kontekstu filtru.
Function | Purpose |
---|---|
USUŃFILERY | Usuń wszystkie filtry lub filtry z co najmniej jednej kolumny tabeli lub ze wszystkich kolumn pojedynczej tabeli. |
WSZYSTKIE 1, ALLEXCEPT, ALLNOBLANKROW | Usuń filtry z co najmniej jednej kolumny lub ze wszystkich kolumn pojedynczej tabeli. |
ZACHOWAJFILERY | Dodaj filtr bez usuwania istniejących filtrów w tych samych kolumnach. |
USERELATIONSHIP | Angażowanie nieaktywnej relacji między powiązanymi kolumnami, w tym przypadku aktywna relacja automatycznie stanie się nieaktywna. |
FILTROWANIE KRZYŻOWE | Zmodyfikuj kierunek filtrowania (zarówno z jednej, jak i z pojedynczej do obu) lub wyłącz relację. |
1 Funkcja ALL i jego warianty zachowują się zarówno jako modyfikatory filtrów, jak i jako funkcje zwracające obiekty tabeli. Jeśli funkcja REMOVEFILTERS jest obsługiwana przez narzędzie, lepiej użyć jej do usuwania filtrów.
Wartość zwracana
Tabela wartości.
Uwagi
Po podaniu wyrażeń filtru funkcja CALCULATETABLE modyfikuje kontekst filtru w celu obliczenia wyrażenia. Dla każdego wyrażenia filtru istnieją dwa możliwe wyniki standardowe, gdy wyrażenie filtru nie jest opakowane w funkcję KEEPFILTERS:
- Jeśli kolumny (lub tabele) nie są w kontekście filtru, nowe filtry zostaną dodane do kontekstu filtru w celu oceny wyrażenia.
- Jeśli kolumny (lub tabele) znajdują się już w kontekście filtru, istniejące filtry zostaną zastąpione przez nowe filtry w celu obliczenia wyrażenia CALCULATETABLE.
Ta funkcja nie jest obsługiwana w trybie DirectQuery w przypadku użycia w kolumnach obliczeniowych lub regułach 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 wartość jest później używana do obliczania stosunku sprzedaży internetowej do wszystkich sprzedaży w roku 2006.
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 |