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ő.