Power BI: Filtres avancés et encore ce fameux contexte d’évaluation!

Publié le 25 mars 2019
par Sophie Marchand M.Sc.
Mesure DAX

Aujourd’hui, nous avons à nouveau reçu une question sur le forum qui concerne Power BI et dont la réponse repose sur une compréhension en profondeur des modèles de données, du langage DAX et des contextes d’évaluation. L’usager demande comment utiliser les valeurs de deux segments (basés sur la même dimension) comme paramètres dans une mesure en DAX. Cet article vise à présenter cette question portant sur les filtres avancés dans Power BI et la réponse détaillée.

 

Question Power BI du forum concernant les filtres avancés dans Power BI

Nous avons reçu aujourd’hui, la question suivante sur le forum.

Question forum filtres avancés dans Power BI

 

Données de départ

Pour répondre à cette question, j’ai créé la table de données suivante ainsi que deux tables qui comprennent la liste des catégories, soit A, B, C.

Table de départ

 

Modèle de données

J’ai par la suite simplement créé le modèle de données suivant (le détail des mesures sera vu plus loin).

Modèle données

 

Visualisation de données avec filtres avancés dans Power BI

Dans mon rapport, l’usager peut donc sélectionner une valeur dans le segment 1 (dans ce cas-ci B) et une autre valeur dans le segment 2 (dans ce cas-ci C). On voit ensuite la moyenne des prix de la catégorie B et la moyenne des prix de la catégorie C. Ces deux premières mesures sont très simples. Elle font simplement la moyenne des prix. Dans la première visualisation, on enlève l’interaction du deuxième filtre (donc la mesure est seulement filtrée pour la catégorie B) et dans la deuxième visualisation on enlève l’interaction du premier filtre (donc la visualisation est seulement filtrée pour la catégorie C). Ces visualisations ne servent qu’à vous montrer que la différence calculée, dans la troisième visualisation représente bel et bien le résultat recherché. Dans d’autres contextes, on procèderait ici plus rigoureusement.

Résultat 1 Power BI

 

Vous pouvez apercevoir ci-dessous un deuxième exemple (nouvelles sélections dans les segments) et à nouveau, vous pouvez constater que la mesure représente bien la différence entre la moyenne selon le segment 1 et la moyenne selon le segment 2.

Résultat 2 Power BI

 

Vous devez analyser de grandes quantités de données et les présenter dans des rapports et tableaux de bord, avec des indicateurs de performance pertinents ? Développez vos compétences avec nos formations en Power BI.

Formations Power BI disponibles en anglais

 

Création de mesure en situation d’un contexte d’évaluation ardu!

Le problème avec la mesure demandée par l’usager, c’est d’abord qu’on veut deux filtres à partir de la même dimension et que sans intervention en DAX, ces filtres vont se filtrer entre eux. Il faut donc être très vigilant! Il y aurait plusieurs façons de résoudre ici cette problématique. Je propose la suivante, qui est à mon sens, la plus simple à comprendre.

Ci-dessous donc, je fais la différence entre deux mesures CALCULATE.

Chacune des mesures CALCULATE fait la moyenne des prix.

Mais pour ce faire, elles ignorent TOUS LES FILTRES POSÉS SUR LA TABLE 1 (que ces filtres proviennent du segment 1 ou du segment 2), puis elles filtrent ensuite la table pour ne retenir que la valeur du segment 1 dans le cas du premier CALCULATE et que la valeur du segment 2 dans le deuxième CALCULATE.

Mesure Power BI

 

S’approprier la notion de contexte d’évaluation

Ce genre de visualisation est très ardu à mettre en place, surtout pour un usager qui vient de l’univers d’Excel, sans une bonne maîtrise du langage DAX et des contextes d’évaluation. À ce sujet, je vous recommande fortement ma formation d’introduction sur le langage DAX. Mais attention! Vous ne deviendrez pas des maîtres du langage DAX instantanément. Ce n’est qu’après avoir été exposé à de nombreuses problématiques en DAX, que vous saurez tirer votre épingle du jeu. La formation vous fournira néanmoins les bases. Elle vous expliquera pourquoi les mesures se comportent comme elles se comportent et elle vous permettra de vous poser les bonnes questions et espérons-le d’y trouver ensuite les bonnes réponses.

 

Voici quelques commentaires d’apprenants ayant suivi la formation d’introduction au langage DAX :

Le-CFO-masque_Commentaires-Introduction-langage-DAX

 

Fichier d’accompagnement VIP à télécharger

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


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

12 réflexions sur “Power BI: Filtres avancés et encore ce fameux contexte d’évaluation!”

  1. Merci pour ce tuto !
    Une question: si l’on veut pouvoir filtrer non une seule valeur comme avec SELECTEDVALUE mais plusieurs quelle serait la fonction ?

    1. Bonjour,

      Votre question n’est pas assez précise pour pouvoir y répondre précisément.

      Dans tous les cas, en DAX, vous avez la fonction IF, qui est l’équivalent de la fonction SI d’Excel et vous avez la fonction SWITCH pour effectuer des SI imbriqués.

      Vous pouvez trouver un exemple de la fonction SWITCH ici https://www.lecfomasque.com/power-bi-presenter-un-etat-des-resultats/.

      Sinon, pour une “colonne” conditionnelle, dépendamment du contexte, vous pouvez utiliser Power Query. Il y a déjà une fonctionnalité pour ajouter des colonnes conditionnelles dans le menu “Ajouter une colonne”.

      Au plaisir,

      Sophie

  2. Bonjour Sophie,
    Votre article est d’une grande aide, merci.

    J’ai cependant une question sur le même principe, mais avec un segment qui me permet des sélectionner 1 seule catégorie parmi 50, et un autre qui me permet de sélectionner plusieurs catégories (une plage donc) parmi les 50. Le but étant pour moi, d’afficher le prix d’une catégorie, et l’autre d’afficher le prix moyen d’une plage sélectionnée.
    Y a t’il donc un moyen d’étendre votre formule à une sélection multiple?

    Merci pour votre aide.
    Arthur

      1. Bonjour,
        merci pour ce retour 🙂

        J’avais bien essayé hier cette méthode, cependant si j’écris ma mesure comme ci :
        Mesure 2 = CALCULATE(AVERAGE(‘Table'[Prix]),ALLSELECTED(Table_2[Categorie]))
        lorsque je vais sélectionner A dans le segment 1 et BC dans le segment 2, la mesure 2 va renvoyer une erreur car il semblerait qu’elle tienne compte du filtrage fait par le segment 1…
        Je ne sais pas si je suis clair, mais il faudrait que je puisse avoir une sélection multiple en 1 et en 2 qui soient décorrélées l’une de l’autre. C’est réalisable de demander ça aux mesures PowerBi?

        Merci encore pour votre aide.

        Arthur

        1. Sophie Marchand, M.Sc. CPA, CGA

          Bonjour,

          Est-ce que votre modèle de données comprend 2 tables de segments liées à la table de faits, tel qu’illustré dans l’article?

          Et le cas échéant, pour créer vos visuels de segments, est-ce que vous vous assurez d’utiliser les informations des deux différentes tables?

          Sophie

          1. J’ai repris entièrement votre exemple, et j’ai modifié les mesures selon la formule suivante Mesure 2 = CALCULATE(AVERAGE(‘Table'[Prix]),ALLSELECTED(Table_2[Categorie])).
            Il semble qu’ainsi, la mesure 2 est liée à la mesure 1 à partir de Table_1[Categorie]… L’objectif étant pour moi d’obtenir avec la mesure 1, un AVETRAGE de A ou B ou C, et en parallèle d’obtenir avec la mesure 2, un AVERAGE A, ou AB, ou AC, ou ABC, ou B, ou BA, …
            Pouvez vous m’aider à revoir ma formule svp?

            Merci 🙂

  3. Bonjour , j’ai fait comme l’exemple mais avec les tables ventes et clients mais le résultat est une table vide
    voici la formule DAX : Table = FILTER(ALL(Ventes), Ventes[CT_Num]= SELECTEDVALUE(CLIENTS[Identifiant client]))

    1. Audrée Pellerin

      Bonjour,

      Quelques pistes de solution :
      – Est-ce qu’il y a bien un identifiant client de sélectionné?
      – Vous semblez créer une table plutôt qu’une mesure. Pour créer une table, utilisez la fonction RELATED(CLIENTS[Identifiant client]) plutôt que SELECTEDVALUE(CLIENTS[Identifiant client])

      Audrée

Laisser un commentaire

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

Retour en haut