Untersuchen des Filterkontexts

Abgeschlossen

Mit der DAX-Funktion VALUES können Ihre Formeln ermitteln, welche Werte sich im Filterkontext befinden. Die Syntax der VALUES-Funktion lautet wie folgt:

VALUES(<TableNameOrColumnName>)

Die Funktion erfordert die Übergabe eines Tabellen- oder Spaltenverweises. Wenn Sie einen Tabellenverweis übergeben, gibt sie ein Tabellenobjekt mit den Spalten zurück, die Zeilen für den Inhalt des Filterkontexts enthalten. Wenn Sie einen Spaltenverweis übergeben, gibt sie eine einspaltige Tabelle mit eindeutigen Werten zurück, die sich im Filterkontext befinden.

Die Funktion gibt immer ein Tabellenobjekt zurück, und eine Tabelle kann mehrere Zeilen enthalten. Daher muss Ihre Formel zuerst testen, ob die VALUES-Funktion eine einzelne Zeile zurückgibt, um zu ermitteln, ob sich ein bestimmter Wert im Filterkontext befindet. Dabei können Ihnen zwei Funktionen helfen: die DAX-Funktionen HASONEVALUE und SELECTEDVALUE.

Die HASONEVALUE-Funktion gibt TRUE zurück, wenn ein angegebener Spaltenverweis zu einem einzelnen Wert gefiltert wurde.

Mit der SELECTEDVALUE-Funktion können Sie ganz einfach ermitteln, was ein einzelner Wert sein kann. Wenn ein Spaltenverweis an die Funktion übergeben wird, gibt sie einen einzelnen Wert zurück. Wenn sich mehrere Werte im Filterkontext befinden, gibt sie BLANK (oder einen alternativen Wert, den Sie an die Funktion übergeben) zurück.

Im folgenden Beispiel verwenden Sie die HASONEVALUE-Funktion. Fügen Sie das folgende Measure hinzu, das Verkaufsprovisionen berechnet. Beachten Sie, dass die Provisionsrate bei Adventure Works 10 % des Umsatzes für alle Länder mit Ausnahme der USA beträgt. In den USA verdienen Vertriebsmitarbeiter 15 % Provision. Formatieren Sie das Measure als Währung mit zwei Dezimalstellen, und fügen Sie es dann der Tabelle auf Seite 3 des Berichts hinzu.

Sales Commission =
[Revenue]
    * IF(
        HASONEVALUE('Sales Territory'[Country]),
        IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )

Abbildung eines Tabellenvisuals mit drei Spalten: „Region“, „Revenue“ und „Sales Commission“. Es werden zehn Zeilen mit Regionen und eine Summe angezeigt. Die Summe unter „Sales Commission“ ist leer.

Beachten Sie, dass die Summe unter Sales Commission leer ist. Der Grund hierfür ist, dass mehrere Werte im Filterkontext für die Spalte Country in der Tabelle „Sales Territory“ liegen. In diesem Fall gibt die HASONEVALUE-Funktion FALSE zurück, sodass das Measure Revenue mit BLANK multipliziert wird (ein mit BLANK multiplizierter Wert ist BLANK). Um eine Summe zu erhalten, müssen Sie eine Iteratorfunktion verwenden. Dies wird später in diesem Modul erläutert.

Die folgenden drei weiteren Funktionen können Sie zum Testen des Filterzustands verwenden:

  • DAX-Funktion ISFITLERED: Gibt TRUE zurück, wenn ein übergebener Spaltenverweis direkt gefiltert wird.

  • DAX-Funktion ISCROSSFILTERED: gibt TRUE zurück, wenn ein übergebener Spaltenverweis indirekt gefiltert wird. Eine Spalte gilt als kreuzgefiltert, wenn ein auf eine andere Spalte in derselben oder in einer verknüpften Tabelle angewandter Filter sich durch die Filterung auch auf die referenzierte Spalte auswirkt.

  • DAX-Funktion ISINSCOPE: gibt TRUE zurück, wenn sich ein übergebener Spaltenverweis in der Hierarchie auf der gleichen Ebene befindet.

Kehren Sie zur Seite 2 des Berichts zurück, und ändern Sie dann die Definition des Measures Revenue % Total Country, um zu testen, ob sich die Spalte Region in der Tabelle „Sales Territory“ im Gültigkeitsbereich befindet. Wenn sie sich nicht im Gültigkeitsbereich befindet, sollte das Measureergebnis BLANK sein.

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    IF(
        ISINSCOPE('Sales Territory'[Region]),
        DIVIDE(
            CurrentRegionRevenue,
            TotalCountryRevenue
        )
    )

Abbildung eines Matrixvisuals mit dem Titel „Reseller Revenue“, in dem „Group“, „Country“ und „Region“ nach den Zeilen gruppiert sind, die auch Summen für „Revenue“, „Revenue % Total Region“, „Revenue % Total Country“ und „Revenue % Total Group“ enthalten. In den Summen von „Revenue % Total Country“ befinden sich leere Werte.

Beachten Sie im Matrixvisual, dass die Werte in Revenue % Total Country jetzt nur angezeigt werden, wenn sich eine Region im Gültigkeitsbereich befindet.