Del via


KEEPFILTERS

gjelder:beregnet kolonneberegnet tabellmålevisualobjektberegning

Endrer hvordan filtre brukes under evaluering av en CALCULATE- eller CALCULATETABLE-funksjon.

Syntaks

KEEPFILTERS(<expression>)

Parametere

Vilkår Definisjon
expression Alle uttrykk.

Returverdi

En tabell med verdier.

Merknader

  • Du bruker KEEPFILTERS innenfor kontekstfunksjonene CALCULATE og CALCULATETABLE, til å overstyre standardvirkemåten til disse funksjonene.

  • Som standard brukes filterargumenter i funksjoner som CALCULATE som kontekst for evaluering av uttrykket, og som sådan er filterargumenter for CALCULATE erstatte alle eksisterende filtre over de samme kolonnene. Den nye konteksten som brukes av filterargumentet for CALCULATE påvirker bare eksisterende filtre på kolonner som er nevnt som en del av filterargumentet. Filtre på andre kolonner enn de som er nevnt i argumentene til CALCULATE eller andre relaterte funksjoner forblir i kraft og uendret.

  • Med KEEPFILTERS-funksjonen kan du endre denne virkemåten. Når du bruker KEEPFILTERS, sammenlignes eventuelle eksisterende filtre i gjeldende kontekst med kolonnene i filterargumentene, og skjæringspunktet mellom disse argumentene brukes som kontekst for evaluering av uttrykket. Nettoeffekten over én kolonne er at begge argumentsettene gjelder: både filterargumentene som brukes i CALCULATE og filtrene i argumentene i KEEPFILTER-funksjonen. Med andre ord, mens CALCULATE filtre erstatter gjeldende kontekst, legger KEEPFILTERS til filtre i gjeldende kontekst.

  • Denne funksjonen støttes ikke for bruk i DirectQuery-modus når den brukes i beregnede kolonner eller regler for sikkerhet på radnivå (RLS).

Eksempel

Følgende eksempel tar deg gjennom noen vanlige scenarioer som demonstrerer bruk av KEEPFILTERS-funksjonen som en del av en CALCULATE eller CALCULATETABLE formel.

De tre første uttrykkene henter enkle data som skal brukes til sammenligninger:

  • Internet Sales for delstaten Washington.

  • Internet Sales for delstatene Washington og Oregon (begge stater kombinert).

  • Internet Sales for delstaten Washington og provinsen British Columbia (begge regionene kombinert).

Det fjerde uttrykket beregner Internett-salg for Washington og Oregon, mens filteret for Washington og British Columbia brukes.

Det neste uttrykket beregner Internett-salg for Washington og Oregon, men bruker KEEPFILTERS; filteret for Washington og British Columbia er en del av den tidligere konteksten.

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 uttrykket evalueres mot eksempeldatabasen AdventureWorks DW, hentes følgende resultater.

Kolonne Verdi
[$$ 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

Notat

Resultatene ovenfor ble formatert til en tabell, i stedet for én enkelt rad, for utdanningsformål.

Undersøk først uttrykket [$$ in WA and OR ??]. Du lurer kanskje på hvordan denne formelen kan returnere verdien for salg i Washington og Oregon, siden det ytre CALCULATE uttrykket inneholder et filter for Washington og British Columbia. Svaret er at standard virkemåte for CALCULATE overstyrer de ytre filtrene i Geografi[Delstatsprovinskode] og erstatter sine egne filterargumenter, fordi filtrene gjelder for samme kolonne.

Deretter undersøker du uttrykket [$$ in WA !!]. Du lurer kanskje på hvordan denne formelen kan returnere verdien for salg i Washington og ingenting annet, siden argumentfilteret inkluderer Oregon og det ytre CALCULATE uttrykket inneholder et filter i Washington og British Columbia. Svaret er at KEEPFILTERS endrer standard virkemåte for CALCULATE og legger til et ekstra filter. Siden skjæringspunktet mellom filtre brukes, legges nå det ytre filteret 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") til filterargumentet 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR".. Fordi begge filtrene gjelder for samme kolonne, er det resulterende filteret 'Geography'[State Province Code]="WA" filteret som brukes når du evaluerer uttrykket.

FilterfunksjonerCALCULATE funksjonCALCULATETABLE funksjon