Bruk SELECTEDVALUE i stedet for VERDIER
Som datamodellerer må du noen ganger skrive et DAX-uttrykk som tester om en kolonne filtreres etter en bestemt verdi.
I tidligere versjoner av DAX ble dette kravet trygt oppnådd ved hjelp av et mønster som involverer tre DAX-funksjoner. HVIS, 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 SANN bare når en enkeltverdi i kolonnen Land-område er synlig i gjeldende filterkontekst. Når det er SANN, sammenlignes VALUES-funksjonen med den litterale teksten Australia. Når VALUES-funksjonen returnerer SANN, multipliseres salgsmålet med 0,10 (som representerer 10 %). Hvis HASONEVALUE-funksjonen returnerer USANN, fordi mer enn én verdi filtrerer kolonnen, returnerer den første HVIS-funksjonen BLANK.
Bruken av HASONEVALUE er en defensiv teknikk. Det kreves fordi det er mulig at flere verdier filtrerer kolonnen Land-områ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.
Anbefalinger
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 en alternativ resultatverdi til SELECTEDVALUE-funksjonen. Den alternative resultatverdien returneres når enten ingen filtre eller flere filtre brukes på kolonnen.
Relatert innhold
- Læring bane: Bruke DAX i Power BI Desktop
- Spørsmål? Prøv å spørre Power BI-fellesskap
- Forslag? Bidra med ideer for å forbedre Power BI