Vältä FILTER käyttämistä filter argumenttina
Tietomallintajana kirjoitat usein DAX lausekkeita, jotka on arvioitava muokatussa filter kontekstissa. Voit esimerkiksi kirjoittaa measure määritelmän suuren katteen tuotteiden myynnin calculate. Tämä laskutoimitus kuvaillaan myöhemmin tässä artikkelissa.
Muistiinpano
Tämä artikkeli koskee erityisesti mallilaskelmia, jotka koskevat filters taulukoiden tuomiseen.
CALCULATE and CALCULATETABLE DAX funktiot ovat tärkeitä and hyödyllisiä funktioita. Niiden avulla voit kirjoittaa laskutoimituksia, jotka poistavat or lisäävät filters, or muokkaavat suhdepolkuja. Se tehdään välittämällä filter argumentit, jotka ovat joko totuusarvolausekkeita, taulukkolausekkeita or erityisiä filter funktioita. Käsittelemme tässä artikkelissa vain totuusarvo- and taulukkolausekkeita.
Tarkastele seuraavaa measure määritelmää, joka laskee punaisten product myynnin taulukkolausekkeen avulla. Se replace kaikki filters, joita voidaan käyttää Product-taulukossa.
Red Sales =
CALCULATE(
[Sales],
FILTER('Product', 'Product'[Color] = "Red")
)
CALCULATE-funktio hyväksyy FILTERDAX-funktion palauttaman taulukkolausekkeen, joka arvioi sen filter-lausekkeen jokaiselle Product taulukon riville. Se saa oikean tuloksen – punaisten tuotteiden myyntituloksen. Se voidaan kuitenkin saavuttaa paljon tehokkaammin käyttämällä totuusarvolauseketta.
Tässä on parannettu measure määritys, jossa käytetään totuusarvolauseketta taulukkolausekkeen sijaan. KEEPFILTERS DAX-funktio varmistaa, että Color -sarakkeeseen käytetyt olemassa olevat filters säilytetään, andnot korvataan.
Red Sales =
CALCULATE(
[Sales],
KEEPFILTERS('Product'[Color] = "Red")
)
On suositeltavaa välittää filter argumentit totuusarvolausekkeiksi aina, kun se on mahdollista. Tämä johtuu siitä, että tuontimallitaulukot ovat muistissa olevien sarakesäilöjen tietoja. Ne on nimenomaisesti optimoitu filter sarakkeisiin tehokkaasti tällä tavalla.
Totuusarvolausekkeisiin sovelletaan kuitenkin rajoituksia, kun niitä käytetään filter argumentteina. He:
- Eivät voi viitata sarakkeisiin useista taulukoista
- measure ei voi viitata
- Eivät voi käyttää sisäkkäisiä CALCULATE funktioita
- Eivät voi käyttää funktioita, jotka skannaavat or palauttavat taulukon
Tämä tarkoittaa sitä, että sinun on käytettävä monimutkaisempiin filter vaatimuksiin taulukkolausekkeita.
Harkitse eri measure määritelmän now. Vaatimuksena on calculate 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ää Profitmeasure arviointia niiden kuukausien poistamiseksi, jotka eivät ole saavuttaneet voittoa. On not mahdollista käyttää measure totuusarvolausekkeessa, kun sitä käytetään filter argumenttina.
Suosituksia
Parhaan suorituskyvyn takaamista varten on suositeltavaa käyttää totuusarvolausekkeita filter argumentteina aina, kun se on mahdollista.
Siksi FILTER funktiota tulee käyttää vain tarvittaessa. Sen avulla voit tehdä filter monimutkaisia sarakevertailuja. Nämä sarakevertailut voivat koskea seuraavia:
- Toimenpiteet
- Muut sarakkeet
- or OR looginen operaattori (||) ORDAX funktion avulla.
sisällön Related
- Filter-funktiot (DAX)
- Learning path: Use DAX in Power BI Desktop
- Kysymyksiä? Voit esittää kysymyksiä Power BI -yhteisön
- Ehdotuksia? Kerro ideoita Power BI - parantamiseksi