SELECTEDVALUE gebruiken in plaats van VALUES
Als gegevensmodelbouwer moet u soms een DAX-expressie schrijven waarmee u kunt testen of een kolom op een specifieke waarde wordt gefilterd.
In eerdere versies van DAX werd deze vereiste veilig gerealiseerd door gebruik te maken van een patroon met drie DAX-functies; ALS, HASONEVALUE en VALUES. Voor de volgende definitie van een meting wordt een voorbeeld weergegeven. Hiermee wordt het btw-bedrag berekend, maar alleen voor de verkoop aan klanten in Australië.
Australian Sales Tax =
IF(
HASONEVALUE(Customer[Country-Region]),
IF(
VALUES(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
)
In het voorbeeld retourneert de functie HASONEVALUE alleen TRUE wanneer één waarde van de kolom Country-Region zichtbaar is in de huidige filtercontext. Als het resultaat TRUE is, wordt de functie VALUES vergeleken met de letterlijke tekst 'Australië'. Wanneer de functie VALUES de waarde TRUE retourneert, wordt de meting Verkoop met 0,10 vermenigvuldigd (dit staat voor 10%). Als de functie HASONEVALUE de waarde FALSE retourneert (omdat de kolom op meer dan één waarde wordt gefilterd), wordt met de eerste functie IF het resultaat BLANK geretourneerd.
Het gebruik van de functie HASONEVALUE is een defensieve techniek. Dit is vereist omdat het mogelijk is dat de kolom Country-Region door meerdere waarden wordt gefilterd. In dit geval wordt met de functie VALUES een tabel met meerdere rijen geretourneerd. Wanneer u een tabel met meerdere rijen met een scalaire waarde vergelijkt, wordt een fout gegenereerd.
Aanbeveling
Het is raadzaam om de functie SELECTEDVALUE te gebruiken. Hiermee krijgt u hetzelfde resultaat als het patroon dat in dit artikel wordt beschreven, maar wel efficiënter en eleganter.
Met behulp van de functie SELECTEDVALUE wordt het voorbeeld van de metingdefinitie nu herschreven.
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
Tip
Het is nu mogelijk om een waarde voor een alternatief resultaat in te voegen in de functie SELECTEDVALUE. De waarde voor het alternatieve resultaat wordt geretourneerd wanneer er geen filters (of meerdere filters) op de kolom worden toegepast.
Zie ook
- Leertraject: DAX gebruiken in Power BI Desktop
- Vragen? Misschien dat de Power BI-community het antwoord weet
- Suggesties? Ideeën bijdragen om Power BI te verbeteren