Sdílet prostřednictvím


KEEPFILTERS

platí pro:počítaný sloupecPočítaná tabulkaMeasure vizuálu

Upraví způsob použití filters při vyhodnocování funkce CALCULATEorCALCULATETABLE.

Syntax

KEEPFILTERS(<expression>)

Parametry

Semestr Definice
expression Libovolný výraz.

Vrácení value

Tabulka values.

Poznámky

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

  • Ve výchozím nastavení se filter argumenty ve funkcích, jako jsou CALCULATE, používají jako kontext pro vyhodnocení výrazu, and například filter argumenty pro CALCULATEreplaceall existující filters ve stejných sloupcích. Nový kontext ovlivněný argumentem filter pro CALCULATE ovlivňuje pouze existující filters u sloupců uvedených jako součást argumentu filter. Filters u sloupců jiných než těch, které jsou uvedené v argumentech CALCULATEor jiných funkcí related, zůstávají v effectand neupravené.

  • Funkce KEEPFILTERS umožňuje toto chování upravit. Při použití KEEPFILTERSse všechny existující filters v aktuálním kontextu porovnávají se sloupci v argumentech filter, and průnik těchto argumentů se použije jako kontext pro vyhodnocení výrazu. Čistý effect pro libovolný sloupec je ten, že platí obě sady argumentů: oba filter argumenty použité v CALCULATEandfilters v argumentech funkce KEEPFILTER. Jinými slovy, zatímco CALCULATEfiltersreplace aktuálním kontextu, KEEPFILTERS přidává filters do aktuálního kontextu.

  • Tato funkce je not podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích or pravidla 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 CALCULATEorCALCULATETABLE vzorce.

first 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 and Oregon (oba státy kombinované).

  • Internet Sales pro stát Washington and provincii Britská Kolumbie (obě oblasti kombinované).

Čtvrtý výraz vypočítá internetový prodej pro Washington and Oregon, zatímco filter pro Washington and Britská Kolumbie je použita.

Výraz next vypočítá internetový prodej pro Washington and Oregon, ale používá KEEPFILTERS; filter pro Washington and 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"
      )
)

Když se tento výraz vyhodnotí vůči databázi sample AdventureWorks DW, získají se následující výsledky.

Sloupec 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

Poznámka

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

First, prozkoumejte výraz, [$$ in WA and OR ??]. Možná vás zajímá, jak by tento vzorec mohl vrátit value prodeje ve Washingtonu and Oregonu, protože vnější CALCULATE výraz obsahuje filter pro Washington and Britskou Kolumbii. Odpovědí je, že výchozí chování CALCULATE přepíše vnější filters v oblasti Zeměpisná oblast [Kód státní provincie] and nahradí vlastní filter argumenty, protože filters platí pro stejný sloupec.

Next, prozkoumejte výraz, [$$ in WA !!]. Možná vás zajímá, jak by tento vzorec mohl vrátit value prodeje ve Washingtonu and nic jiného, protože argument filter zahrnuje Oregon and vnější CALCULATE výraz obsahuje filter ve Washingtonu and Britské Kolumbii. Odpovědí je, že KEEPFILTERS upraví výchozí chování CALCULATEand přidá další filter. Protože je použit průnik filters, now vnější filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") se přidá do argumentu filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR",. Vzhledem k tomu, že se oba filters vztahují na stejný sloupec, výsledná filter'Geography'[State Province Code]="WA" je filter, která se použije při vyhodnocování výrazu.

Filter funkceCALCULATE funkceCALCULATETABLE