Verwenden von Filtermodifiziererfunktionen

Abgeschlossen

Sie können bei Verwendung der CALCULATE-Funktion Filtermodifiziererfunktionen übergeben, mit denen Sie weitere Aktionen über das Hinzufügen von Filtern hinaus ausführen können.

Entfernen von Filtern

Verwenden Sie die DAX-Funktion REMOVEFILTERS als einen CALCULATE-Filterausdruck, um Filter aus dem Filterkontext zu entfernen. Sie kann Filter aus einer oder mehreren (auch allen) Spalten einer einzelnen Tabelle entfernen.

Hinweis

Die REMOVEFILTERS-Funktion ist relativ neu. In früheren Versionen von DAX haben Sie Filter mithilfe der DAX-Funktion ALL oder Varianten davon entfernt, einschließlich der DAX-Funktionen ALLEXCEPT und ALLNOBLANKROW. Diese Funktionen fungieren sowohl als Filtermodifiziererer als auch als Funktionen, die Tabellenobjekte unterschiedlicher Werte zurückgeben. Wir erwähnen diese Funktionen hier, da sehr wahrscheinlich in der Dokumentation und in Beispielen Formeln finden, mit denen Filter entfernt werden.

Im folgenden Beispiel erstellen Sie in der Tabelle Sales ein neues Measure, dass das Measure Revenue auswertet. Dazu entfernt es Filter aus der Tabelle Sales Territory. Formatieren Sie das Measure als Währung mit zwei Dezimalstellen.

Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))

Fügen Sie nun das Measure Revenue Total Region dem Matrixvisual auf Seite 2 des Berichts hinzu. Das Matrixvisual gruppiert nach drei Spalten aus der Tabelle „Sales Territory“ in den Zeilen: Group, Country und Region:

Abbildung einer Matrix mit dem Titel „Reseller Revenue“, in der „Group“, „Country“ und „Region“ nach den Zeilen gruppiert sind, die auch Summen für „Revenue“ und „Revenue Total Region“ enthalten. Der Wert für „Revenue Total Region“ ist für jede Zeile der Spalte „Group“ gleich.

Beachten Sie, dass der Wert von Revenue Total Region jedes Mal gleich ist. Dies ist der Wert des Gesamtumsatzes.

Dieses Ergebnis ist allein zwar noch nicht besonders nützlich, wenn es jedoch als Nenner in einer Verhältnisgleichung verwendet wird, können Sie damit einen Prozentsatz des Gesamtergebnisses berechnen. Aus diesem Grund überschreiben Sie nun die Definition des Measures Revenue Total Region mit der folgenden Definition. (Durch diese neue Definition werden der Measurename geändert und zwei Variablen deklariert. Achten Sie darauf, das Measure als Prozentsatz mit zwei Dezimalstellen zu formatieren.)

Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory')
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalRegionRevenue
    )

Überprüfen Sie, ob im Matrixvisual jetzt die Werte für Revenue % Total Region angezeigt werden.

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“ und „Revenue % Total Region“ enthalten.

Sie erstellen nun ein weiteres Measure, berechnen aber dieses Mal das Verhältnis des Umsatzes für eine Region dividiert durch den Umsatz des entsprechend Landes.

Beachten Sie vor dem Ausführen dieser Aufgabe, dass der Wert von Revenue % Total Region für die Region „Southwest“ 22,95 % beträgt. Untersuchen Sie den Filterkontext für diese Zelle. Wechseln Sie zur Datenansicht, und wählen Sie dann im Bereich Felder die Tabelle Sales Territory aus.

Wenden Sie folgende Spaltenfilter an:

  • Group: North America
  • Country: United States
  • Region: Southwest

Abbildung der Power BI Desktop-Tabellenfilter für die Tabelle „Sales Territory“. Es werden die Filter (1) Group = North America, (2) Country = United States und (3) Region = Southwest angewandt.

Beachten Sie, dass die Tabelle durch die Filter auf nur eine Zeile reduziert wird. Wenn Sie jetzt über Ihr neues Ziel nachdenken, das Verhältnis zwischen dem Umsatz der Region und dem Umsatz des Landes zu berechnen, löschen Sie den Filter aus der Spalte Region.

Abbildung des Kontextmenüs der Spalte, in dem der Befehl „Filter löschen“ hervorgehoben ist.

Wie Sie sehen können, sind jetzt fünf Zeilen vorhanden, und jede Zeile gehört zum Land „United States“ (USA). Wenn Sie entsprechend die Spaltenfilter für Region entfernen und dabei die Filter für die Spalten Country und Group beibehalten, besteht ein neuer Filterkontext für das Land der Region.

Beachten Sie in der folgenden Measuredefinition, wie Sie einen Filter aus einer Spalte entfernen können. In DAX-Logik handelt es sich um eine minimale Änderung an der Measureformel Revenue % Total Region: Die REMOVEFILTERS-Funktion entfernt jetzt Filter aus der Spalte Region und nicht aus allen Spalten der Tabelle Sales Territory.

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

Fügen Sie der Tabelle Sales das Measure Revenue % Total Country hinzu, und formatieren Sie es als Prozentsatz mit zwei Dezimalstellen. Fügen Sie das neue Measure dem Matrixvisual hinzu.

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“ und „Revenue % Total Country“ enthalten. Nur die Werte von „Revenue % Total Country“ für die Zeile „United States“ ergeben nicht 100 %.

Beachten Sie, dass alle Werte, mit Ausnahme der Werte für die Regionen in der Zeile „United States“, 100 % ergeben. Der Grund hierfür ist, dass beim Unternehmen Adventure Works die USA in Regionen unterteilt sind, alle anderen Länder jedoch nicht.

Hinweis

Tabellarische Modelle unterstützen keine unregelmäßigen Hierarchien, also Hierarchien mit variabler Tiefe. Daher werden beim Entwurf oftmals übergeordnete Werte (oder andere Vorgängerelemente) auf niedrigeren Ebenen der Hierarchie wiederholt. Beispielsweise gibt es in Australien keine Region, sodass der Wert von „Land/Region“ als Name der Region wiederholt wird. Es ist immer besser, einen aussagekräftigen Wert anstelle von BLANK zu speichern.

Das nächste Beispiel ist das letzte Measure, das Sie erstellen werden. Fügen Sie das Measure Revenue % Total Group hinzu, und formatieren Sie es als Prozentsatz mit zwei Dezimalstellen. Fügen Sie dann das neue Measure dem Matrixvisual hinzu.

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

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.

Wenn Sie in der Tabelle Sales Territory Filter aus den Spalten Region und Country entfernen, berechnet das Measure den Umsatz der Region als Verhältnis des Umsatzes seiner Gruppe.

Beibehalten von Filtern

Sie können die DAX-Funktion KEEPFILTERS als Filterausdruck in der CALCULATE-Funktion verwenden, um Filter beizubehalten.

Wechseln Sie für diese Aufgabe zur Seite 1 des Berichts. Ändern Sie dann die Definition des Measures Revenue Red so, dass die KEEPFILTERS-Funktion verwendet wird.

Revenue Red =
CALCULATE(
    [Revenue],
    KEEPFILTERS('Product'[Color] = "Red")
)

Abbildung eines Tabellenvisuals mit drei Spalten: „Color“, „Revenue“ und „Revenue Red“. Neun Zeilen und eine Summe werden angezeigt. Für „Revenue Red“ sind nur die Zeile „Red“ und die Summe nicht BLANK.

Beachten Sie, dass in Tabellenvisuals nur ein Wert für Revenue Red vorhanden ist. Der Grund hierfür ist, dass der boolesche Filterausdruck vorhandene Filter für die Spalte Color der Tabelle Product beibehält. Andere Farben als Rot sind leer, da die Filterkontexte und Filterausdrücke für diese beiden Filter kombiniert werden. Die Farbe Schwarz und die Farbe Rot überschneiden sich, und da nicht beide gleichzeitig TRUE sein können, wird der Ausdruck nicht nach Produktzeilen gefiltert. Es ist nur möglich, dass beide Filter für Rot gleichzeitig TRUE sind. Daher wird für TRUERevenue Red nur ein Wert angezeigt.

Verwenden inaktiver Beziehungen

Eine inaktive Modellbeziehung kann nur dann Filter weitergeben, wenn die DAX-Funktion USERELATIONSHIP als Filterausdruck an die CALCULATE-Funktion übergeben wird. Wenn Sie diese Funktion verwenden, um eine inaktive Beziehung einzubinden, wird die aktive Beziehung automatisch inaktiv.

Sehen Sie sich ein Beispiel für eine Measuredefinition an, die eine inaktive Beziehung verwendet, um das Measure Revenue nach Versanddaten zu berechnen:

Revenue Shipped =
CALCULATE (
    [Revenue],
    USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)

Ändern des Beziehungsverhaltens

Sie können das Verhalten der Modellbeziehung bei der Auswertung eines Ausdrucks ändern, indem Sie die DAX-Funktion CROSSFILTER als Filterausdruck an die CALCULATE-Funktion übergeben. Dabei handelt sich um eine erweiterte Funktion.

Die CROSSFILTER-Funktion kann die Filterrichtungen ändern (von beiden zu einem oder von einem zu beiden) und sogar eine Beziehung deaktivieren.