Jaa


KEEPFILTERS

Koskee seuraavia:Laskettu sarakeLaskettu taulukkoMittayksikköVisuaalinen laskenta -

Muokkaa sitä, miten suodattimia käytetään CALCULATE- tai CALCULATETABLE-funktioiden arvioinnin aikana.

Syntaksi

KEEPFILTERS(<expression>)  

Parametrit

Termi Määritelmä
expression Mikä tahansa lauseke.

Palautusarvo

Arvotaulukko.

Huomautuksia

  • KEEPFILTERS-funktiota käytetään CALCULATE- ja CALCULATETABLE-funktioiden kontekstissa näiden funktioiden vakiotoimintojen ohittamiseen.

  • Oletusarvon mukaan CALCULATE-funktion kaltaisten funktioiden suodatinargumentteja käytetään lausekkeen arvioinnin kontekstina, ja siksi CALCULATE-funktion suodatinargumentit korvaavat kaikki olemassa olevat suodattimet samoissa sarakkeissa. Uusi konteksti, jota CALCULATE-funktion suodatinargumentti vaikuttaa, vaikuttaa vain nykyisiin suodattimiin sarakkeissa, jotka on mainittu suodatinargumentin osana. Suodattimet muissa kuin CALCULATE-funktion argumenteissa mainituissa sarakkeissa tai muissa liittyvissä funktioissa pysyvät käytössä ja muuttumattomina.

  • KEEPFILTERS-funktion avulla voit muokata tätä toimintaa. Kun käytät KEEPFILTERS-suodattimia, nykyisen kontekstin olemassa olevia suodattimia verrataan suodatinargumenttien sarakkeisiin, ja näiden argumenttien leikkauspistettä käytetään lausekkeen arvioinnin kontekstina. Tämän vaikutus mihin tahansa sarakkeeseen on se, että molemmat argumenttijoukot ovat käytössä: sekä CALCULATE-funktiossa käytetyt suodatinargumentit että KEEPFILTER-funktion argumenteissa käytettävät suodattimet. Toisin sanoen CALCULATE-funktion suodattimet korvaavat nykyisen kontekstin, kun taas KEEPFILTERS-funktio lisää suodattimia nykyiseen kontekstiin.

  • Tätä funktiota ei tueta DirectQuery-tilassa lasketuissa sarakkeissa tai rivitason suojauksen (RLS) säännöissä käytettäväksi.

Esimerkki

Seuraavassa esimerkissä käydään läpi joitakin yleisiä skenaarioita, jotka osoittavat KEEPFILTERS-funktion käytön osana CALCULATE- tai CALCULATETABLE-kaavaa.

Kolme ensimmäistä lauseketta hankkivat yksinkertaisia tietoja, joita käytetään vertailuissa:

  • Internet-myynti Washingtonin osavaltiossa.

  • Internet-myynti Washingtonin ja Oregonin osavaltioissa (molemmat osavaltiot yhteensä).

  • Internet-myynti Washingtonin osavaltiossa ja Brittiläisen Kolumbian provinssissa (molemmat alueet yhteensä).

Neljäs lauseke laskee Internet-myynnin Washingtonissa ja Oregonissa, ja siinä käytetään Washingtonin ja Brittiläisen Kolumbian suodatinta.

Seuraava lauseke laskee Internet-myynnin Washingtonissa ja Oregonissa KEEPFILTERS-funktiota käyttämällä. Washingtonin ja Brittiläisen Kolumbian suodatin on osa edeltävää kontekstia.

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"  
      )  
)  

Kun tätä lauseketta verrataan mallitietokantaan AdventureWorks DW, saadaan seuraavat tulokset.

Sarake Arvo
[$$ 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

Muistiinpano

Yllä olevat tulokset muototeltiin taulukkoon yhden rivin sijaan opetustarkoituksessa.

Tutki ensin lauseketta [$$ in WA and OR ??]. Saatat ihmetellä, miten tämä kaava voi palauttaa myynnin arvon Washingtonissa ja Oregonissa, koska ulompi CALCULATE-lauseke sisältää suodattimen Washingtonille ja Brittiläiselle Kolumbialle. Vastaus on, että CALCULATE-funktion oletustoiminta ohittaa kohdan 'Geography'[State Province Code] ulommat suodattimet ja korvaa ne omilla suodatinargumentillaan, koska suodattimet koskevat samaa saraketta.

Tutki seuraavaksi lauseketta [$$ in WA !!]. Saatat ihmetellä, miten tämä kaava voi palauttaa myynnin arvon Washingtonissa eikä mitään muuta, koska argumentin suodatin sisältää Oregonin ja ulompi CALCULATE-lauseke sisältää suodattimen Washingtonille ja Brittiläiselle Kolumbialle. Vastaus on, että KEEPFILTERS muokkaa CALCULATE-funktion oletustoimintaa ja lisää suodattimen. Koska suodattimien leikkauspistettä käytetään, ulompi 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") lisätään nyt suodatinargumenttiin 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR",. Koska molemmat suodattimet koskevat samaa saraketta, tuloksena oleva suodatin 'Geography'[State Province Code]="WA" on suodatin, jota käytetään lausekkeen arvioinnissa.

Filter-funktiot
CALCULATE-funktion
CALCULATETABLE-funktion