Freigeben über


KEEPFILTERS

Gilt für:Berechnete Spalteberechnete TabelleMeasurevisuelle Berechnung

Ändert, wie filters beim Auswerten einer CALCULATEorCALCULATETABLE-Funktion angewendet werden.

Syntax

KEEPFILTERS(<expression>)

Parameter

Ausdruck Definition
expression Ein beliebiger Ausdruck.

value zurückgeben

Eine Tabelle mit values.

Bemerkungen

  • Sie verwenden KEEPFILTERS im Kontext CALCULATEandCALCULATETABLE Funktionen, um das Standardverhalten dieser Funktionen außer Kraft zu setzen.

  • Standardmäßig werden filter Argumente in Funktionen wie CALCULATE als Kontext für die Auswertung des Ausdrucks verwendet, and als solche filter Argumente für CALCULATEreplaceall vorhandenen filters über denselben Spalten. Der neue Kontext, der durch das argument filter für CALCULATE beeinflusst wird, wirkt sich nur auf vorhandene filters auf Spalten aus, die als Teil des arguments filter erwähnt werden. Filters in spalten, die nicht in den Argumenten CALCULATEor anderen related Funktionen erwähnt werden, bleiben in effectand unverändert.

  • Mit der KEEPFILTERS-Funktion können Sie dieses Verhalten ändern. Wenn Sie KEEPFILTERSverwenden, werden alle vorhandenen filters im aktuellen Kontext mit den Spalten in den filter Argumenten verglichen, and der Schnittpunkt dieser Argumente als Kontext für die Auswertung des Ausdrucks verwendet wird. Das Netto-effect über einer Spalte besteht darin, dass beide Argumentsätze angewendet werden: beide filter Argumente, die in CALCULATEand der filters in den Argumenten der KEEPFILTER-Funktion verwendet werden. Anders ausgedrückt: In der Erwägung, dass CALCULATEfiltersreplace aktuellen Kontext KEEPFILTERS dem aktuellen Kontext filters hinzufügt.

  • Diese Funktion wird not für die Verwendung im DirectQuery-Modus unterstützt, wenn sie in berechneten Spalten or 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 CALCULATEorCALCULATETABLE Formel veranschaulichen.

Die first drei Ausdrücke erhalten einfache Daten, die für Vergleiche verwendet werden sollen:

  • Internet Sales für den Bundesstaat Washington.

  • Internet Sales für die Bundesstaaten Washington and Oregon (beide Staaten kombiniert).

  • Internet Sales für den Bundesstaat Washington and der Provinz British Columbia (beide Regionen kombiniert).

Der vierte Ausdruck berechnet Internet Sales für Washington and Oregon, während die filter für Washington and British Columbia angewendet wird.

Der ausdruck next berechnet Internet Sales for Washington and Oregon, verwendet aber KEEPFILTERS; die filter für Washington and 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 mit der sample Datenbank AdventureWorks DW ausgewertet wird, werden die folgenden Ergebnisse abgerufen.

Spalte Value
[$$ 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.

First, überprüfen Sie den Ausdruck, [$$ in WA and OR ??]. Sie fragen sich vielleicht, wie diese Formel die value für Verkäufe in Washington and Oregon zurückgeben könnte, da der äußere CALCULATE Ausdruck eine filter für Washington and British Columbia enthält. Die Antwort lautet, dass das Standardverhalten von CALCULATE die äußere filters in "Geography"[State Province Code] außer Kraft setzt, and ihre eigenen filter Argumente ersetzt, da die filters auf dieselbe Spalte angewendet werden.

Next, überprüfen Sie den Ausdruck, [$$ in WA !!]. Sie fragen sich vielleicht, wie diese Formel den value für Verkäufe in Washington and nichts anderes zurückgeben könnte, da das Argument filter oregon and den äußeren CALCULATE Ausdruck enthält eine filter in Washington and British Columbia. Die Antwort lautet, dass KEEPFILTERS das Standardverhalten von CALCULATEand ein zusätzliches filterhinzufügt. Da die Schnittmenge von filters verwendet wird, wird now der äußeren filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") dem filter Argument 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"hinzugefügt. Da beide filters auf dieselbe Spalte angewendet werden, ist die resultierende filter'Geography'[State Province Code]="WA" die filter, die beim Auswerten des Ausdrucks angewendet wird.

Filter FunktionenCALCULATE FunktionCALCULATETABLE Funktion