DAX: Verwenden von SELECTEDVALUE anstelle von VAUESDAX: Use SELECTEDVALUE instead of VALUES

Als Datenmodellierer müssen Sie ggf. in manchen Fällen einen DAX-Ausdruck schreiben, der testet, ob eine Spalte nach einem bestimmten Wert gefiltert wird.As a data modeler, sometimes you might need to write a DAX expression that tests whether a column is filtered by a specific value.

In früheren DAX-Versionen wurde diese Anforderung durch die Verwendung eines Musters mit drei DAX-Funktionen sicher erfüllt.In earlier versions of DAX, this requirement was safely achieved by using a pattern involving three DAX functions. Die Funktionen sind IF, HASONEVALUE und VALUES.The functions are IF, HASONEVALUE and VALUES. Die folgende Measuredefinition stellt ein Beispiel dar.The following measure definition presents an example. Sie berechnet den Umsatzsteuerbetrag, jedoch nur für Verkäufe an australische Kunden.It calculates the sales tax amount, but only for sales made to Australian customers.

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

In diesem Beispiel gibt die HASONEVALUE-Funktion nur dann TRUE zurück, wenn ein einzelner Wert die Spalte Country-Region (Land/Region) filtert.In the example, the HASONEVALUE function returns TRUE only when a single value filters the Country-Region column. Wenn der Wert TRUE ist, wird die VALUES-Funktion mit dem literalen Text „Australia“ verglichen.When it's TRUE, the VALUES function is compared to the literal text "Australia". Wenn die VALUES-Funktion TRUE zurückgibt, wird das Measure Sales mit 0,10 multipliziert (entspricht 10 %).When the VALUES function returns TRUE, the Sales measure is multiplied by 0.10 (representing 10%). Wenn die HASONEVALUE-Funktion FALSE zurückgibt, weil mehr als ein Wert die Spalte filtert, gibt die erste IF-Funktion BLANK zurück.If the HASONEVALUE function returns FALSE—because more than one value filters the column—the first IF function returns BLANK.

Die Verwendung von HASONEVALUE ist eine defensive Methode.The use of the HASONEVALUE is a defensive technique. Sie ist erforderlich, da möglicherweise mehrere Werte die Spalte Country-Region (Land/Region) filtern.It's required because it's possible that multiple values filter the Country-Region column. In diesem Fall gibt die VALUES-Funktion eine Tabelle mit mehreren Zeilen zurück.In this case, the VALUES function returns a table of multiple rows. Der Vergleich einer Tabelle mit mehreren Zeilen mit einem skalaren Wert führt zu einem Fehler.Comparing a table of multiple rows to a scalar value results in an error.

EmpfehlungRecommendation

Es wird empfohlen, die Funktion SELECTEDVALUE zu verwenden.We recommend that you use the SELECTEDVALUE function. Mit dieser Funktion wird das gleiche Ergebnis wie das in diesem Artikel beschriebene Muster erzielt, jedoch effizienter und eleganter.It achieves the same outcome as the pattern described in this article, yet more efficiently and elegantly.

Mit der SELECTEDVALUE-Funktion wird die Measuredefinition im Beispiel nun umgeschrieben.Using the SELECTEDVALUE function, the example measure definition is now rewritten.

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

Tipp

Es ist möglich, einen alternativen Ergebniswert an die SELECTEDVALUE-Funktion zu übergeben.It's possible to pass an alternate result value into the SELECTEDVALUE function. Der alternative Ergebniswert wird zurückgegeben, wenn entweder keine oder mehrere Filter auf die Spalte angewendet werden.The alternate result value is returned when either no filters—or multiple filters—are applied to the column.

Nächste SchritteNext steps

Weitere Informationen zu diesem Artikel finden Sie in den folgenden Ressourcen:For more information about this article, check out the following resources: