KEEPFILTERS
Dotyczy:kolumna obliczeniowatabela obliczeniowaMeasureobliczenia wizualne
Modyfikuje sposób stosowania filters podczas oceniania funkcji CALCULATEorCALCULATETABLE.
Składnia
KEEPFILTERS(<expression>)
Parametry
Termin | Definicja |
---|---|
expression |
Dowolne wyrażenie. |
Zwracanie value
Tabela values.
Uwagi
Aby zastąpić standardowe zachowanie tych funkcji, należy użyć KEEPFILTERS w ramach funkcji CALCULATEandCALCULATETABLE kontekstu.
Domyślnie argumenty filter w funkcjach, takich jak CALCULATE, są używane jako kontekst do obliczania wyrażenia, and jako takie filter argumenty dla CALCULATEreplaceall istniejących filters w tych samych kolumnach. Nowy kontekst wywierany przez argument filter dla CALCULATE ma wpływ tylko na istniejące filters w kolumnach wymienionych w ramach argumentu filter. Filters w kolumnach innych niż wymienione w argumentach CALCULATEor innych funkcji related pozostają w effectand niezniszczone.
Funkcja KEEPFILTERS umożliwia modyfikowanie tego zachowania. Jeśli używasz KEEPFILTERS, wszystkie istniejące filters w bieżącym kontekście są porównywane z kolumnami w argumentach filter, and przecięcie tych argumentów jest używany jako kontekst do oceny wyrażenia. effect net na dowolnej kolumnie polega na tym, że oba zestawy argumentów mają zastosowanie: oba argumenty filter używane w CALCULATEandfilters w argumentach funkcji KEEPFILTER. Innymi słowy, podczas gdy CALCULATEfiltersreplace bieżącym kontekście, KEEPFILTERS dodaje filters do bieżącego kontekstu.
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 przedstawiono niektóre typowe scenariusze, które pokazują użycie funkcji KEEPFILTERS w ramach formuły CALCULATEorCALCULATETABLE.
first trzech wyrażeń uzyskuje proste dane do użycia w porównaniach:
Sprzedaż internetowa dla stanu Waszyngton.
Internet Sales for the states of Washington and Oregon (oba stany połączone).
Sprzedaż internetowa dla stanu Waszyngton and prowincji Kolumbii Brytyjskiej (oba regiony połączone).
Czwarte wyrażenie oblicza sprzedaż internetową dla Waszyngtonu and Oregon, a filter dla Waszyngtonu and Kolumbii Brytyjskiej.
Wyrażenie next oblicza sprzedaż internetową dla stanu Waszyngton and Oregon, ale używa KEEPFILTERS; filter dla Waszyngtonu and Kolumbii Brytyjskiej jest częścią poprzedniego kontekstu.
EVALUATE ROW(
"$$ in WA"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
)
, "$$ in WA and OR"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, "$$ in WA and BC"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA and OR ??"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
,'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA !!"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
, KEEPFILTERS('Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
)
Po obliczeniu tego wyrażenia względem bazy danych AdventureWorks DW sample zostaną uzyskane następujące wyniki.
Kolumna | Value |
---|---|
[$$ in WA] |
$ 2,467,248,34 |
[$$ in WA and OR] |
$ 3,638,239,88 |
[$$ in WA and BC] |
$ 4,422,588,44 |
[$$ in WA and OR ??] |
$ 3,638,239,88 |
[$$ in WA !!] |
$ 2,467,248,34 |
Nuta
Powyższe wyniki zostały sformatowane w tabeli, zamiast jednego wiersza, dla celów edukacyjnych.
First, sprawdź wyrażenie [$$ in WA and OR ??]
. Możesz się zastanawiać, jak ta formuła może zwrócić value sprzedaży w Waszyngtonie and Oregon, ponieważ zewnętrzne wyrażenie CALCULATE zawiera filter dla Waszyngtonu and Kolumbii Brytyjskiej. Odpowiedź brzmi, że domyślne zachowanie CALCULATE zastępuje zewnętrzne filters w lokalizacji "Geography"[State Province Code] and zastępuje własne argumenty filter, ponieważ filters mają zastosowanie do tej samej kolumny.
Next, sprawdź wyrażenie [$$ in WA !!]
. Możesz się zastanawiać, jak ta formuła może zwrócić value sprzedaży w Waszyngtonie and nic innego, ponieważ argument filter zawiera Oregon and zewnętrzne wyrażenie CALCULATE zawiera filter w Waszyngtonie and Kolumbii Brytyjskiej. Odpowiedź polega na tym, że KEEPFILTERS modyfikuje domyślne zachowanie CALCULATEand dodaje dodatkowy filter. Ponieważ używane jest przecięcie filters, nowfilter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC")
zewnętrzne jest dodawane do argumentu filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"
, . Ponieważ obie filters mają zastosowanie do tej samej kolumny, wynikowy filter'Geography'[State Province Code]="WA"
jest filter, który jest stosowany podczas obliczania wyrażenia.
Related zawartości