Jaa


Käytä SELECTEDVALUE-arvoa arvojen sijaan

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

Aikaisemmissa DAX-versioissa tämä vaatimus saavutettiin turvallisesti käyttämällä kolmea DAX-funktiota koskevaa kaavaa. IF, HASONEVALUE ja VALUES. Seuraavassa mittarimää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 arvon TRUE vain, kun Maa-alue-sarakkeen yksittäinen arvo näkyy nykyisessä suodatinkontekstissa. Kun arvo on TRUE, VALUES-funktiolla verrataan kirjaimellisesti tekstiin "Australia". Kun VALUES-funktio palauttaa arvon TRUE, Sales-mittari kerrotaan luvulla 0,10 (osuus on 10 %). Jos HASONEVALUE-funktio palauttaa arvon FALSE, koska useampi kuin yksi arvo suodattaa sarakkeen, ensimmäinen IF-funktio palauttaa tyhjän arvon.

HASONEVALUE-kohteen käyttö on puolustava tekniikka. Se on pakollista, koska useat arvot suodattavat maa-alue-sarakkeen. Tässä tapauksessa VALUES-funktio palauttaa useiden rivien taulukon. Useiden rivien taulukon vertaaminen skalaariarvoon johtaa virheeseen.

Suositus

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

SELECTEDVALUE-funktiolla esimerkki mittarimäärityksestä kirjoitetaan nyt uudelleen.

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

Vihje

On mahdollista välittää vaihtoehtoinen tulos-arvo SELECTEDVALUE-funktioon. Vaihtoehtoinen tulosarvo palautetaan, kun sarakkeeseen ei käytetä suodattimia tai useita suodattimia.