ZACHOWAJFILERY
Dotyczy: Obliczanie kolumny obliczeniowej tabeli Obliczeniowej Obliczenie wizualizacji
Modyfikuje sposób stosowania filtrów podczas obliczania funkcji CALCULATE lub CALCULATETABLE.
Składnia
KEEPFILTERS(<expression>)
Parametry
Termin | Definicja |
---|---|
wyrażenie | Dowolne wyrażenie. |
Wartość zwracana
Tabela wartości.
Uwagi
Aby zastąpić standardowe zachowanie tych funkcji, należy użyć funkcji KEEPFILTERS w kontekście CALCULATE i CALCULATETABLE.
Domyślnie argumenty filtru w funkcjach, takich jak CALCULATE, są używane jako kontekst do obliczania wyrażenia, a jako takie argumenty filtru dla funkcji CALCULATE zastępują wszystkie istniejące filtry w tych samych kolumnach. Nowy kontekst zastosowany przez argument filtru dla funkcji CALCULATE wpływa tylko na istniejące filtry w kolumnach wymienionych jako część argumentu filtru. Filtry w kolumnach innych niż wymienione w argumentach funkcji CALCULATE lub innych powiązanych funkcji pozostają w mocy i niezwiązane.
Funkcja KEEPFILTERS umożliwia modyfikowanie tego zachowania. W przypadku używania funkcji KEEPFILTERS wszystkie 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 netto dla dowolnej kolumny polega na tym, że oba zestawy argumentów mają zastosowanie: zarówno argumenty filtru używane w funkcji CALCULATE, jak i filtry w argumentach funkcji KEEPFILTER. Innymi słowy, podczas gdy filtry CALCULATE zastępują bieżący kontekst, funkcja 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 metody 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ść |
---|---|
[$$ w usłudze WA] | $ 2,467,248,34 |
[$$ w usługach WA i OR] | $ 3,638,239,88 |
[$$ w WA i BC] | $ 4,422,588,44 |
[$$ w WA i OR ??] | $ 3,638,239,88 |
[$$ w WA !!] | $ 2,467,248,34 |
Uwaga
Powyższe wyniki zostały sformatowane w tabeli, zamiast jednego wiersza, dla celów edukacyjnych.
Najpierw sprawdź wyrażenie [$$ w usługach WA i 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 funkcji CALCULATE zastępuje filtry zewnętrzne w obszarze "Geography"[State Province Code] i zastępuje własne argumenty filtru, ponieważ filtry mają zastosowanie do tej samej kolumny.
Następnie sprawdź wyrażenie [$$ w 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ź brzmi: KEEPFILTERS modyfikuje domyślne zachowanie funkcji CALCULATE i dodaje dodatkowy filtr. Ponieważ używane jest przecięcie filtrów, teraz zewnętrzny filtr '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 dotyczą tej samej kolumny, wynikowy filtr "Geography"[State Province Code]="WA" jest filtrem zastosowanym podczas obliczania wyrażenia.
Powiązana zawartość
Funkcje filtrowania
CALCULATE, funkcja
CALCULATETABLE, funkcja