L’objectif de cet article est d’expliquer comment créer dans Power BI, un segment ou un bouton permettant de changer dynamiquement la valeur à analyser dans un visuel.

Mise en situation :

Imaginez que vous souhaite créer un rapport Power BI permettant d’analyser votre CA, en valeur et en volume, en cumul mensuel (Month-to-Date – MTD) et annuel (Year-to-Date – YTD), selon différents axes d’analyse. Dans l’absolu, il serait nécessaire d’avoir chacun des visuels en 4 exemplaires :

  • Analyse du CA MTD
  • Analyse du CA YTD
  • Analyse des quantités vendues MTD
  • Analyse des quantités YTD

Dans ce cas de figure, la mise en place et la maintenance des rapports peut être fastidieux. L’idéal serait donc de n’avoir plus q’un seul visuel et l’utilisateur choisirait via un / des segment(s) la valeur qu’il souhaite analyser (CA ou Quantités vendues / MTD ou YTD).

La procédure en résumé

  1. Créer les différentes mesures.
  2. Créer une table manuelle regroupant les différents indicateurs / KPIs / valeurs à analyser.
  3. Créer une mesure DAX basée sur cette nouvelle table afin de réaliser le switch entre les mesures.

Création des mesures DAX

Dans cette étape il s’agit de créer toutes les mesure à analyser en DAX. Par exemple :

CA_MTD = CALCULATE ( [Total_Sales]; DATESMTD ( PBI_Calendar[Date] ) )

CA_YTD = CALCULATE ( [Total_Sales]; DATESYTD ( PBI_Calendar[Date] ) )

Note pour moi-même : Penser à créer un article afin d’expliquer les fonctions  de Time Intelligence

Création d’une table indépendante

Cette table peut être importée depuis un fichier à plat (.xlsx / .csv / .txt / …) ou saisie directement dans Power BI. Dans tous les cas, cette table est indépendante des autres tables du modèle de donnée et, à ce titre, sans liaisons. Cette table recense une codification des valeurs à analyser ainsi que toutes les combinaisons possibles. Par exemple, nous créons une table nommée “PBI_Nom_KPIs”

  • En souhaitant pouvoir switcher entre un cumul MTD et YTD, cette table contient avec 2 lignes : “MTD” et “YTD”.
  • En souhaitant pouvoir switcher entre l’analyse du CA et des quantités vendues, cette table contient avec 2 lignes : “CA” et “quantités vendues”.
  • En souhaitant switcher entre l’analyse du CA MTD et YTD et des quantités vendues MTD et YTD, il faut créer toutes les combinaisons possibles sur 2 colonnes :

NB : chaque ligne de la table est codifiée par un code unique.

Création de la mesure DAX pour switcher entre les mesures

L’objectif est donc d’utiliser les valeurs de cette nouvelle table comme segment afin de permettre à l’utilisateur de choisir ce qu’il souhaite analyser (CA ou quantités vendues, en MTD ou YTD) au sein d’un même visuel. La valeur à analyser doit donc varier dynamiquement en fonction du segment. Nous utilisons donc une formule DAX:  la fonction “SWITCH”. En fonction de la valeur du segment (par exemple MTD / YTD), il faut prendre la mesure DAX correspondante, créer dans l’étape 1 (par exemple CA_MTD / CA_YTD) :

KPIs_MTD/YTD = SWITCH ( SELECTEDVALUE ( PBI_Nom_KPIs[Code_KPIs] ); 1; [CA_MTD]; 2; [CA_YTD]; 0 )

En d’autres termes, si le code KPIs est 1, afficher la mesure CA_MTD, si le code KPIs est 2, afficher la mesure CA_YTD, dans les autres cas, afficher 0.

NB : Par nature, la fonction SWITCH est malheureusement peu performante, compte tenu de la multiplicité des requêtes qu’elle doit effectuer et donc du nombre de conditions a tester.

Utilisation

Dans le rapport Power BI, il ne reste plus qu’à rajouter un segment avec les valeurs contenues dans la table indépendante, et rajouter dans les visuels la mesure DAX utilisant la fonction SWICTH. Le segment permet de modifier dynamiquement la valeur à analyser dans lesdits visuels.

Le tout en vidéo :