Megosztás a következőn keresztül:


KEEPFILTERS

A következőkre vonatkozik:Számított oszlopSzámított táblaMértékVizualizációszámítási

Módosítja a szűrők alkalmazását egy CALCULATE vagy CALCULATETABLE függvény kiértékelése során.

Szintaxis

KEEPFILTERS(<expression>)

Paraméterek

Kifejezés Definíció
expression Bármilyen kifejezés.

Visszaadott érték

Értéktáblázat.

Megjegyzések

  • A KEEPFILTERS a környezeti CALCULATE és CALCULATETABLE függvények használatával felülbírálhatja ezen függvények szokásos viselkedését.

  • Alapértelmezés szerint az olyan függvények szűrőargumentumait használja a rendszer, mint például a CALCULATE, mint a kifejezés kiértékelési környezete, és mint ilyen, a CALCULATE szűrőargumentumok lecserélik az összes meglévő szűrőt ugyanazon az oszlopon. A CALCULATE szűrőargumentuma által alkalmazott új környezet csak a szűrőargumentum részeként említett oszlopok meglévő szűrőit érinti. A CALCULATE vagy más kapcsolódó függvények argumentumaitól eltérő oszlopokra vonatkozó szűrők továbbra is érvényben maradnak és változatlanok maradnak.

  • A KEEPFILTERS függvény lehetővé teszi ennek a viselkedésnek a módosítását. Ha KEEPFILTERShasznál, az aktuális környezet összes meglévő szűrője össze lesz hasonlítva a szűrőargumentumok oszlopaival, és az argumentumok metszetét használja a kifejezés kiértékelésére szolgáló környezetként. Az egyik oszlopra gyakorolt nettó hatás az, hogy mindkét argumentumcsoport érvényes: mind a CALCULATE használt szűrőargumentumok, mind a KEEPFILTER függvény argumentumainak szűrői. Más szóval, míg CALCULATE szűrők helyettesítik az aktuális környezetet, KEEPFILTERS szűrőket ad hozzá az aktuális környezethez.

  • Ez a függvény nem támogatott DirectQuery módban, ha számított oszlopokban vagy sorszintű biztonsági (RLS) szabályokban használják.

Példa

Az alábbi példa olyan gyakori forgatókönyveket mutat be, amelyek bemutatják, hogy a KEEPFILTERS függvényt egy CALCULATE vagy CALCULATETABLE képlet részeként használják.

Az első három kifejezés egyszerű adatokat szerez be az összehasonlításhoz:

  • Internetes értékesítés Washington államban.

  • Internet Sales for the states of Washington and Oregon (mindkét állam együttesen).

  • Internet sales for the state of Washington and province of British Columbia (mindkét régió együtt).

A negyedik kifejezés washingtoni és oregoni internetes értékesítéseket számít ki, míg a Washington és a British Columbia szűrője lesz alkalmazva.

A következő kifejezés washingtoni és oregoni internetes értékesítéseket számít ki, de KEEPFILTERS; a Washington és a Brit Columbia szűrője a korábbi környezet része.

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

Ha a kifejezés kiértékelése az AdventureWorks DW mintaadatbázison történik, a rendszer a következő eredményeket kapja.

Oszlop Érték
[$$ in WA] 2 467 248,34 USD
[$$ in WA and OR] 3 638 239,88 USD
[$$ in WA and BC] 4 422 588,44 USD
[$$ in WA and OR ??] 3 638 239,88 USD
[$$ in WA !!] 2 467 248,34 USD

Jegyzet

A fenti eredmények oktatási célokból táblázatba lettek formázva egyetlen sor helyett.

Először vizsgálja meg a [$$ in WA and OR ??]kifejezést. Felmerülhet a kérdés, hogy ez a képlet hogyan adja vissza a Washingtonban és Oregonban történő értékesítések értékét, mivel a külső CALCULATE kifejezés tartalmaz egy washingtoni és brit columbiai szűrőt. A válasz az, hogy a CALCULATE alapértelmezett viselkedése felülírja a "Geography"[State Province Code] külső szűrőit, és saját szűrőargumentumokat helyettesít, mivel a szűrők ugyanarra az oszlopra vonatkoznak.

Ezután vizsgálja meg a [$$ in WA !!]kifejezést. Felmerülhet a kérdés, hogy ez a képlet hogyan tudja visszaadni a Washingtonban és semmi másban nem szereplő értékesítések értékét, mivel az argumentumszűrő oregoni, a külső CALCULATE kifejezés pedig egy washingtoni és brit columbiai szűrőt tartalmaz. A válasz az, hogy KEEPFILTERS módosítja a CALCULATE alapértelmezett viselkedését, és hozzáad egy további szűrőt. Mivel a szűrők metszetét használja, a külső szűrő 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") hozzá lesz adva a 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"szűrőargumentumhoz. Mivel mindkét szűrő ugyanarra az oszlopra vonatkozik, az eredményként kapott szűrő 'Geography'[State Province Code]="WA" a kifejezés kiértékelésekor alkalmazott szűrő.

SzűrőfüggvényekCALCULATE függvényCALCULATETABLE függvény