Partager via


KEEPFILTERS

s’applique à :colonne calculéetable calculéeMeasurecalcul visuel

Modifie la façon dont les filters sont appliquées lors de l’évaluation d’une fonction CALCULATEorCALCULATETABLE.

Syntaxe

KEEPFILTERS(<expression>)

Paramètres

Terme Définition
expression Toute expression.

Retourner value

Tableau de values.

Remarques

  • Vous utilisez KEEPFILTERS dans le contexte CALCULATEandCALCULATETABLE fonctions, pour remplacer le comportement standard de ces fonctions.

  • Par défaut, filter arguments dans des fonctions telles que CALCULATE sont utilisés comme contexte d’évaluation de l’expression, and comme tels filter arguments pour CALCULATEreplaceallfilters existantes sur les mêmes colonnes. Le nouveau contexte affecté par l’argument filter pour CALCULATE affecte uniquement les filters existantes sur les colonnes mentionnées dans le cadre de l’argument filter. Filters sur les colonnes autres que celles mentionnées dans les arguments de CALCULATEor autres fonctions related restent dans effectand non modifiables.

  • La fonction KEEPFILTERS vous permet de modifier ce comportement. Lorsque vous utilisez KEEPFILTERS, toutes les filters existantes dans le contexte actuel sont comparées aux colonnes des arguments filter, and l’intersection de ces arguments est utilisée comme contexte d’évaluation de l’expression. Le effect net sur une colonne est que les deux ensembles d’arguments s’appliquent : les deux arguments filter utilisés dans CALCULATEand l'filters dans les arguments de la fonction KEEPFILTER. En d’autres termes, alors que CALCULATEfiltersreplace le contexte actuel, KEEPFILTERS ajoute filters au contexte actuel.

  • Cette fonction est not prise en charge pour une utilisation en mode DirectQuery lorsqu’elle est utilisée dans les colonnes calculées or règles de sécurité au niveau des lignes (RLS).

Exemple

L’exemple suivant vous guide dans certains scénarios courants qui illustrent l’utilisation de la fonction KEEPFILTERS dans le cadre d’une formule CALCULATEorCALCULATETABLE.

Les first trois expressions obtiennent des données simples à utiliser pour les comparaisons :

  • Internet Sales pour l’état de Washington.

  • Internet Sales for the states of Washington and Oregon (les deux états combinés).

  • Internet Sales for the state of Washington and la province de la Colombie-Britannique (les deux régions combinées).

La quatrième expression calcule Internet Sales for Washington and Oregon, tandis que la filter pour Washington and La Colombie-Britannique est appliquée.

L’expression next calcule Internet Sales for Washington and Oregon, mais utilise KEEPFILTERS; la filter de Washington and la Colombie-Britannique fait partie du contexte précédent.

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"
      )
)

Lorsque cette expression est évaluée par rapport à la base de données AdventureWorks DW sample, les résultats suivants sont obtenus.

Colonne 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 $

Note

Les résultats ci-dessus ont été mis en forme dans un tableau, au lieu d’une seule ligne, à des fins éducatives.

First, examinez l’expression, [$$ in WA and OR ??]. Vous pouvez vous demander comment cette formule pourrait retourner le value pour les ventes à Washington and Oregon, puisque l’expression de CALCULATE externe comprend un filter pour Washington and la Colombie-Britannique. La réponse est que le comportement par défaut de CALCULATE remplace le filters externe dans « Geography » [State Province Code] and remplace ses propres arguments filter, car les filters s’appliquent à la même colonne.

Next, examinez l’expression, [$$ in WA !!]. Vous pouvez vous demander comment cette formule pourrait retourner le value pour les ventes à Washington and rien d’autre, puisque l’argument filter inclut l’Oregon and l’expression externe CALCULATE comprend un filter à Washington and la Colombie-Britannique. La réponse est que KEEPFILTERS modifie le comportement par défaut de CALCULATEand ajoute un filtersupplémentaire. Étant donné que l’intersection de filters est utilisée, now l'filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") externe est ajoutée à l’argument filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR",. Étant donné que les deux filters s’appliquent à la même colonne, la filter'Geography'[State Province Code]="WA" résultante est la filter appliquée lors de l’évaluation de l’expression.

fonctions FilterCALCULATE fonctionCALCULATETABLE