KEEPFILTERS
Koskee: Lasketun sarakkeen lasketun taulukon mittarin visuaalinen laskutoimitus
Muokkaa sitä, miten suodattimia käytetään CALCULATE- tai CALCULATETABLE-funktioiden arvioinnin aikana.
Syntaksi
KEEPFILTERS(<expression>)
Parametrit
Termi | Määritelmä |
---|---|
lauseke | Mikä tahansa lauseke. |
Palautusarvo
Arvotaulukko.
Huomautukset
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.
Column | 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 suodatin 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") lisätään 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.