Filtermodifiziererfunktionen verwenden
Wenn Sie die Funktion CALCULATE verwenden, können Sie Filteränderungsfunktionen übergeben, mit denen Sie mehr erreichen als nur das Hinzufügen von Filtern.
Filter entfernen
Verwenden Sie die Funktion REMOVEFILTERS als Filterausdruck CALCULATE, um Filter aus dem Filterkontext zu entfernen. Sie kann Filter aus einer oder mehreren (auch allen) Spalten einer einzelnen Tabelle entfernen.
Hinweis
Die Funktion REMOVEFILTERS ist relativ neu. In früheren Versionen von DAX haben Sie Filter mit der Funktion ALL oder ‑Varianten, einschließlich der ALLEXCEPT und der Funktionen ALLNOBLANKROW entfernt. Diese Funktionen fungieren sowohl als Filtermodifiziererer als auch als Funktionen, die Tabellenobjekte unterschiedlicher Werte zurückgeben. Wir erwähnen diese Funktionen hier, da möglicherweise in der Dokumentation und in Beispielen Formeln finden, mit denen Filter entfernt werden.
Im folgenden Beispiel fügen Sie das neue Measure der Tabelle Sales hinzu, die dann die Measures Revenue berechnet, aber die dies durchführt, indem Sie die Filter von der Tabelle Sales Territory entfernt. 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 wird nach drei Spalten aus der Tabelle Sales Territory in den Zeilen gruppiert: Group, Country und Region.
Beachten Sie, dass das Measure Revenue Total Region 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. Diese neue Definition ändert den Measurenamen und deklariert zwei Variablen. Formatieren Sie das Measure unbedingt als Prozentsatz mit zwei Dezimalstellen.
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 Revenue % Total Region angezeigt werden.
Sie erstellen nun ein weiteres Measure. Dieses Mal berechnen Sie jedoch das Verhältnis von Umsatz für eine Region geteilt durch den Umsatz ihres Landes oder ihrer Region.
Beachten Sie vor dem Ausführen dieser Aufgabe, dass der Wert 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 Daten die Tabelle Sales Territory aus.
Wenden Sie die folgenden Spaltenfilter an:
-
Group– Nordamerika -
Country– Vereinigte Staaten -
Region– Südwest
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.
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 der DAX-Logik handelt es sich um eine kleine und subtile Änderung, die an der Measureformel Revenue % Total Region vorgenommen wird: Die Funktion REMOVEFILTERS entfernt jetzt Filter aus der Spalte Region statt 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 das Measure Revenue % Total Country der Tabelle Sales hinzu, und legen Sie dann das Format auf einen Prozentsatz mit zwei Dezimalstellen fest. Fügen Sie das Measure dem Matrixvisual hinzu.
Beachten Sie, dass alle Werte, mit Ausnahme der Werte für die Regionen in der Zeile „United States“, 100 % ergeben. Der Grund dafür ist, dass beim Unternehmen Adventure Works die Vereinigten Staaten Regionen haben, alle anderen Länder/Regionen 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. Zum Beispiel hat Australien keine Region, daher wird der Wert für Land/Region als Regionsname wiederholt. 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 legen Sie dann das Format auf einen Prozentsatz mit zwei Dezimalstellen fest. Fügen Sie dann das 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
)
Wenn Sie Filter aus den Spalten Region und Country in der Tabelle Sales Territory entfernen, berechnet das Measure den Umsatz der Region als Verhältnis des Umsatzes seiner Gruppe.
Filter beibehalten
Sie können die Funktion KEEPFILTERS als Filterausdruck in der Funktion CALCULATE verwenden, um Filter beizubehalten.
Wechseln Sie für diese Aufgabe zur Seite 1 des Berichts. Ändern Sie dann die Definition des Measure Revenue Red, um die Funktion KEEPFILTERS zu verwenden.
Revenue Red =
CALCULATE(
[Revenue],
KEEPFILTERS('Product'[Color] = "Red")
)
Beachten Sie, dass in Tabellenvisuals nur ein Measure 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 Revenue Red nur ein Wert angezeigt.
Inaktive Beziehungen verwenden
Eine inaktive Modellbeziehung kann Filter nur weitergeben, wenn die Funktion USERELATIONSHIP als Filterausdruck an die Funktion CALCULATE ü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])
)
Beziehungsverhalten anpassen
Sie können das Verhalten der Modellbeziehung ändern, wenn ein Ausdruck ausgewertet wird, indem Sie die Funktion CROSSFILTER als Filterausdruck an die Funktion CALCULATE übergeben. Dabei handelt sich um eine erweiterte Funktion.
Die Funktion CROSSFILTER kann die Filterrichtungen ändern (von beide zu einzelne oder von einzelne zu beide) und sogar eine Beziehung deaktivieren.