Jaa


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

-funktio hyväksyy funktion palauttaman taulukkolausekkeen, joka arvioi sen suodatinlausekkeen kullekin Product -riville. Se saa oikean tuloksen – punaisten tuotteiden myyntituloksen. Se voidaan kuitenkin saavuttaa paljon tehokkaammin käyttämällä totuusarvolauseketta.

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