Udostępnij za pośrednictwem


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.

funkcje FilterCALCULATECALCULATETABLE funkcji