Vältä FILTER käyttämistä suodatinargumenttina
Tietojen mallintajana kirjoitat usein DAX lausekkeita, jotka on arvioitava muokatussa suodatinkontekstissa. Voit esimerkiksi kirjoittaa mittarimäärityksen, jolla lasketaan "suuren katteen tuotteiden" myynti. Tämä laskutoimitus kuvaillaan myöhemmin tässä artikkelissa.
Muistiinpano
Tämä artikkeli koskee erityisesti mallilaskelmia, jotka käyttävät suodattimia taulukoiden tuomiseen.
CALCULATE- ja CALCULATETABLEDAX funktiot ovat tärkeitä ja hyödyllisiä funktioita. Niiden avulla voit kirjoittaa laskutoimituksia, jotka poistavat tai lisäävät suodattimia tai muokkaavat suhdepolkuja. Se tehdään välittämällä suodatinargumentteja, jotka ovat joko totuusarvolausekkeita, taulukkolausekkeita tai erityisiä suodatinfunktioita. Käsittelemme tässä artikkelissa vain totuusarvo- ja taulukkolausekkeita.
Tarkastele seuraavaa mittarimääritystä, joka laskee punaisten tuotteiden myynnin taulukkolausekkeen avulla. Se korvaa kaikki suodattimet, joita voidaan käyttää Product -taulukossa.
Red Sales =
CALCULATE(
[Sales],
FILTER('Product', 'Product'[Color] = "Red")
)
Tässä on parannettu mittarimääritys, jossa käytetään totuusarvolauseketta taulukkolausekkeen sijaan. KEEPFILTERS DAX-funktio varmistaa, että Color -sarakkeeseen käytetyt olemassa olevat suodattimet säilytetään, eikä niitä korvata.
Red Sales =
CALCULATE(
[Sales],
KEEPFILTERS('Product'[Color] = "Red")
)
On suositeltavaa välittää suodatinargumentit totuusarvolausekkeiksi aina, kun se on mahdollista. Tämä johtuu siitä, että tuontimallitaulukot ovat muistissa olevien sarakesäilöjen tietoja. Ne on nimenomaisesti optimoitu suodattamaan sarakkeet tehokkaasti tällä tavalla.
Totuusarvolausekkeisiin sovelletaan kuitenkin rajoituksia, kun niitä käytetään suodatinargumentteina. He:
- Eivät voi viitata sarakkeisiin useista taulukoista
- Eivät voi viitata mittayksikköön
- Eivät voi käyttää sisäkkäisiä CALCULATE funktioita
- Eivät voi käyttää funktioita, jotka skannaavat tai palauttavat taulukon
Tämä tarkoittaa, että sinun on käytettävä monimutkaisempiin suodatinvaatimuksiin taulukkolausekkeita.
Tarkastele nyt eri mittarimääritystä. Vaatimuksena on laskea myynti, mutta vain kuukausille, jotka ovat olleet voitollisia.
Sales for Profitable Months =
CALCULATE(
[Sales],
FILTER(
VALUES('Date'[Month]),
[Profit] > 0
)
)
Tässä esimerkissä on käytettävä FILTER-funktiota. Tämä johtuu siitä, että se edellyttää Profit -mittarin laskemista niiden kuukausien poistamiseksi, jotka eivät ole saavuttaneet voittoa. Mittaria ei voi käyttää totuusarvolausekkeessa, kun sitä käytetään suodatinargumenttina.
Suosituksia
Parhaan suorituskyvyn takaamista varten on suositeltavaa käyttää totuusarvolausekkeita suodatinargumentteina aina, kun se on mahdollista.
Siksi FILTER funktiota tulee käyttää vain tarvittaessa. Sen avulla voit suodattaa monimutkaisia sarakevertailuja. Nämä sarakevertailut voivat koskea seuraavia:
- Toimenpiteet
- Muut sarakkeet
- OR DAX-funktion tai OR loogisen operaattorin (||) käyttäminen
Aiheeseen liittyvä sisältö
- Filter -funktiot (DAX)
- Oppimispolku: DAX käyttäminen Power BI Desktopissa
- Kysymyksiä? Voit esittää kysymyksiä Power BI -yhteisön
- Ehdotuksia? Kerro ideasi Power BI - parantamiseksi