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


KEEPFILTERS

A következőre vonatkozik: Számított oszlop Számított tábla Mérték vizualizáció számítása

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

Syntax

KEEPFILTERS(<expression>)  

Paraméterek

Időszak Definíció
kifejezés Bármilyen kifejezés.

Visszaadott érték

Értéktáblázat.

Megjegyzések

  • A KEEPFILTERS függvényt a CALCULATE és CALCULATETABLE függvények környezetében használja a függvények szokásos viselkedésének felülbírálásához.

  • Alapértelmezés szerint az olyan függvények szűrőargumentumait használja a rendszer, mint például a CALCULATE, a kifejezés kiértékelési környezete, és mint ilyen, a CALCULATE szűrőargumentumai az összes meglévő szűrőt ugyanazon oszlopokra cserélik. A CALCULATE szűrőargumentum á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ény argumentumaitól eltérő oszlopok szűrői 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. A KEEPFILTERS használatakor a rendszer az aktuális környezetben lévő összes meglévő szűrőt összehasonlítja 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: a CALCULATE függvényben használt szűrőargumentumok és a KEEPFILTER függvény argumentumaiban lévő szűrők. Más szóval, míg a CALCULATE szűrők lecserélik az aktuális környezetet, a 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-t használ; 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
[$$ WA-ban] 2 467 248,34 USD
[$$ WA-ban és VAGY] 3 638 239,88 USD
[$$ WA-ban és BC-ben] 4 422 588,44 USD
[$$ WA-ban és VAGY ??] 3 638 239,88 USD
[$$ a WA !!] 2 467 248,34 USD

Feljegyzés

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 Washington és Oregon állambeli é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ülbírálja a "Geography"[State Province Code] külső szűrőit, és lecseréli a saját szűrőargumentumait, 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 a 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álják, most a külső " Geography"[State Province Code]="WA" || A "Geography"[State Province Code]="BC") a "Geography"[State Province Code]="WA" || szűrőargumentumhoz van hozzáadva. 'Geography'[State Province Code]="OR",. Mivel mindkét szűrő ugyanarra az oszlopra vonatkozik, az eredményként kapott "Geography"[State Province Code]="WA" szűrő a kifejezés kiértékelésekor alkalmazott szűrő.

Szűrőfüggvények
CALCULATE függvény
CALCULATETABLE függvény