Filtrer des données dans des formules DAX

Remarque : Nous faisons de notre mieux pour vous fournir le contenu d’aide le plus récent aussi rapidement que possible dans votre langue. Cette page a été traduite automatiquement et peut donc contenir des erreurs grammaticales ou des imprécisions. Notre objectif est de faire en sorte que ce contenu vous soit utile. Pouvez-vous nous indiquer en bas de page si ces informations vous ont aidé ? Voici l’article en anglais à des fins de référence aisée.

Cette section explique 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 est utilisée pour interroger les données et 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 une table utilisée dans une formule

Filtres qui suppriment des doublons

Incidence du contexte sur les filtres

Suppression de filtres

Remplacement de tous les filtres par la fonction ALL

Remplacement de filtres spécifiques par la fonction ALLEXCEPT

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

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

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

= SUMX (
     FILTER ('ResellerSales_USD', 'ResellerSales_USD' [Quantity] > 5
&&      'ResellerSales_USD' [ProductStandardCost_USD] > 100),
     'ResellerSales_USD' [SalesAmt]
     )

  • La première partie de la formule spécifie une des fonctions d'agrégation Power Pivot, qui prend une table en tant qu'argument. SUMX calcule une somme sur une table.

  • La deuxième partie de la formule, FILTER(table, expression),indique à SUMX quelles données utiliser. SUMX nécessite une table ou une expression qui génère un tableau. Ici, au lieu d'utiliser toutes les données d'une table, vous devez utiliser la fonction FILTER pour spécifier les lignes de la table à utiliser.

    L'expression de filtre se compose de deux parties: la première partie nomme 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 les revendeurs qui ont vendu plus de 5 unités et des produits dont la rentabilité dépasse $100. L'opérateur &&, est un opérateur logique AND qui indique que les deux parties de la condition doivent avoir la valeur true pour que la ligne fasse partie du sous-ensemble filtré.

  • La troisième partie de la formule indique à la fonction SUMX quelles valeurs doivent être additionnées. Dans le cas présent, vous utilisez juste le montant des ventes.

    Notez que les fonctions telles que FILTER, qui renvoient 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 le filtrage et les autres fonctions utilisées pour le filtrage, notamment d'autres exemples, 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 cette mesure est utilisée dans un tableau croisé dynamique ou un graphique croisé dynamique, le sous-ensemble de données retourné peut être affecté par des filtres supplémentaires ou des segments appliqués par l’utilisateur dans le tableau croisé dynamique. Pour plus d’informations sur le contexte, voir Contexte dans les formules DAX.

Filtres qui suppriment des doublons

Outre le filtrage de valeurs spécifiques, vous pouvez renvoyer un jeu unique de valeurs à partir d'une autre table ou colonne. Cela peut être utile si vous voulez 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 renvoyer des valeurs distinctes: fonction fonctions et valeursdistinctes .

  • La fonction DISTINCT examine une colonne unique que vous spécifiez comme argument de la fonction et retourne une nouvelle colonne ne contenant que les valeurs distinctes.

  • La fonction valeurs renvoie également une liste de valeurs uniques, mais renvoie également le membre inconnu. Cette opération est utile quand vous utilisez des valeurs de deux tables qui sont jointes par une relation, et qu'une valeur manque dans une table et qu'elle est présente dans l'autre table. Pour plus d'informations sur le membre inconnu, consultez contexte dans les formules DAX.

Ces deux fonctions retournent une colonne entière de valeurs. Par conséquent, vous utilisez ces fonctions pour obtenir une liste de valeurs qui est ensuite passée à une autre fonction. Par exemple, vous pouvez utiliser la formule suivante pour obtenir une liste des différents produits vendus par un revendeur particulier, en utilisant la clé de produit unique, puis compter les produits de cette liste à l’aide de la fonction COUNTROWS :

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

Haut de la page

Incidence du contexte sur les filtres

Lorsque vous ajoutez une formule DAX à un tableau croisé dynamique ou un graphique croisé dynamique, les résultats de la formule peuvent être affectés par le contexte. Si vous utilisez une table Power Pivot, le contexte est la ligne actuelle et ses valeurs. Si vous travaillez dans un tableau croisé dynamique ou un graphique croisé dynamique, le contexte correspond au jeu ou au sous-ensemble de données défini par des opérations, telles que le découpage ou le filtrage. La conception du tableau croisé dynamique ou du 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 s'affichent dans le tableau croisé dynamique. Par conséquent, les mesures que vous ajoutez au tableau croisé dynamique sont calculées dans le contexte des en-têtes de colonne et de ligne, ainsi que des filtres dans la formule de mesure.

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

Haut de la page

Suppression de filtres

Lorsque vous utilisez des formules complexes, vous pouvez avoir besoin de connaître exactement les filtres actuels ou de modifier la partie filtre de la formule. DAX fournit plusieurs fonctions qui vous permettent de supprimer des filtres et de contrôler les colonnes à conserver dans le cadre du contexte de filtre actuel. Cette section propose 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 ALL

Vous pouvez utiliser la fonction ALL pour remplacer les filtres précédemment appliqués et renvoyer toutes les lignes de la table à la fonction qui exécute l'agrégat ou une autre opération. Si vous utilisez une ou plusieurs colonnes, au lieu d'une table, en tant qu'arguments de ALL, la fonction ALL renvoie toutes les lignes, en ignorant les filtres de contexte.

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

Par exemple, supposons que vous disposiez des tables Ventes et Produits, et que vous souhaitiez créer une formule qui calcule la somme des ventes réalisées pour le produit actuel, divisée par les ventes réalisées pour tous les produits. Vous devez tenir compte du fait que, si la formule est utilisée dans une mesure, l’utilisateur du tableau croisé dynamique peut utiliser un segment pour effectuer un filtrage en fonction d’un produit spécifique, avec le nom du produit sur les lignes. Par conséquent, pour obtenir la valeur réelle du dénominateur quels que soient les filtres ou segments appliqués, vous devez ajouter la fonction ALL pour remplacer tous les filtres. La formule suivante est un exemple d’utilisation de ALL pour remplacer les effets des filtres précédents :

= SOMME (ventes [montant])/SUMX (ventes [montant], filtre (ventes, tous (produits)))

  • La première partie de la formule, SUM (Sales[Amount]), calcule le numérateur.

  • La somme prend en considération le contexte actuel, ce qui signifie que si vous ajoutez la formule dans une colonne calculée, le contexte de ligne est appliqué, et que si vous ajoutez la formule dans un tableau croisé dynamique en tant que mesure, tous les filtres appliqués dans le tableau croisé dynamique (contexte de filtre) sont appliqués.

  • La deuxième partie de la formule calcule le dénominateur. La fonction ALL remplace tous les filtres qui peuvent être appliqués à la table Products .

Pour plus d'informations, y compris des exemples détaillés, voir fonction All.

Remplacement de filtres spécifiques par 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 comme arguments de la fonction ALLEXCEPT spécifient les colonnes qui continueront à être filtrées. Si vous voulez ignorer les filtres de la plupart des colonnes mais pas de toutes, ALLEXCEPT est plus pratique que tout. La fonction ALLEXCEPT est particulièrement utile lorsque vous créez des tableaux croisés dynamiques qui peuvent être filtrés sur plusieurs 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

Développez vos compétences dans Office
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×