KEEPFILTERS
Gilt für:Berechnete SpalteBerechnete TabelleMeasurevisuelle Berechnung
Ändert, wie Filter beim Auswerten einer CALCULATE- oder CALCULATETABLE-Funktion angewendet werden.
Syntax
KEEPFILTERS(<expression>)
Parameter
Ausdruck | Definition |
---|---|
expression |
Ein beliebiger Ausdruck. |
Rückgabewert
Eine Tabelle mit Werten.
Bemerkungen
Sie verwenden KEEPFILTERS im Kontext CALCULATE und CALCULATETABLE Funktionen, um das Standardverhalten dieser Funktionen außer Kraft zu setzen.
Standardmäßig werden Filterargumente in Funktionen wie CALCULATE als Kontext für die Auswertung des Ausdrucks verwendet und als solche Filterargumente für CALCULATE alle vorhandenen Filter über dieselben Spalten ersetzen. Der neue Kontext, der vom Filterargument für CALCULATE wirkt sich nur auf vorhandene Filter in Spalten aus, die als Teil des Filterarguments erwähnt werden. Filter nach Spalten, die nicht in den Argumenten von CALCULATE oder anderen verwandten Funktionen erwähnt werden, bleiben wirksam und unverändert.
Mit der KEEPFILTERS-Funktion können Sie dieses Verhalten ändern. Wenn Sie KEEPFILTERSverwenden, werden alle vorhandenen Filter im aktuellen Kontext mit den Spalten in den Filterargumenten verglichen, und die Schnittmenge dieser Argumente wird als Kontext für die Auswertung des Ausdrucks verwendet. Der Nettoeffekt über eine Spalte besteht darin, dass beide Argumentsätze angewendet werden: sowohl die in CALCULATE verwendeten Filterargumente als auch die Filter in den Argumenten der FUNKTION KEEPFILTER. Anders ausgedrückt: Während CALCULATE Filter den aktuellen Kontext ersetzen, fügt KEEPFILTERS dem aktuellen Kontext Filter hinzu.
Diese Funktion wird für die Verwendung im DirectQuery-Modus nicht unterstützt, wenn sie in berechneten Spalten oder Sicherheitsregeln auf Zeilenebene (RLS) verwendet wird.
Beispiel
Im folgenden Beispiel werden einige gängige Szenarien erläutert, die die Verwendung der KEEPFILTERS-Funktion als Teil einer CALCULATE- oder CALCULATETABLE Formel veranschaulichen.
Die ersten drei Ausdrücke erhalten einfache Daten, die für Vergleiche verwendet werden sollen:
Internet Sales für den Bundesstaat Washington.
Internet sales for the states of Washington and Oregon (both states combined).
Internet Sales für den Bundesstaat Washington und die Provinz British Columbia (beide Regionen kombiniert).
Der vierte Ausdruck berechnet Internet Sales für Washington und Oregon, während der Filter für Washington und British Columbia angewendet wird.
Der nächste Ausdruck berechnet internet Sales für Washington und Oregon, verwendet aber KEEPFILTERS; der Filter für Washington und British Columbia ist Teil des vorherigen Kontexts.
EVALUATE ROW(
"$$ in WA"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
)
, "$$ in WA and OR"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, "$$ in WA and BC"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA and OR ??"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
,'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA !!"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
, KEEPFILTERS('Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
)
Wenn dieser Ausdruck anhand der Beispieldatenbank AdventureWorks DW ausgewertet wird, werden die folgenden Ergebnisse abgerufen.
Spalte | Wert |
---|---|
[$$ in WA] |
$ 2.467.248.34 |
[$$ in WA and OR] |
$ 3,638,239,88 |
[$$ in WA and BC] |
$ 4.422.588.44 |
[$$ in WA and OR ??] |
$ 3,638,239,88 |
[$$ in WA !!] |
$ 2.467.248.34 |
Anmerkung
Die obigen Ergebnisse wurden für Bildungszwecke in eine Tabelle anstelle einer einzelnen Zeile formatiert.
Überprüfen Sie zunächst den Ausdruck [$$ in WA and OR ??]
. Sie fragen sich vielleicht, wie diese Formel den Wert für Verkäufe in Washington und Oregon zurückgeben könnte, da der äußere CALCULATE Ausdruck einen Filter für Washington und British Columbia enthält. Die Antwort lautet, dass das Standardverhalten von CALCULATE die äußeren Filter in "Geography"[Bundeslandcode] außer Kraft setzt und seine eigenen Filterargumente ersetzt, da die Filter auf dieselbe Spalte angewendet werden.
Überprüfen Sie als Nächstes den Ausdruck, [$$ in WA !!]
. Sie fragen sich vielleicht, wie diese Formel den Wert für Verkäufe in Washington und nichts anderes zurückgeben könnte, da der Argumentfilter Oregon und den äußeren CALCULATE Ausdruck einen Filter in Washington und British Columbia enthält. Die Antwort lautet, dass KEEPFILTERS das Standardverhalten von CALCULATE ändert und einen zusätzlichen Filter hinzufügt. Da die Schnittmenge von Filtern verwendet wird, wird nun der äußere Filter 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC")
dem Filterargument 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"
hinzugefügt. Da beide Filter auf dieselbe Spalte angewendet werden, ist der resultierende Filter 'Geography'[State Province Code]="WA"
der Filter, der beim Auswerten des Ausdrucks angewendet wird.