KEEPFILTERS

Platí pro:Calculated columnCalculated tableMeasureVisual calculation

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

Syntaxe

KEEPFILTERS(<expression>)  

Parametry

Pojem definice
výraz Libovolný výraz.

Vrácená hodnota

Tabulka hodnot.

Poznámky

  • Funkce KEEPFILTERS se používají v kontextu funkcí CALCULATE a CALCULATETABLE k přepsání standardního chování těchto funkcí.

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

  • Funkce KEEPFILTERS umožňuje toto chování upravit. Při použití funkce KEEPFILTERS se 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 filtry CALCULATE nahrazují aktuální kontext, funkce KEEPFILTERS přidává 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é demonstrují použití funkce KEEPFILTERS jako součást vzorce CALCULATE nebo CALCULATETABLE.

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.

Column Hodnota
[$$ in WA] $ 2,467,248,34
[$$ in WA a OR] $ 3,638,239,88
[$$ in WA a 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 [ $$ v WA a OR ??].. Možná vás zajímá, jak by tento vzorec mohl vrátit hodnotu prodeje ve Washingtonu a Oregonu, protože vnější výraz CALCULATE obsahuje filtr pro Washington a Britskou Kolumbii. Odpověď spočívá v tom, že výchozí chování funkce CALCULATE přepíše vnější filtry v oblasti Zeměpis [Kód státu provincie] a nahradí 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 funkce KEEPFILTERS upraví výchozí chování funkce CALCULATE a přidá další filtr. Vzhledem k tomu, že se používá průsečík filtrů, je teď vnější filtr "Geography"[State Province Code]="WA" || 'Geography'[State Province Code]="BC") je přidán do argumentu filtru 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR",. Protože oba filtry platí pro stejný sloupec, výsledný filtr 'Geography'[State Province Code]="WA" je filtr, který se použije při vyhodnocování výrazu.

Funkce filtru
CALCULATE
CALCULATETABLE