KEEPFILTERS
gäller för:beräknad kolumnberäknad tabellMeasurevisuell beräkning
Ändrar hur filters tillämpas vid utvärdering av en CALCULATEorCALCULATETABLE funktion.
Syntax
KEEPFILTERS(<expression>)
Parametrar
Term | Definition |
---|---|
expression |
Alla uttryck. |
Returnera value
En tabell med values.
Anmärkningar
Du använder KEEPFILTERS i kontexten CALCULATEandCALCULATETABLE funktioner för att åsidosätta standardbeteendet för dessa funktioner.
Som standard används filter argument i funktioner som CALCULATE som kontext för utvärdering av uttrycket, and som sådana filter argument för CALCULATEreplaceall befintliga filters över samma kolumner. Den nya kontext som påverkas av argumentet filter för CALCULATE påverkar endast befintliga filters på kolumner som nämns som en del av argumentet filter. Filters på andra kolumner än de som anges i argumenten för CALCULATEor andra related funktioner förblir i effectand oförändrade.
Med funktionen KEEPFILTERS kan du ändra det här beteendet. När du använder KEEPFILTERSjämförs alla befintliga filters i den aktuella kontexten med kolumnerna i de filter argumenten, and skärningspunkten mellan dessa argument används som kontext för utvärdering av uttrycket. Netto-effect över en kolumn är att båda argumentuppsättningarna gäller: både de filter argument som används i CALCULATEandfilters i argumenten för funktionen KEEPFILTER. Med andra ord, medan CALCULATEfiltersreplace den aktuella kontexten lägger KEEPFILTERS till filters i den aktuella kontexten.
Den här funktionen stöds not för användning i DirectQuery-läge när den används i beräknade kolumner or regler för säkerhet på radnivå (RLS).
Exempel
I följande exempel går vi igenom några vanliga scenarier som visar användningen av funktionen KEEPFILTERS som en del av en CALCULATEorCALCULATETABLE formel.
De first tre uttrycken hämtar enkla data som ska användas för jämförelser:
Internetförsäljning för delstaten Washington.
InternetFörsäljning för delstaterna Washington and Oregon (båda delstaterna tillsammans).
InternetFörsäljning för delstaten Washington and provinsen British Columbia (båda regionerna tillsammans).
Det fjärde uttrycket beräknar Internetförsäljning för Washington and Oregon, medan filter för Washington and British Columbia tillämpas.
Uttrycket next beräknar Internetförsäljning för Washington and Oregon men använder KEEPFILTERS; filter för Washington and British Columbia är en del av det tidigare sammanhanget.
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"
)
)
När det här uttrycket utvärderas mot sample databasen AdventureWorks DW erhålls följande resultat.
Spalt | 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 |
Not
Ovanstående resultat formaterades till en tabell, i stället för en enda rad, i utbildningssyfte.
Firstundersöker du uttrycket [$$ in WA and OR ??]
. Du kanske undrar hur den här formeln kan returnera value för försäljning i Washington and Oregon, eftersom det yttre CALCULATE-uttrycket innehåller en filter för Washington and British Columbia. Svaret är att standardbeteendet för CALCULATE åsidosätter den yttre filters i 'Geography'[State Province Code] and ersätter sina egna filter argument, eftersom filters gäller för samma kolumn.
Nextundersöker du uttrycket [$$ in WA !!]
. Du kanske undrar hur den här formeln skulle kunna returnera value för försäljning i Washington and inget annat, eftersom argumentet filter inkluderar Oregon and det yttre CALCULATE-uttrycket innehåller en filter i Washington and British Columbia. Svaret är att KEEPFILTERS ändrar standardbeteendet för CALCULATEand lägger till ytterligare en filter. Eftersom skärningspunkten för filters används läggs now den yttre filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC")
till i argumentet filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"
.. Eftersom båda filters gäller för samma kolumn är den resulterande filter'Geography'[State Province Code]="WA"
den filter som tillämpas vid utvärdering av uttrycket.