Power Pivot : Leçon de DAX no.4 (FILTER/DISTINCT)

Publié le 19 octobre 2015
par Sophie Marchand M.Sc.
FILTER

Cet article fait suite aux articles Power Pivot : Leçon de DAX no.1 (fonctions X)Power Pivot : Leçon de DAX no.2 (RELATED)  et Power Pivot : Leçon de DAX no.3 (COUNTROWS). Il vise à démontrer comment utiliser les fonctions DAX FILTER et DISTINCT, soit le langage utilisé par Power Pivot et par Power BI Desktop, qui signifie Data Analysis Expression.

 

Définition des fonctions DAX

Fonction DAX Filter (Table, Condition)

Retourne les résultats de la table en question lorsque la condition est VRAIE.
Retourne toutes les colonnes de la table, avec les lignes qui répondent à la condition.

Par exemple: FILTER(InternetSales, RELATED(SalesTerritory[SalesTerritoryCountry])<>USA) retourne les ventes pour les territoires autres que les États-Unis.

Fonction DAX Distinct(Column)

Retourne une table comprenant les données “uniques” dans la colonne spécifiée (sans doublons).

Par exemple: =DISTINCT(FactSales[StoreKey]) retourne une table avec tous les ID uniques de magasins.

Ces fonctions retournent une table et doivent donc être utilisées de façon imbriquée dans des fonctions d’aggrégation.

 

Exemple de la fonction DAX Filter: Somme des ventes en ligne

Dans l’exemple ci-bas, la fonction FILTER est utilisée comme filtre sur la colonne # canal de la table de ventes. Ainsi, la fonction retourne une table avec toutes les colonnes de la table de ventes, mais avec seulement les lignes qui comprennent le numéro de canal 1. Ensuite, on effectue une somme sur la colonne Ventes de la table résultante. On obtient donc les ventes du canal 1, soit les ventes en ligne.

FILTER

 

Exemple de la fonction DAX Distinct: Nombre de canaux

Dans l’article, Power Pivot: Leçon de DAX no.3 (COUNTROWS), nous avons présenté l’exemple suivant, qui utilise la fonction COUNTROWS, combinée à la fonction VALUES pour déterminer le nombre de canaux.

COUNTROWS DAX

 

Il serait possible d’obtenir la même mesure en utilisant la fonction DAX DISTINCT.

Countrows and Distinct

 

Ainsi, on constate qu’autant la fonction DISTINCT que la fonction VALUES, permettent de retourner les valeurs distinctes d’une colonne. Ceci est vrai, à une exception près, qui est expliqué au prochain point.

 

Vous avez des sources de données volumineuses à rassembler et analyser dans Excel ? Apprenez à automatiser tout le processus d’importation, de transformation et de modélisation  des données avec nos formations sur Power Query et Power Pivot dans Excel.

 

Différence entre la fonction DAX DISTINCT et VALUES

Marco Russo explique la différence subtile qui existe entre la fonction DAX DISTINCT et la fonction DAX VALUES dans son article Difference between DISTINCT and VALUES in DAX. En résumé, on constate, sur l’image suivante, que la fonction DISTINCT ramène le nombre de valeurs distinctes pour chacune des dimensions d’une table alors que la fonction VALUES retourne les valeurs distinctes pour chacune des dimensions de cette table et ajoute le nombre de valeurs distinctes qui ne sont pas associées à une dimension. Ce serait la seule différence qui existe entre ces deux fonctions.

Marco Russo

 

 

Power Pivot: Leçons de DAX: Suite

Power Pivot: Leçon de DAX no.5 (CALCULATE)

Power Pivot: Leçon de DAX no.6 (ALL)

Power Pivot: Leçon de DAX no.7 (ALLEXCEPT)

Power Pivot: Leçon de DAX no.8 (ALLSELECTED)


 

Fichier d’accompagnement VIP à télécharger

Pour télécharger le fichier utilisé dans ce tutoriel, devenez membre VIP du CFO masqué.

Apprendre le langage DAX vous intéresse?

Pour une introduction à ce langage qui permet de créer des tableaux de bord flexibles et faciles à mettre à jour en plus de créer des visualisations de données évoluées et pertinentes, suivez la formation Introduction au langage DAX (Power BI et Power Pivot).

Voici quelques commentaires d’apprenants ayant suivi cette formation :

Introduction au langage DAX (Power BI et Power Pivot)
CFO-Masque_Formations-en-ligne_FBLa mission du CFO masqué est de développer les compétences techniques des analystes et des contrôleurs de gestion en informatique décisionnelle avec Excel et Power BI et favoriser l’atteinte de leur plein potentiel, en stimulant leur autonomie, leur curiosité, leur raisonnement logique, leur esprit critique et leur créativité.

5 réflexions sur “Power Pivot : Leçon de DAX no.4 (FILTER/DISTINCT)”

  1. Bonjour Sophie,

    J’essaye de créer un modèle de données dont la table centrale est une table de transactions de stocks. Cette table comporte quatres types de transactions.
    – les consommations pour la fabrication de produits semis finis
    – les entrées en stock des produits semi finis
    – les consommations pour la fabrication de produits finis (dont la consommation des produits demi finis)
    – les entrées en stock des produits finis.
    Je cherche à calculer un rendement en comparant les entrées en stock de produits finis avec celles des produits semis finis.
    Pour ce faire je suis donc obligé d’appliquer des filtres sur 4 colonnes pour identifier chaque type de transaction, sachant que pour les entrées en stock de produits finis je dois faire la somme de plusieurs ayant consommés un seul type de semis finis.

    A votre avis, dois-je utiliser des fonctions filter imbriquées ou dois-je diviser cette table en 4 distinctes? Ce qui n’est à priori pas facile car j’ai besoin d’une autre table pour identifier les transactions concernant les type de produits finis ou semi finis

    En espérant avoir été clair dans mon explication, je vous remercie par avance.

    Bien cordialement

    Ludovic

  2. En relisant vos billets il me semble qu’il faut tout simplement utiliser les fonctions calculate et relatés table.

    Est-ce bien cela?

    Merci d’avance

  3. Francis Paquet, M.Sc., ing., EEE

    Ludovic,

    Je ne suis pas sûr de comprendre. Mais si une seule table contient déjà les 4 colonnes dont vous avez besoin, il serait aberrant de scinder le tout en 4 tables!

    Selon moi, ce dont vous avez besoin, c’est d’une mesure du genre
    Rendement:=SUM(Produits Finis)/SUM(Produits Semi Finis)
    Une telle mesure est ajoutée au bas d’une table PowerPivot. Cette mesure sera filtrée en fonction des dimensions que vous utiliserez afin de créer le tableau croisé dynamique.

    Si des filtres doivent s’appliquer, le calcul serait alors plutôt
    Rendement:=CALCULATE(SUM(Produitd Finis);FILTERS)/CALCULATE(SUM(Produits Semi Finis);FILTERS)

    Comme je n’ai pas accès à vos données ni à ce que vous voulez faire exactement, il m’est difficile d,aller plus loin dans mes explications.

    Francis

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut