Share via


KEEPFILTERS

Gælder for:Beregnet tabel beregningaf målingsvisualisering for en beregnet kolonne

Ændrer den måde, filtre anvendes på, mens funktionen CALCULATE eller CALCULATETABLE evalueres.

Syntaks

KEEPFILTERS(<expression>)  

Parametre

Begreb Definition
Udtryk Et hvilket som helst udtryk.

Returværdi

En tabel med værdier.

Bemærkninger

  • Du kan bruge FUNKTIONERNE KEEPFILTERS i konteksten CALCULATE og CALCULATETABLE til at tilsidesætte disse funktioners standardfunktionsmåde.

  • Filterargumenter i funktioner som CALCULATE bruges som standard som kontekst til evaluering af udtrykket, og derfor erstatter filterargumenter for CALCULATE alle eksisterende filtre over de samme kolonner. Den nye kontekst, der foretages af filterargumentet for CALCULATE, påvirker kun eksisterende filtre på kolonner, der er nævnt som en del af filterargumentet. Filtre på andre kolonner end dem, der er nævnt i argumenterne i CALCULATE eller andre relaterede funktioner, forbliver i kraft og ændres ikke.

  • Funktionen KEEPFILTERS giver dig mulighed for at ændre denne funktionsmåde. Når du bruger KEEPFILTERS, sammenlignes eventuelle eksisterende filtre i den aktuelle kontekst med kolonnerne i filterargumenterne, og skæringspunktet for disse argumenter bruges som kontekst til evaluering af udtrykket. Nettoeffekten for en hvilken som helst kolonne er, at begge argumenter gælder: både de filterargumenter, der bruges i CALCULATE, og filtrene i argumenterne for funktionen KEEPFILTER. Med andre ord, mens CALCULATE-filtre erstatter den aktuelle kontekst, føjer KEEPFILTERS filtre til den aktuelle kontekst.

  • Denne funktion understøttes ikke til brug i DirectQuery-tilstand, når den bruges i beregnede kolonner eller RLS-regler (row-level security).

Eksempel

I følgende eksempel gennemgås nogle almindelige scenarier, der demonstrerer brugen af funktionen KEEPFILTERS som en del af en CALCULATE- eller CALCULATETABLE-formel.

De første tre udtryk henter simple data, der skal bruges til sammenligninger:

  • Internet Sales for staten Washington.

  • Internet Sales for staterne Washington og Oregon (begge stater tilsammen).

  • Internet Sales for staten Washington og provinsen British Columbia (begge områder tilsammen).

Det fjerde udtryk beregner Internet Sales for Washington og Oregon, mens filteret for Washington og British Columbia anvendes.

Det næste udtryk beregner Internet Sales for Washington og Oregon, men bruger KEEPFILTERS. filteret for Washington og British Columbia er en del af den tidligere kontekst.

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 dette udtryk evalueres i forhold til eksempeldatabasen AdventureWorks DW, hentes følgende resultater.

Column Værdi
[$$ i WA] 2.467.248,34 USD
[$$ i WA og OR] 3.638.239,88 USD
[$$ i WA og BC] 4.422.588,44 USD
[$$ i WA og OR ??] 3.638.239,88 USD
[$$ i WA !!] 2.467.248,34 USD

Bemærk

Ovenstående resultater blev formateret til en tabel i stedet for en enkelt række til uddannelsesmæssige formål.

Først skal du undersøge udtrykket [$$ i WA og OR ??]. Du undrer dig måske over, hvordan denne formel kan returnere værdien for salg i Washington og Oregon, da det ydre CALCULATE-udtryk indeholder et filter for Washington og British Columbia. Svaret er, at standardfunktionsmåden for CALCULATE tilsidesætter de ydre filtre i 'Geography'[State Province Code] og erstatter sine egne filterargumenter, fordi filtrene gælder for den samme kolonne.

Undersøg derefter udtrykket [$$ i WA !!]. Du undrer dig måske over, hvordan denne formel kan returnere værdien for salg i Washington og intet andet, da argumentfilteret indeholder Oregon, og det ydre CALCULATE-udtryk indeholder et filter i Washington og British Columbia. Svaret er, at KEEPFILTERS ændrer standardfunktionsmåden for CALCULATE og tilføjer et ekstra filter. Da skæringspunktet for filtre bruges, er det ydre filter 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") føjes til filterargumentet 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR",. Da begge filtre gælder for den samme kolonne, er det resulterende filter 'Geography'[State Province Code]="WA" det filter, der anvendes, når udtrykket evalueres.

Filterfunktioner
Funktionen CALCULATE
Funktionen CALCULATETABLE