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

Publié le 19 octobre 2015
par Sophie Marchand M.Sc., CPA, CGA, MVP
FILTER

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

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 FILTER et DISTINCT en langage DAX (Data Analysis Expression), soit le langage utilisé par Power Pivot et par Power BI Desktop.

 

Définition des fonctions 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.

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 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 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 FILTER.

Countrows and Distinct

 

Ainsi, on constate qu’autant la fonction DISTINCT que la fonction VALUES, permet 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 DISTINCT and VALUES

Marco Russo explique la différence subtile qui existe entre la fonction DISTINCT et la fonction 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 :

Edith Lemay
Écrit il y a 3 semaines
Explications claires et bien structurées.

Super intéressant! Les exercices pratiques aide beaucoup à assimiler la matière.

Nicolas Grandclaude
Écrit il y a 2 mois
Je recommande vivement cette formation.

Une formation indispensable pour la mise en place d'un modèle de données automatique et performant.

David Bansard
Écrit il y a 2 mois
De nombreuses portes se sont ouvertes

Etant, moi-même, dans le métier de la formation, j'avais besoin d'un apprentissage beaucoup plus pertinent et professionnel que se débrouiller tout seul chez soi. De nombreuses portes se sont ouvertes sur la manière de comprendre l'outil Power BI et donc de correctement l'utiliser.

Remi Martinato
Écrit il y a 3 mois
Superbe formation même si le langage Dax est très complexe à comprendre.

Cette formation clôture mon parcours « Excel tableaux de bord » qui a été pour moi extrêmement enrichissant. Cela m a permis de découvrir des fonctions d Excel, de prendre plaisir à les utiliser et de développer ma créativité afin de produire des tableaux de bord encore plus percutants. La formatrice maîtrise sur le bout des ongles les différents outils.

CFO-Masque_Formations-en-ligne_FB Le CFO masqué offre un vaste choix de formations en informatique décisionnelle avec Excel et Power BI, via un portail en ligne et à distance en temps réel, selon un calendrier. Si vous désirez organiser des formations privées, faites nous simplement parvenir un courriel à info@lecfomasque.com . Des certificats convenant aux normes de formation continue des divers ordres professionnels du Québec sont offerts pour l'ensemble des formations.  

Découvrez quelles formations vous conviennent

 

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 *

Scroll to Top