Filterkontext ändern

Abgeschlossen

Sie können die Funktion CALCULATE verwenden, um den Filterkontext in Ihren Formeln anzupassen. Die Syntax für die CALCULATE-Funktion lautet folgendermaßen:

CALCULATE(<expression>, [[<filter1>], <filter2>]…)

Die Funktion erfordert die Übergabe in einem Ausdruck, der einen Skalarwert zurückgibt, und mit so vielen Filtern, wie Sie benötigen. Der Ausdruck kann ein Measure (ein benannter Ausdruck) oder ein beliebiger Ausdruck sein, der im Filterkontext ausgewertet werden kann.

Filter können boolesche Ausdrücke oder Tabellenausdrücke sein. Es ist auch möglich, Filteränderungsfunktionen zu übergeben, die mehr Kontrolle beim Ändern des Filterkontexts bieten.

Wenn Sie mehrere Filter haben, werden diese mit dem logischen Operator AND ausgewertet. Das bedeutet, dass alle Bedingungen gleichzeitig TRUE sein müssen.

Hinweis

Die Funktion CALCULATETABLE führt genau die gleiche Funktion aus wie die Funktion CALCULATE, außer dass sie den Filterkontext ändert, der auf einen Ausdruck angewendet wird, der ein Tabellenobjekt zurückgibt. In diesem Modul wird die Funktion CALCULATE in den Erklärungen und Beispielen verwendet, beachten Sie jedoch, dass diese Szenarien auch für die Funktion CALCULATETABLE gelten können.

Boolesche Ausdrucksfilter anwenden

Ein boolescher Ausdrucksfilter ist ein Ausdruck, der zu TRUE oder FALSE ausgewertet wird. Boolesche Filter müssen die folgenden Regeln einhalten:

  • Sie können nur auf eine einzelne Spalte verweisen.
  • Sie können nicht auf Measures verweisen.
  • Sie können keine Funktionen verwenden, die eine Tabelle scannen oder zurückgeben, die Aggregationsfunktionen wie SUM enthält.

Laden Sie die Datei Adventure Works DW 2020 M06.pbix herunter und öffnen Sie sie, um die Aufgaben in diesem Beispiel abzuschließen. Fügen Sie dann der Tabelle Sales, das folgende Measure hinzu, das das Measure Revenue mit einem booleschen Ausdrucksfilter nach roten Produkten filtert.

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

Fügen Sie nun das Measure Revenue Red dem Tabellenvisual auf Seite 1 des Berichts hinzu.

Screenshot einer Tabelle mit drei Spalten: Region, Revenue und Revenue Red. Die Tabelle zeigt 10 Zeilen und eine Gesamtsumme an.

Im nächsten Beispiel filtert das folgende Measure das Measure Revenue nach mehreren Farben. Beachten Sie die Verwendung des Operators IN, dem eine Liste von Farbwerten folgt.

Revenue Red or Blue =
CALCULATE(
    [Revenue],
    'Product'[Color] IN {"Red", "Blue"}
)

Das folgende Measure filtert das Measure Revenue nach teuren Produkten. Teure Produkte sind solche mit einem Listenpreis von mehr als 1.000 US-Dollar.

Revenue Expensive Products =
CALCULATE(
    [Revenue],
    'Product'[List Price] > 1000
)

Tabellenausdrucksfilter anwenden

Ein Tabellenausdrucksfilter wendet ein Tabellenobjekt als Filter an. Dabei kann es sich um einen Verweis auf eine Modelltabelle handeln. Es handelt sich jedoch wahrscheinlich um eine DAX-Funktion, die ein Tabellenobjekt zurückgibt.

Die Funktion FILTER wird in der Regel für die Anwendung komplexer Filterbedingungen genutzt. Dies umfasst auch solche, für die die Definition mithilfe eines booleschen Filterausdrucks nicht möglich ist. Die Funktion FILTER ist als Iteratorfunktion klassifiziert. Sie würden eine Tabelle oder einen Tabellenausdruck und einen Ausdruck so weitergeben, um jede Tabellenzeile auszuwerten.

Die Funktion FILTER gibt ein Tabellenobjekt mit genau der gleichen Struktur zurück, wie die übergebene Tabelle. Die Zeilen sind eine Teilmenge der übergebenen Zeilen, und zwar mit genau den Zeilen, für die der Ausdruck mit TRUE ausgewertet wurde.

Das folgende Beispiel zeigt einen Tabellenfilterausdruck, der die Funktion FILTER verwendet:

Revenue High Margin Products =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[List Price] > 'Product'[Standard Cost] * 2
    )
)

Die Funktion FILTER filtert in diesem Beispiel alle Zeilen der Tabelle „Product“ im Filterkontext. Jede Zeile für ein Produkt, dessen Listenpreis die doppelten Standardkosten übersteigt, wird als Zeile in der gefilterten Tabelle angezeigt. Daher wird das Measure Revenue für alle von der Funktion FILTER zurückgegebenen Produkte ausgewertet.

Es handelt sich bei allen Filterausdrücken, die an die Funktion CALCULATE übergeben werden, um Tabellenfilterausdrücke. Ein boolescher Filterausdruck stellt eine Kurzschreibweise dar, um das Schreiben und Lesen zu vereinfachen. Intern übersetzt Microsoft Power BI boolesche Filterausdrücke in Tabellenfilterausdrücke, wodurch Ihre Definition des Measures Revenue Red übersetzt wird.

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

Filterverhalten

Wenn Sie der Funktion CALCULATE Filterausdrücke hinzufügen, gibt es zwei mögliche Standardergebnisse:

  • Wenn sich die Spalten (oder Tabellen) nicht im Filterkontext befinden, werden dem Filterkontext neue Filter hinzugefügt, um den Ausdruck CALCULATE auszuwerten.
  • Wenn sich die Spalten (oder Tabellen) bereits im Filterkontext befinden, werden die vorhandenen Filter durch die neuen Filter überschrieben, um den Ausdruck CALCULATE auszuwerten.

In den folgenden Beispielen wird dargestellt, wie Filterausdrücke der Funktion CALCULATE hinzugefügt werden.

Hinweis

In sämtlichen Beispielen werden keine Filter auf das Tabellenvisual angewandt.

Das Measure Revenue Red wurde wie in der vorherigen Aktivität einem Tabellenvisual hinzugefügt, das nach Regionen gruppiert ist und den Umsatz anzeigt.

Screenshot einer Tabelle mit drei Spalten: Region, Revenue und Revenue Red. Die Tabelle zeigt 10 Zeilen und eine Gesamtsumme an.

Auf de Spalte Color in der Tabelle Product wird kein Filter angewandt. Daher fügt die Auswertung des Measures dem Filterkontext einen neuen Filter hinzu. In der ersten Zeile steht der Wert „2.681.324,79 USD“ für rote Produkte, die in der Region „Australien“ verkauft wurden.

Das Anpassen der ersten Spalte eines Tabellenvisuals von Region zu Color sorgt für ein abweichendes Ergebnis, weil die Spalte Color in der Tabelle Product jetzt im Filterkontext ist.

Screenshot einer Tabelle mit drei Spalten: „Color“, „Revenue“ und „Revenue Red“. Die Tabelle zeigt 10 Zeilen und eine Gesamtsumme an. Der Wert für „Revenue Red“ ist für jede Zeile gleich.

Die Measureformel Revenue Red wertet das Measure Revenue aus, indem sie einen Filter für die Spalte Color (auf Rot) in der Tabelle Product hinzufügt. In diesem nach Farbe gruppierten Visual überschreibt die Measureformel den Filterkontext mit einem neuen Filter.

Das Ergebnis entspricht möglicherweise nicht Ihren Erwartungen. Die nächste Lerneinheit bietet eine Einführung zur Funktion KEEPFILTERS. Dies ist eine Funktion zur Anpassung von Filtern. Sie ermöglicht es Ihnen, Filter beizubehalten, anstatt sie zu überschreiben.