Dela via


KEEPFILTERS

Gäller för: Beräknad kolumn Beräknad tabell Mått Visuell beräkning

Ändrar hur filter tillämpas vid utvärdering av en CALCULATE- eller CALCULATETABLE-funktion.

Syntax

KEEPFILTERS(<expression>)  

Parametrar

Period Definition
uttryck Alla uttryck.

Returvärde

En tabell med värden.

Kommentarer

  • Du använder KEEPFILTERS i kontexten CALCULATE- och CALCULATETABLE-funktioner för att åsidosätta standardbeteendet för dessa funktioner.

  • Som standard används filterargument i funktioner som CALCULATE som kontext för att utvärdera uttrycket, och som sådana ersätter filterargument för CALCULATE alla befintliga filter över samma kolumner. Den nya kontext som påverkas av filterargumentet för CALCULATE påverkar endast befintliga filter på kolumner som nämns som en del av filterargumentet. Filter på andra kolumner än de som anges i argumenten för CALCULATE eller andra relaterade funktioner förblir i kraft och oförändrade.

  • Med funktionen KEEPFILTERS kan du ändra det här beteendet. När du använder KEEPFILTERS jämförs befintliga filter i den aktuella kontexten med kolumnerna i filterargumenten, och skärningspunkten för dessa argument används som kontext för att utvärdera uttrycket. Nettoeffekten för en kolumn är att båda argumentuppsättningarna gäller: både filterargumenten som används i CALCULATE och filtren i argumenten för funktionen KEEPFILTER. Med andra ord, medan CALCULATE-filter ersätter den aktuella kontexten lägger KEEPFILTERS till filter i den aktuella kontexten.

  • Den här funktionen stöds inte för användning i DirectQuery-läge när den används i beräknade kolumner eller säkerhetsregler på radnivå (RLS).

Exempel

I följande exempel går vi igenom några vanliga scenarier som visar hur funktionen KEEPFILTERS används som en del av en CALCULATE- eller CALCULATETABLE-formel.

De första 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 och Oregon (båda delstaterna tillsammans).

  • Internet sales for the state of Washington and the province of British Columbia (båda regionerna tillsammans).

Det fjärde uttrycket beräknar Internetförsäljning för Washington och Oregon, medan filtret för Washington och British Columbia tillämpas.

Nästa uttryck beräknar Internetförsäljning för Washington och Oregon men använder KEEPFILTERS. filtret för Washington och British Columbia är en del av den tidigare kontexten.

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 exempeldatabasen AdventureWorks DW erhålls följande resultat.

Column Värde
[$$ i WA] $ 2 467 248,34
[$$ i WA och OR] $ 3 638 239,88
[$$ i WA och BC] $ 4 422 588,44
[$$ i WA och ELLER ??] $ 3 638 239,88
[$$ i WA !!] $ 2 467 248,34

Kommentar

Ovanstående resultat formaterades till en tabell, i stället för en enda rad, i utbildningssyfte.

Granska först uttrycket [$$ i WA och OR ??]. Du kanske undrar hur den här formeln kan returnera värdet för försäljning i Washington och Oregon, eftersom det yttre CALCULATE-uttrycket innehåller ett filter för Washington och British Columbia. Svaret är att standardbeteendet för CALCULATE åsidosätter de yttre filtren i 'Geography'[State Province Code] och ersätter sina egna filterargument, eftersom filtren gäller för samma kolumn.

Granska sedan uttrycket [$$ i WA !!]. Du kanske undrar hur den här formeln kan returnera värdet för försäljning i Washington och inget annat, eftersom argumentfiltret innehåller Oregon och det yttre CALCULATE-uttrycket innehåller ett filter i Washington och British Columbia. Svaret är att KEEPFILTERS ändrar standardbeteendet för CALCULATE och lägger till ytterligare ett filter. Eftersom skärningspunkten för filter används, nu det yttre filtret 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") läggs till i filterargumentet 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR",. Eftersom båda filtren gäller för samma kolumn är det resulterande filtret 'Geography'[State Province Code]="WA" det filter som används när uttrycket utvärderas.

Filterfunktioner
Funktionen CALCULATE
Funktionen CALCULATETABLE