Sdílet prostřednictvím


KEEPFILTERS

platí pro:Počítaný sloupecPočítaná tabulkamíravizuální

Upraví způsob použití filtrů při vyhodnocování funkce CALCULATE nebo CALCULATETABLE.

Syntax

KEEPFILTERS(<expression>)

Parametry

Semestr Definice
expression Libovolný výraz.

Návratová hodnota

Tabulka hodnot.

Poznámky

  • K přepsání standardního chování těchto funkcí použijete KEEPFILTERS v kontextu CALCULATE a CALCULATETABLE funkcí.

  • Ve výchozím nastavení se argumenty filtru ve funkcích, jako je CALCULATE, používají jako kontext pro vyhodnocení výrazu a například argumenty filtru pro CALCULATE nahradí všechny existující filtry ve stejných sloupcích. Nový kontext ovlivněný argumentem filtru pro CALCULATE ovlivňuje pouze existující filtry u sloupců uvedených jako součást argumentu filtru. Filtry na jiné sloupce, než jsou uvedené v argumentech CALCULATE nebo jiných souvisejících funkcích, zůstávají v platnosti a neutrácené.

  • Funkce KEEPFILTERS umožňuje toto chování upravit. Při použití KEEPFILTERSse všechny existující filtry v aktuálním kontextu porovnávají se sloupci v argumentech filtru a průnik těchto argumentů se použije jako kontext pro vyhodnocení výrazu. Net effect over any one column is that both sets of arguments apply: both filter arguments used in CALCULATE and the filters in the arguments of the KEEPFILTER function. Jinými slovy, zatímco CALCULATE filtry nahradí aktuální kontext, KEEPFILTERS přidá filtry do aktuálního kontextu.

  • Tato funkce není podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích nebo pravidlech zabezpečení na úrovni řádků (RLS).

Příklad

Následující příklad vás provede některými běžnými scénáři, které ukazují použití funkce KEEPFILTERS jako součást CALCULATE nebo CALCULATETABLE vzorce.

První tři výrazy získávají jednoduchá data, která se mají použít pro porovnání:

  • Internet Sales pro stát Washington.

  • Internet Sales pro státy Washington a Oregon (oba státy kombinované).

  • Internet Sales pro stát Washington a provincii Britské Kolumbie (oba regiony kombinované).

Čtvrtý výraz vypočítá internetový prodej pro Washington a Oregon, zatímco je použit filtr pro Washington a Britskou Kolumbii.

Další výraz vypočítá internetový prodej pro Washington a Oregon, ale používá KEEPFILTERS; filtr pro Washington a Britskou Kolumbii je součástí předchozího kontextu.

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"
      )
)

Při vyhodnocení tohoto výrazu vůči ukázkové databázi AdventureWorks DW se získají následující výsledky.

Sloupec Hodnota
[$$ 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

Poznámka

Výše uvedené výsledky byly naformátovány do tabulky místo jednoho řádku pro vzdělávací účely.

Nejprve prozkoumejte výraz [$$ in WA and OR ??]. Možná vás zajímá, jak by tento vzorec mohl vrátit hodnotu prodeje ve Washingtonu a Oregonu, protože vnější CALCULATE výraz obsahuje filtr pro Washington a Britskou Kolumbii. Odpovědí je, že výchozí chování CALCULATE přepíše vnější filtry v oblasti Geography [State Province Code] a nahrazuje vlastní argumenty filtru, protože filtry platí pro stejný sloupec.

Dále prozkoumejte výraz [$$ in WA !!]. Možná vás zajímá, jak by tento vzorec mohl vrátit hodnotu prodeje ve Washingtonu a nic jiného, protože filtr argumentů zahrnuje Oregon a vnější výraz CALCULATE obsahuje filtr ve Washingtonu a Britské Kolumbii. Odpovědí je, že KEEPFILTERS upraví výchozí chování CALCULATE a přidá další filtr. Vzhledem k tomu, že se používá průsečík filtrů, je nyní vnější 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") přidán do argumentu filtru 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR",. Vzhledem k tomu, že oba filtry platí pro stejný sloupec, výsledný filtr 'Geography'[State Province Code]="WA" je filtr použitý při vyhodnocování výrazu.

funkce filtruCALCULATE funkceCALCULATETABLE