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 la mesure pour ne pas se noyer entre toutes les solutions de filtrage qui permettent parfois d’arriver au même résultat.
Prenons l’exemple simple de la table Ventes.xlsx dont la colonne nommée Quantité doit être filtrée suivant la valeur particulière « A » de la colonne nommée Produit comptant 3 catégories distinctes A, B, et C pour obtenir la somme des quantités pour le seul Produit A.
Solution 1
Il y aura toujours une possibilité de filtrer les données en amont au niveau de Power Query.
Cette solution est par ailleurs fortement recommandée par Microsoft lorsqu’il s’agit de réduire le jeu de données aux seules valeurs nécessaires au reporting. Les tables injectées dans Power BI seront plus légères, les mesures plus rapides et les visuels s’actualiseront plus vite.
Dans notre exemple nous pourrions donc « remonter » dans Query en appuyant sur le bouton Transformer les données de l’onglet Accueil, Dupliquer la table Ventes par un clic droit, Renommer la nouvelle table Ventes Cat A par double clic sur son nom, puis filtrer sa colonne Produit sur la seule catégorie A. La fermeture de Query injectera la nouvelle table dans la barre latérale Données de Power BI et il suffira alors d’utiliser sa colonne Quantité déjà résumée en Somme pour afficher la quantité totale du seul produit de catégorie A à partir d’un visuel carte par exemple.
Solution 2
Le visuel Table de données : filtrer par l’intermédiaire du visuel Table du volet vertical de droite Visualisations en glissant les colonnes Produit et Quantité de la table Ventes 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 Produit dans la zone Lignes et le champ Quantité dans la zone Valeurs. Un simple TCD agit donc comme un filtre.

Solution 3
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 Produit 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 le Produit 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 de toutes les pages de rapport.

Solution 4
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 Produits et les Quantités puis un autre visuel contenant uniquement les Produits pour filtrer le premier sur le seul Produit 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 5
Les mesures DAX : la richesse du langage DAX est telle, particulièrement pour filtrer les données, que plusieurs formules différentes permettent d’arriver au même résultat que précédemment (clic droit sur la Table dans l’onglet Données puis Nouvelle mesure) :
1. 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 :
FILTRE_1 = CALCULATE( SUM(Ventes[Quantité]) , Ventes[Produit] = « A » )
2. 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 :
FILTRE_2 = SUMX( FILTER( Ventes , Ventes[Catégorie] = « A » ) , Ventes[Quantité] )
3. 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 :
FILTRE_3 = SUMX( CALCULATETABLE( Ventes , Ventes[Catégorie] = « A » ) , Ventes[Quantité] )
4. 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 » :
FILTRE_4 = CALCULATE( SUM( Ventes[Quantité] ) , FILTER( Ventes , Ventes[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.
5. Avec la fonction IF : Cette mesure permet de créer une boucle conditionnelle classique. Elle sera insérer en tant que nouvelle colonne de la table Ventes dans l’Affichage table puis onglet Outils de table et bouton Nouvelle colonne. Elle permettra de ne compter que la quantité des lignes pour lesquelles le produit est de la catégorie A. Cette colonne sera résumée automatiquement en Somme et pourra directement être insérée dans un simple visuel carte.
FILTRE_5 = IF( Ventes[Catégorie] = « A » , Ventes[Quantité] , 0 )
Voir Toutes les fonctions DAX de filtrage.
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.
Si vous ne l’avez pas déjà fait, vous pouvez copier le code DAX de ce calendrier universel à partir de la page power-bi.fr/calendrier à coller après avoir créer une Nouvelle table à partir de l’onglet Outils de table. Cette table de dates universelle à relier à toutes vos tables contenant des colonnes de dates à analyser pourra vous servir pour tous vos projets.
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, PREVIOUSQUARTER, PREVIOUSYEAR 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.
Voir Toutes les fonctions DAX d’intelligence temporelle.
C’est à vous !
Allez à la page Filtrer du rapport Essentiel_Power_BI.pbix.