Udostępnij za pośrednictwem


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.

functions function