KEEPFILTERS

S’applique à :Colonne calculéeTable calculéeMesureCalcul visuel

Modifie la façon dont les filtres sont appliqués quand une fonction CALCULATE ou CALCULATETABLE est évaluée.

Syntaxe

KEEPFILTERS(<expression>)  

Paramètres

Terme Définition
expression Toute expression.

Valeur de retour

Table de valeurs.

Remarques

  • Vous utilisez KEEPFILTERS dans les fonctions CALCULATE et CALCULATETABLE portant sur le contexte pour remplacer le comportement standard de ces fonctions.

  • Par défaut, les arguments de filtre dans des fonctions telles que CALCULATE sont utilisés comme contexte pour l’évaluation de l’expression. Ainsi, les arguments de filtre pour la fonction CALCULATE remplacent tous les filtres existants sur les mêmes colonnes. Le nouveau contexte affecté par l’argument de filtre pour la fonction CALCULATE affecte uniquement les filtres existants sur les colonnes mentionnées dans le cadre de l’argument de filtre. Les filtres sur des colonnes autres que celles mentionnées dans les arguments de la fonction CALCULATE ou d’autres fonctions associées continuent de s’appliquer sans modification.

  • La fonction KEEPFILTERS vous permet de modifier ce comportement. Quand vous utilisez KEEPFILTERS, tous les filtres existants dans le contexte actuel sont comparés aux colonnes dans les arguments de filtre, et l’intersection de ces arguments est utilisée comme contexte pour l’évaluation de l’expression. L’effet net sur une colonne, quelle qu’elle soit, est le suivant : les deux jeux d’arguments s’appliquent, à savoir les arguments de filtre utilisés dans la fonction CALCULATE et ceux de la fonction KEEPFILTERS. En d’autres termes, alors que les filtres CALCULATE remplacent le contexte actuel, KEEPFILTERS ajoute des filtres au contexte actuel.

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

Exemple

L’exemple suivant vous explique, pour différents scénarios courants, comment utiliser la fonction KEEPFILTERS dans le cadre d’une formule CALCULATE ou CALCULATETABLE.

Les trois premières expressions permettent d’obtenir des données simples, qui seront utilisées à des fins de comparaison :

  • Ventes Internet pour l’État de Washington.

  • Ventes Internet pour les États de Washington et de l’Oregon (combinés).

  • Ventes Internet pour l’État de Washington et la province de Colombie-Britannique (combinés).

La quatrième expression calcule les ventes Internet pour les États de Washington et de l’Oregon avec application du filtre pour Washington et la Colombie-Britannique.

L’expression suivante calcule les ventes Internet pour les États de Washington et de l’Oregon et utilise la fonction KEEPFILTERS. Le filtre pour Washington et 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"  
      )  
)  

Quand cette expression est évaluée par rapport à l’exemple de base de données AdventureWorks DW, les résultats suivants sont obtenus.

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

Notes

À des fins pédagogiques, les résultats ci-dessus ont été mis en forme dans une table et non sur une ligne unique.

Tout d’abord, examinez l’expression [$$ in WA and OR ??] . Vous vous demandez peut-être comment cette formule peut retourner la valeur des ventes dans les États de Washington et de l’Oregon puisque l’expression CALCULATE externe comprend un filtre pour Washington et la Colombie-Britannique. En fait, par défaut, la fonction CALCULATE remplace les filtres externes dans 'Geography'[State Province Code] et applique ses propres arguments de filtre, car les filtres s’appliquent à la même colonne.

Examinez à présent l’expression [$$ in WA !!] . Vous vous demandez peut-être comment cette formule peut retourner la valeur des ventes dans l’État de Washington uniquement puisque l’argument de filtre inclut l’Oregon et que l’expression CALCULATE externe comprend un filtre pour Washington et la Colombie-Britannique. En fait, la fonction KEEPFILTERS modifie le comportement par défaut de l’expression CALCULATE et ajoute un filtre supplémentaire. Étant donné que l’intersection des filtres est utilisée, le filtre externe 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") est ajouté à l’argument de filtre 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR" . Étant donné que les deux filtres s’appliquent à la même colonne, c’est le filtre 'Geography'[State Province Code]="WA" obtenu qui est appliqué quand l’expression est évaluée.

Fonctions de filtrage
CALCULATE, fonction
CALCULATETABLE, fonction