Lire en anglais

Partager via


KEEPFILTERS

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

Modifie la façon dont les filtres sont appliqués lors de l’évaluation d’une fonction CALCULATE ou CALCULATETABLE.

Syntaxe

DAX
KEEPFILTERS(<expression>)  

Paramètres

Terme Définition
expression Toute expression.

Valeur de retour

Table des valeurs.

Remarques

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

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

  • La fonction KEEPFILTERS vous permet de modifier ce comportement. Lorsque vous utilisez KEEPFILTERS, tous les filtres existants dans le contexte actuel sont comparés aux colonnes des arguments de filtre, et l’intersection de ces arguments est utilisée comme contexte d’évaluation de l’expression. L’effet net sur une colonne est que les deux ensembles d’arguments s’appliquent : les arguments de filtre utilisés dans CALCULATE et les filtres dans les arguments de la fonction KEEPFILTER. 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 lorsqu’elle est utilisée dans les colonnes calculées ou les 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 CALCULATE ou CALCULATETABLE.

Les trois premières 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).

  • Ventes Internet pour l’état de Washington et la province de la Colombie-Britannique (les deux régions combinées).

La quatrième expression calcule Internet Sales for Washington et Oregon, tandis que le filtre pour Washington et la Colombie-Britannique est appliqué.

L’expression suivante calcule Internet Sales for Washington et Oregon, mais utilise KEEPFILTERS ; le filtre pour Washington et la Colombie-Britannique fait partie du contexte précédent.

DAX
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 à 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

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

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

Ensuite, examinez l’expression, [$$ in WA !!]. Vous pouvez vous demander comment cette formule pourrait retourner la valeur des ventes à Washington et rien d’autre, puisque le filtre d’argument inclut l’Oregon et l’expression CALCULATE externe inclut un filtre à Washington et en Colombie-Britannique. La réponse est que KEEPFILTERS modifie le comportement par défaut de 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, le filtre résultant 'Geography'[State Province Code]="WA" est le filtre appliqué lors de l’évaluation de l’expression.

fonctions de filtre
fonction CALCULATE
fonction CALCULATETABLE