Del via


Brug SELECTEDVALUE i stedet for VALUES

Som dataudformer kan det nogle gange være nødvendigt at skrive et DAX udtryk, der tester, om en kolonne er filtreret efter en bestemt værdi.

I tidligere versioner af DAXblev dette krav opfyldt sikkert ved hjælp af et mønster, der omfatter tre DAX funktioner. IF, HASONEVALUE og VALUES. Følgende målingsdefinition viser et eksempel. Det beregner momsbeløbet, men kun for salg til australske kunder.

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

I eksemplet returnerer funktionen kun , når en enkelt værdi af kolonnen land/område er synlig i den aktuelle filterkontekst. Når den er TRUE, sammenlignes funktionen VALUES med konstantteksten "Australien". Når funktionen VALUES returnerer TRUE, multipliceres målingen Sales med 0,10 (repræsenterer 10%). Hvis funktionen HASONEVALUE returnerer FALSE– fordi mere end én værdi filtrerer kolonnen – returnerer den første IF funktion BLANK.

Brugen af HASONEVALUE er en defensiv teknik. Det er påkrævet, fordi det er muligt, at flere værdier filtrerer kolonnen Country-Region. I dette tilfælde returnerer funktionen VALUES en tabel med flere rækker. Hvis du sammenligner en tabel med flere rækker med en skalarværdi, resulterer det i en fejl.

Anbefaling

Det anbefales, at du bruger funktionen SELECTEDVALUE. Det opnår det samme resultat som det mønster, der er beskrevet i denne artikel, men mere effektivt og elegant.

Ved hjælp af funktionen SELECTEDVALUE omskrives definitionen af eksempelmålingen nu.

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

Drikkepenge

Det er muligt at overføre et alternativt resultat værdi til funktionen SELECTEDVALUE. Den alternative resultatværdi returneres, når der enten ikke anvendes nogen filtre – eller flere filtre – på kolonnen.