Jaa


VALUES sijaan SELECTEDVALUE käyttäminen

Tietomallintajana saatat joskus joutua kirjoittamaan DAX-lausekkeen, joka testaa, suodatetaanko sarake tietyllä value.

DAX earlier versioissa tämä vaatimus saavutettiin turvallisesti käyttämällä kolmea DAX funktiota koskevaa kaavaa. IF, HASONEVALUEandVALUES. Seuraavassa measure määrityksessä esitetään esimerkki. Se laskee arvonlisäveron määrän, mutta vain australialaisille asiakkaille tehtyjen myyntien osalta.

Australian Sales Tax =
IF(
    HASONEVALUE(Customer[Country-Region]),
    IF(
        VALUES(Customer[Country-Region]) = "Australia",
        [Sales] * 0.10
    )
)

Esimerkissä HASONEVALUE-funktio palauttaa TRUE vain, kun Maa–alue--sarakkeen yksittäinen value näkyy nykyisessä filter kontekstissa. Kun se on TRUE, VALUES-funktiota verrataan kirjaimellisesti tekstiin "Australia". Kun VALUES-funktio palauttaa TRUE, sales-measure kerrotaan luvulla 0,10 (eli 10%). If HASONEVALUE-funktio palauttaa FALSE, koska useampi kuin yksi valuefilters saraketta, firstIF funktio palauttaa BLANK.

HASONEVALUE käyttö on puolustava tekniikka. Se on pakollista, koska on mahdollista, että Country-Region- sarake valuesfilter. Tässä tapauksessa VALUES-funktio palauttaa useiden rivien taulukon. Kun useiden rivien taulukkoa verrataan skalaariseen value, tuloksena on error.

Suositus

On suositeltavaa käyttää SELECTEDVALUE-funktiota. Sen tulos on sama kuin tässä artikkelissa kuvattu malli, mutta tehokkaammin and tyylikkäämmin.

SELECTEDVALUE avulla measure esimerkkimääritelmä kirjoitetaan now uudelleen.

Australian Sales Tax =
IF(
    SELECTEDVALUE(Customer[Country-Region]) = "Australia",
    [Sales] * 0.10
)

Juomaraha

On mahdollista välittää vaihtoehtoinen tulosvalueSELECTEDVALUE-funktioon. Vaihtoehtoinen tulos value palautetaan, kun sarakkeeseen ei käytetä filters–or useita filters.