Filtrer les Données et les Tables
Filtrer les données et les tables dans Power BI est un concept fondamental grâce auquel l'utilisateur pourra remplir tous ses objectifs d'analyses et de visualisation fluide et efficace de ses données regroupées ou pas, par catégories, par dates, par périodes ou encore par types.
Ne pas savoir filtrer dans Power BI est un handicap majeur à la livraison d'un rapport ou d'un tableau de bord dont l'objectif principal et de faire prendre rapidement les bonnes décisions aux personnes en charge du pilotage de l'activité analysée.
Les possibilités de filtres dans Power BI sont multiples et variées, peut-être même trop nombreuses, mais il faut vraiment en prendre toute la mesure pour ne pas se noyer entre toutes les solutions de filtrage qui permettent parfois d'arriver au même résultat.
Prenons un exemple simple d'une table à 2 colonnes nommée "Table" dont la colonne nommée "Quantité" doit être filtrée suivant la valeur particulière "Catégorie A" de la colonne "Catégorie" comptant 3 catégories distinctes A, B, et C pour obtenir la somme des quantités pour la seule Catégorie A.
Solution 1, le visuel Table de données : filtrer par l'intermédiaire du visuel "Table" du volet vertical de droite "Visualisations" en glissant les colonnes "Catégorie" et "Quantité" dans le champ nommé "Colonnes" du visuel. Cela fera apparaitre en première colonne les 3 catégories A, B et C sur 3 lignes distinctes et en deuxième colonne la somme automatique des quantités pour chacune des catégories, dont celle de la catégorie A, exactement comme avec un Tableau Croisé Dynamique dans Excel où l'on glisserait le champ "Catégorie" dans la zone Lignes et le champ "Quantité" dans la zone Valeurs. Un simple TCD agit donc aussi comme un filtre.
Solution 2, le volet vertical Filtres : filtrer par l'intermédiaire du visuel "Carte" ou "Carte à plusieurs lignes" en glissant la seule colonne "Quantité" dans le champ nommé également "Champs" du visuel. La somme totale des quantités apparaît instantanément. Il suffit alors de faire glisser la colonne "Catégorie" dans le volet vertical de droite "Filtres", dans la zone "Ajouter des champs de données" de la partie "Filtres sur ce visuel", puis de sélectionner la Catégorie A par un clic pour que la valeur du visuel Carte affiche le même total que dans la solution 1. La même action dans les autres parties "Filtres dans cette page" ou "Filtres dans toutes les pages" du même ruban vertical Filtres provoquerait le même filtrage sur tous les visuels de la page ou sur tous les visuels des toutes les pages de rapport.
Solution 3, les filtres croisés : chaque visuel d'une page de rapport agit par défaut comme filtre des autres visuels de la page. C'est la grande force de Power BI par rapport à Excel qui oblige à créer des segments spécifiques pour trier les tableaux et les graphiques croisés dynamiques. Dans Power BI on peut donc concevoir les visuels d'une même page pour qu'ils puissent se filtrer les uns les autres sans utiliser le volet Filtres ni de mesures complémentaires. Dans notre exemple, il suffira donc de créer un visuel quelconque croisant les Catégories et les Quantités puis un autre visuel contenant uniquement les Catégories pour filtrer le premier sur la seule Catégorie A. Les interactions entre chaque visuel d'une page peuvent être modifiées une à une grâce au premier bouton "Modifier les interactions" du ruban horizontal du menu Format .
Solution 4, les mesures DAX : la richesse du langage DAX est telle, et particulièrement pour filtrer les données, que plusieurs formules différentes permettent d'arriver au même résultat que précédemment :
Avec la fonction CALCULATE : certainement la plus souple et la plus utilisée dans Power Pivot ou Power BI, qui appelle une expression calculée en premier argument et des filtres dans les suivants. L'équivalent des fonctions .SI.ENS ou SOMMEPROD dans Excel :
= CALCULATE ( SUM(Quantité) , Catégorie = "Catégorie A" )
Avec les fonctions SUMX et FILTER : SUMX est une fonction itérative qui permet de faire une somme "à la volée" sur une table entière, dont le premier argument est une table et le second une expression incluant un calcul sur colonne(s). La fonction FILTER en premier argument permet alors de retourner une table filtrée à SUMX, FILTER étant une fonction de table dont le premier argument est la table à filtrer et le second l'expression du filtre :
= SUMX ( FILTER( Table , Catégorie = "Catégorie A" ) , Quantité )
Avec les fonctions SUMX et CALCULATETABLE : Cette mesure utilise la fonction de table CALCULATETABLE pour créer une table temporaire filtrée sur la valeur "Catégorie A". Ensuite, avec SUMX, elle itère sur chaque ligne de cette table temporaire et additionne les quantités lorsque la catégorie est "A" :
= SUMX ( CALCULATETABLE( Table , Catégorie = "Catégorie A" ) , Quantité )
Avec les fonctions CALCULATE et FILTER : Cette mesure utilise la fonction CALCULATE pour faire une somme de la colonne Quantité, et la fonction FILTER pour réduire cette somme à la seule catégorie "A" :
= CALCULATE ( SUM(Quantité) , FILTER( Table , Catégorie = "Catégorie A") )
Et on pourrait continuer comme cela presque sans fin tant les possibilités sont grandes avec le langage DAX inclus dans Power BI et dans Power Pivot pour Excel.
DAX comprend également des fonctions d’intelligence temporelle qui vous permettent de manipuler des données en utilisant des périodes de temps (jours, mois, trimestres et années, entre autres), puis de générer et comparer des calculs sur ces périodes. Il s'agit donc aussi de fonctions de filtrage, mais sur le temps uniquement.
Remarque importante : avant d’utiliser ces fonctions Time Intelligence, assurez-vous de marquer l’une des tables contenant la colonne de date comme Table de dates principale. Il est d'ailleurs fortement recommandé d'associer à tous vos jeux de données une table de dates principale allant jour après jour de la date la plus ancienne du jeu de données à la date la plus récente, ceci automatiquement avec la fonction CALENDARAUTO.
Les fonctions DAX d'intelligence temporelle les plus utilisées sont :
TOTALMTD, TOTALQTD, TOTALYTD qui évaluent la valeur de l’expression pour le mois, le trimestre ou l'année jusqu’à ce jour, donc en cours, dans le contexte de filtre actuel.
PREVIOUSMONTH, PREVIOUSMONTH, PREVIOUSMONTH qui retourne une table qui contient une colonne de toutes les dates du mois, du trimestre ou de l'année précédent(e), selon la première date de la colonne dates, dans le contexte actuel. Pratique pour calculer des variations d'une période à l'autre.
SAMEPERIODLASTYEAR qui retourne une table qui contient une colonne de dates déplacées d’une année en remontant dans le temps à partir des dates de la colonne dates spécifiée dans le contexte actuel.