Bruk SELECTEDVALUE i stedet for VALUES
Som datamodellerer må du noen ganger skrive et DAX uttrykk som tester om en kolonne filtreres etter en bestemt verdi.
I tidligere versjoner av DAXble dette kravet trygt oppnådd ved hjelp av et mønster som involverer tre DAX funksjoner. IF, HASONEVALUE og VALUES. Følgende måldefinisjon presenterer et eksempel. Den beregner mva-beløpet, men bare 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 HASONEVALUE-funksjonen TRUE bare når én enkelt verdi i kolonnen landområde er synlig i gjeldende filterkontekst. Når den er TRUE, sammenlignes VALUES-funksjonen med den litterale teksten Australia. Når VALUES-funksjonen returnerer TRUE, multipliseres målet Salg med 0,10 (representerer 10%). Hvis HASONEVALUE-funksjonen returnerer FALSE– fordi mer enn én verdi filtrerer kolonnen – returnerer den første IF-funksjonen BLANK.
Bruken av HASONEVALUE er en defensiv teknikk. Det kreves fordi det er mulig at flere verdier filtrerer kolonnen landområde. I dette tilfellet returnerer VALUES-funksjonen en tabell med flere rader. Sammenligning av en tabell med flere rader med en skalarverdi resulterer i en feil.
Anbefaling
Det anbefales at du bruker SELECTEDVALUE-funksjonen. Det oppnår samme resultat som mønsteret som er beskrevet i denne artikkelen, men mer effektivt og elegant.
Ved hjelp av SELECTEDVALUE-funksjonen skrives måldefinisjonen for eksempel nå på nytt.
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
Tips
Det er mulig å sende et alternativt resultat verdi til SELECTEDVALUE-funksjonen. Den alternative resultatverdien returneres når enten ingen filtre eller flere filtre brukes på kolonnen.
Relatert innhold
- Læreprogram: Bruke DAX i Power BI Desktop
- Spørsmål? Prøv å spørre Power BI-fellesskapet
- Forslag? Bidra med ideer for å forbedre Power BI-