Filtrer des données dans des formules DAX

S’applique à
Excel pour Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Cette section décrit comment créer des filtres dans les formules DAX (Data Analysis Expressions). Vous pouvez créer des filtres dans les formules pour restreindre les valeurs des données sources utilisées dans les calculs. Pour ce faire, vous devez spécifier une table en tant qu’entrée de la formule, puis définir une expression de filtre. L’expression de filtre que vous fournissez permet d’interroger les données et de renvoyer uniquement un sous-ensemble des données sources. Le filtre est appliqué dynamiquement chaque fois que vous mettez à jour les résultats de la formule, en fonction du contexte actuel de vos données.

Contenu de cet article

Création d’un filtre sur un tableau utilisé dans une formule

Vous pouvez appliquer des filtres dans les formules qui prennent un tableau comme entrée. Au lieu d’entrer un nom de table, vous utilisez la fonction FILTRE pour définir un sous-ensemble de lignes de la table spécifiée. Ce sous-ensemble est ensuite transmis à une autre fonction, pour des opérations telles que les agrégations personnalisées.

Par exemple, supposons que vous ayez une table de données contenant des informations sur les commandes des revendeurs et que vous souhaitiez calculer le montant vendu par chaque revendeur. Toutefois, vous souhaitez afficher le montant des ventes uniquement pour les revendeurs qui ont vendu plusieurs unités de vos produits à valeur ajoutée. La formule suivante, basée sur l’exemple de classeur DAX, montre un exemple de la façon dont vous pouvez créer ce calcul à l’aide d’un filtre :

=SOMMEX(
     FILTRE ('ResellerSales_USD', 'ResellerSales_USD'[Quantité] > 5 &&
     'ResellerSales_USD'[ProductStandardCost_USD] > 100),
     'ResellerSales_USD'[SalesAmt]
     )

  • La première partie de la formule spécifie l’une des fonctions d’agrégation Power Pivot, qui prend un tableau comme argument. SOMME.X calcule une somme sur une table.

  • La deuxième partie de la formule FILTER(table, expression),indique SUMX les données à utiliser. SUMX Nécessite une table ou une expression résultant en une table. Ici, au lieu d’utiliser toutes les données d’une table, vous utilisez la FILTER fonction pour spécifier les lignes de la table qui sont utilisées.
    L’expression de filtre comporte deux parties : la première partie désigne la table à laquelle le filtre s’applique. La deuxième partie définit une expression à utiliser comme condition de filtre. Dans ce cas, vous filtrez sur les revendeurs qui ont vendu plus de 5 unités et les produits qui coûtent plus de 100 $. L’opérateur && est un opérateur ET logique, qui indique que les deux parties de la condition doivent être vraies pour que la ligne appartienne au sous-ensemble filtré.

  • La troisième partie de la formule indique à la SUMX fonction quelles valeurs doivent être additionnées. Dans ce cas, vous utilisez uniquement le montant des ventes.
    Notez que les fonctions telles que FILTRE, qui retournent une table, ne renvoient jamais la table ou les lignes directement, mais sont toujours incorporées dans une autre fonction. Pour plus d’informations sur FILTRE et les autres fonctions de filtrage, voir Fonctions de filtrage (DAX).

    Remarque

    L’expression de filtre est affectée par le contexte dans lequel elle est utilisée. Par exemple, si vous utilisez un filtre dans une mesure et que la mesure est utilisée dans un tableau ou un graphique croisé dynamique, le sous-ensemble de données renvoyé peut être affecté par des filtres ou des segments supplémentaires que l’utilisateur a appliqués dans le tableau croisé dynamique. Pour plus d’informations sur le contexte, consultez Contexte dans les formules DAX.

Filtres qui suppriment les doublons

Outre le filtrage de valeurs spécifiques, vous pouvez renvoyer un ensemble unique de valeurs d’une autre table ou colonne. Cela peut être utile lorsque vous souhaitez compter le nombre de valeurs uniques dans une colonne ou utiliser une liste de valeurs uniques pour d’autres opérations. DAX fournit deux fonctions pour retourner des valeurs distinctes : la fonction DISTINCT et la fonction VALUES.

  • La fonction DISTINCT examine une seule colonne que vous spécifiez comme argument de la fonction et renvoie une nouvelle colonne contenant uniquement les valeurs distinctes.
  • La fonction VALUES renvoie également une liste de valeurs uniques, mais renvoie également le membre Inconnu. Cela est utile lorsque vous utilisez des valeurs provenant de deux tables jointes par une relation et qu’une valeur est manquante dans une table et présente dans l’autre. Pour plus d’informations sur le membre inconnu, consultez Contexte dans les formules DAX.

Ces deux fonctions renvoient une colonne entière de valeurs ; Par conséquent, vous utilisez les fonctions pour obtenir une liste de valeurs qui est ensuite transmise à une autre fonction. Par exemple, vous pouvez utiliser la formule suivante pour obtenir une liste des produits distincts vendus par un revendeur particulier, à l’aide de la clé de produit unique, puis compter les produits de cette liste à l’aide de la fonction NB.ROWS :

=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))

Haut de la page

Comment le contexte affecte les filtres

Lorsque vous ajoutez une formule DAX à un tableau ou graphique croisé dynamique, les résultats de la formule peuvent être affectés par le contexte. Si vous travaillez dans un tableau Power Pivot, le contexte est la ligne actuelle et ses valeurs. Si vous travaillez dans un tableau ou un graphique croisé dynamique, le contexte signifie l’ensemble ou le sous-ensemble de données défini par des opérations telles que le découpage ou le filtrage. La conception du tableau ou graphique croisé dynamique impose également son propre contexte. Par exemple, si vous créez un tableau croisé dynamique qui regroupe les ventes par région et par année, seules les données qui s’appliquent à ces régions et années apparaissent dans le tableau croisé dynamique. Par conséquent, toutes les mesures que vous ajoutez au tableau croisé dynamique sont calculées dans le contexte des en-têtes de colonne et de ligne, plus les filtres de la formule de mesure.

Pour plus d’informations, consultez Contexte dans les formules DAX.

Haut de la page

Suppression des filtres

Lorsque vous travaillez avec des formules complexes, vous souhaiterez peut-être savoir exactement quels sont les filtres actuels ou vous souhaiterez peut-être modifier la partie filtre de la formule. DAX fournit plusieurs fonctions qui vous permettent de supprimer des filtres et de contrôler les colonnes qui sont conservées dans le contexte de filtre actuel. Cette section fournit une vue d’ensemble de l’incidence de ces fonctions sur les résultats d’une formule.

Remplacement de tous les filtres par la fonction TOUT

Vous pouvez utiliser la ALL fonction pour remplacer les filtres précédemment appliqués et renvoyer toutes les lignes de la table à la fonction qui effectue l’agrégation ou une autre opération. Si vous utilisez une ou plusieurs colonnes au lieu d’un tableau comme arguments de , la ALL fonction renvoie toutes les lignes, en ignorant les filtres de ALLcontexte.

Remarque

Si vous connaissez bien la terminologie des bases de données relationnelles, vous pouvez considérer ALL que vous générez la jointure externe gauche naturelle de toutes les tables.

Par exemple, supposons que vous disposez des tables, Ventes et Produits, et que vous souhaitiez créer une formule qui calcule la somme des ventes du produit actuel divisée par les ventes de tous les produits. Vous devez prendre en considération le fait que, si la formule est utilisée dans une mesure, l’utilisateur du tableau croisé dynamique peut utiliser un segment pour filtrer un produit particulier, avec le nom du produit sur les lignes. Par conséquent, pour obtenir la vraie valeur du dénominateur, quels que soient les filtres ou les segments, vous devez ajouter la fonction ALL pour remplacer les filtres. La formule suivante est un exemple de la façon d’utiliser ALL pour remplacer les effets des filtres précédents :

=SOMME (Ventes[Montant])/SOMMEX(Ventes[Montant], FILTRE(Ventes, TOUT(Produits)))

  • La première partie de la formule, SOMME (Ventes[Montant]), calcule le numérateur.
  • La somme prend en compte le contexte actuel, ce qui signifie que si vous ajoutez la formule dans une colonne calculée, le contexte de ligne est appliqué, et si vous ajoutez la formule dans un tableau croisé dynamique en tant que mesure, tous les filtres appliqués dans le tableau croisé dynamique (le contexte de filtre) sont appliqués.
  • La deuxième partie de la formule calcule le dénominateur. La fonction TOUT remplace les filtres qui peuvent être appliqués à la Products table.

Pour plus d’informations, notamment des exemples détaillés, reportez-vous à la rubrique Fonction TOUT.

Remplacement de filtres spécifiques avec la fonction ALLEXCEPT

La fonction ALLEXCEPT remplace également les filtres existants, mais vous pouvez spécifier que certains des filtres existants doivent être conservés. Les colonnes que vous nommez en tant qu’arguments de la fonction ALLEXCEPT spécifient les colonnes qui continueront à être filtrées. Si vous souhaitez remplacer les filtres de la plupart des colonnes mais pas de toutes, ALLEXCEPT est plus pratique que ALL. La fonction ALLEXCEPT est particulièrement utile lorsque vous créez des tableaux croisés dynamiques qui peuvent être filtrés sur de nombreuses colonnes différentes et que vous souhaitez contrôler les valeurs utilisées dans la formule. Pour plus d’informations, notamment un exemple détaillé de l’utilisation de ALLEXCEPT dans un tableau croisé dynamique, voir Fonction ALLEXCEPT.

Haut de la page