KEEPFILTERS
Dotyczy:kolumna obliczeniowatabela obliczeniowaMiarawizualizacji
Modyfikuje sposób stosowania filtrów podczas oceniania funkcji CALCULATE lub CALCULATETABLE.
Składnia
KEEPFILTERS(<expression>)
Parametry
Termin | Definicja |
---|---|
expression |
Dowolne wyrażenie. |
Wartość zwracana
Tabela wartości.
Uwagi
Aby zastąpić standardowe zachowanie tych funkcji, należy użyć KEEPFILTERS w ramach funkcji CALCULATE kontekstu i CALCULATETABLE.
Domyślnie argumenty filtru w funkcjach, takich jak CALCULATE, są używane jako kontekst do obliczania wyrażenia i jako takie argumenty filtru dla CALCULATE zastąpić wszystkie istniejące filtry w tych samych kolumnach. Nowy kontekst zastosowany przez argument filtru dla CALCULATE wpływa tylko na istniejące filtry dla kolumn wymienionych jako część argumentu filtru. Filtry na kolumnach innych niż wymienione w argumentach CALCULATE lub innych powiązanych funkcjach pozostają w mocy i niezwiązane.
Funkcja KEEPFILTERS umożliwia modyfikowanie tego zachowania. W przypadku używania KEEPFILTERSwszystkie istniejące filtry w bieżącym kontekście są porównywane z kolumnami w argumentach filtru, a przecięcie tych argumentów jest używane jako kontekst do obliczania wyrażenia. Efekt net na dowolnej kolumnie polega na tym, że oba zestawy argumentów mają zastosowanie: zarówno argumenty filtru używane w CALCULATE, jak i filtry w argumentach funkcji KEEPFILTER. Innymi słowy, podczas gdy filtry CALCULATE zastępują bieżący kontekst, KEEPFILTERS dodaje filtry do bieżącego kontekstu.
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 przedstawiono niektóre typowe scenariusze, które pokazują użycie funkcji KEEPFILTERS w ramach formuły CALCULATE lub CALCULATETABLE.
Pierwsze trzy wyrażenia uzyskują proste dane do użycia w porównaniach:
Sprzedaż internetowa dla stanu Waszyngton.
Sprzedaż internetowa dla stanów Waszyngtonu i Oregonu (oba stany połączone).
Sprzedaż internetowa dla stanu Waszyngton i prowincji Kolumbii Brytyjskiej (oba regiony połączone).
Czwarte wyrażenie oblicza sprzedaż internetową dla Waszyngtonu i Oregonu, a filtr dla Waszyngtonu i Kolumbii Brytyjskiej jest stosowany.
Następne wyrażenie oblicza sprzedaż internetową dla Waszyngtonu i Oregonu, ale używa KEEPFILTERS; filtr dla Waszyngtonu i 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 przykładowej bazy danych AdventureWorks DW zostaną uzyskane następujące wyniki.
Kolumna | Wartość |
---|---|
[$$ 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.
Najpierw sprawdź wyrażenie [$$ in WA and OR ??]
. Możesz się zastanawiać, jak ta formuła może zwrócić wartość sprzedaży w Waszyngtonie i Oregonie, ponieważ zewnętrzne wyrażenie CALCULATE zawiera filtr dla Waszyngtonu i Kolumbii Brytyjskiej. Odpowiedź polega na tym, że domyślne zachowanie CALCULATE zastępuje filtry zewnętrzne w lokalizacji "Geography"[State Province Code] i zastępuje własne argumenty filtru, ponieważ filtry mają zastosowanie do tej samej kolumny.
Następnie sprawdź wyrażenie [$$ in WA !!]
. Możesz się zastanawiać, jak ta formuła może zwrócić wartość sprzedaży w Waszyngtonie i nic innego, ponieważ filtr argumentu zawiera Oregon i zewnętrzne wyrażenie CALCULATE zawiera filtr w Waszyngtonie i Kolumbii Brytyjskiej. Odpowiedź polega na tym, że KEEPFILTERS modyfikuje domyślne zachowanie CALCULATE i dodaje dodatkowy filtr. Ponieważ używane jest przecięcie filtrów, teraz zewnętrzny 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC")
jest dodawany do argumentu filtru 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"
, . Ponieważ oba filtry mają zastosowanie do tej samej kolumny, wynikowy filtr 'Geography'[State Province Code]="WA"
jest filtrem zastosowanym podczas oceniania wyrażenia.