Filtrer un rapport à l’aide de paramètres de chaîne de requête dans l’URL
Lorsque vous ouvrez un rapport dans le service Power BI, chaque page du rapport possède sa propre URL unique. Pour filtrer cette page de rapport, vous pouvez utiliser le volet Filtres sur le canevas de rapport. Vous pouvez aussi ajouter des paramètres de chaîne de requête à l’URL pour préfiltrer le rapport. Imaginons que vous avez un rapport que vous envisagez de présenter à des collègues après l’avoir filtré pour eux au préalable. Une façon de le filtrer est de commencer par l'URL par défaut du rapport, d'ajouter les paramètres du filtre à l'URL, puis de leur envoyer par e-mail la nouvelle URL complète.
Cet article utilise le rapport Retail Analysis Sample. Pour suivre cette procédure pas à pas, vous pouvez télécharger l’exemple de rapport.
Utilisations des paramètres de chaîne de requête
Supposons que vous travaillez dans Power BI Desktop. Vous voulez créer un rapport comportant des liens vers d’autres rapports Power BI, mais vous ne souhaitez montrer que certaines informations dans les autres rapports. Filtrez d’abord les rapports en utilisant des paramètres de chaîne de requête et enregistrez les URL. Ensuite, créez une table dans Desktop avec ces nouvelles URL de rapport. Enfin, publiez et partagez le rapport.
Une autre utilisation des paramètres de chaîne de requête concerne la création d’une solution Power BI avancée. Dans DAX, ils créent un rapport qui génère une URL de rapport filtré dynamiquement en fonction de la sélection effectuée par leur client dans le rapport actuel. Quand des clients sélectionnent l’URL, ils voient seulement les informations prévues.
Syntaxe du paramètre de chaîne de requête pour le filtrage
Avec des paramètres, vous pouvez filtrer le rapport pour une ou plusieurs valeurs, même si ces valeurs contiennent des espaces ou des caractères spéciaux. La syntaxe de base est assez simple ; commencez par l’URL du rapport, puis ajoutez votre syntaxe de filtre dans une chaîne de requête. Une chaîne de requête dans une URL commence par un point d’interrogation ( ?), par exemple :
URL?filter=Tableau/Champ eq 'valeur'
- Les noms de Table et de Champ sont sensibles à la casse, mais pas la valeur.
- Les champs masqués dans l’affichage Rapport peuvent également être filtrés.
Si le paramètre de filtre n’est pas le premier paramètre de la chaîne de requête, il est joint au paramètre précédent avec un ampersand (&), par exemple :
URL ?reportId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx&pageName=ReportSection&filter=Table/Field eq 'value'
Types de champ
Le type du champ peut être un nombre, une date/heure ou une chaîne, et le type utilisé doit correspondre au type défini dans le modèle sémantique. Par exemple, la spécification d’une colonne de table de type « chaîne » ne fonctionne pas si vous recherchez une valeur numérique ou de date/heure dans une colonne du modèle sémantique définie en tant que date, telle que Table/StringColumn eq 1.
- Les chaînes doivent être placées entre des guillemets simples, comme dans 'nom responsable'.
- Les nombres ne nécessitent par de mise en forme spéciale. Voir la section Types de données numériques de cet article pour plus d’informations.
- Dates et heures Voir la section Types de données date dans cet article.
Si cela ne vous semble pas clair, poursuivez votre lecture. Nous allons décomposer la syntaxe.
Filtrer sur un champ
Supposons que l’URL du rapport soit la suivante.
Nous pouvons constater dans la visualisation de la carte précédente que nous avons des magasins en Caroline du Nord (North Carolina). NC est la valeur pour North Carolina (Caroline du Nord) qui est située dans le champ Territoire du tableau Magasin. Ainsi, pour filtrer le rapport afin d’afficher uniquement les magasins situés en Caroline du Nord (« NC »), ajoutez cette chaîne à l’URL :
?filter=Store/Territory eq 'NC'
Notre rapport étant désormais filtré sur la Caroline du Nord, les visualisations du rapport présentent uniquement les données relatives à la Caroline du Nord.
Filtrer sur plusieurs valeurs d’un champ
Pour filtrer sur plusieurs valeurs dans un champ unique, on utilise l’opérateur in au lieu de l’opérateur and. La syntaxe est :
URL ?filter=Champ de table/dans ('value1', 'value2')
Reprenons le même exemple : pour filtrer le rapport afin d’afficher uniquement les données des magasins situés en « NC » (Caroline du Nord) ou au « TN » (Tennessee), ajoutez ceci à l’URL :
?filter=Store/Territory in ('NC', 'TN')
Pour obtenir une liste d’autres opérateurs utiles, consultez le tableau Opérateurs plus loin dans cet article.
Filtrer sur plusieurs champs
Vous pouvez également filtrer sur plusieurs champs en ajoutant plus de paramètres à votre URL. Revenons à notre paramètre de filtre d’origine.
?filter=Store/Territory eq 'NC'
Pour filtrer sur plus de champs, ajoutez « and » et un autre champ au même format que ci-dessus. Voici un exemple.
?filter=Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'
Opérateurs
Power BI prend en charge de nombreux opérateurs en plus de 'and'. Le tableau suivant liste ces opérateurs, ainsi que le type de contenu qu’ils prennent en charge.
Opérateur | Définition | String | Number | Date | Exemple |
---|---|---|---|---|---|
and | et | Oui | oui | oui | product/price le 200 and price gt 3,5 |
eq | est égal à | Oui | oui | oui | Address/City eq 'Redmond' |
ne | différent de | Oui | oui | oui | Address/City ne 'London' |
ge | supérieur ou égal à | non | oui | oui | product/price ge 10 |
gt | supérieur à | non | oui | oui | product/price gt 20 |
le | inférieur ou égal à | non | oui | oui | product/price le 100 |
lt | inférieur à | non | oui | oui | product/price lt 20 |
in* | incluant | Oui | oui | oui | Student/Age in (27, 29) |
* Quand vous utilisez in, les valeurs à droite de in peuvent être une liste séparée par des virgules et entourée de parenthèses, ou une expression qui retourne une collection. Pour obtenir des exemples, consultez l’article sur l’opérateur IN.
Types de données numériques
Un filtre d’URL Power BI peut inclure des nombres dans les formats suivants.
Type de nombre | Exemple |
---|---|
integer | 5 |
long | 5 L ou 5 l |
double | 5,5 ou 55e-1 ou 0,55e+1 ou 5D ou 5d ou 0,5e1D ou 0,5e1d ou 5,5D ou 5,5d ou 55e-1D ou 55e-1d |
decimal | 5 M ou 5 m ou 5.5 M ou 5.5 m |
float | 5 F ou 5 f ou 0.5e1 F ou 0.5e-1 d |
Types de données date
Power BI prend en charge OData V3 et V4 pour les types de données Date et DateTimeOffset. Pour OData V3, vous devez placer des dates entre guillemets uniques et les faire précéder du mot datetime. Vous n’avez pas besoin de guillemets simples et du mot datetime dans OData V4.
Les dates sont représentées selon le format de modèle EDM (2019-02-12T00:00:00) : Quand vous spécifiez une date en 'AAAA-MM-JJ', Power BI l’interprète en 'AAAA-MM-JJT00:00:00'. Assurez-vous que le mois et le jour comportent deux chiffres, MM et JJ.
Pourquoi cette distinction est-elle importante ? Supposons que vous créez un paramètre de chaîne de requête Table/Date gt 2018-08-03. Les résultats vont-ils inclure le 3 août 2018 ou commencer le 4 août 2018 ? Power BI traduit votre requête en Table/Date gt '2018-08-03T00:00:00' . Ainsi, vos résultats incluent toutes les dates qui ont une partie de temps différente de zéro, car ces dates seraient supérieures à '2018-08-03T00:00:00' .
Il existe d'autres différences entre V3 et V4. OData V3 ne prend pas en charge Dates, seulement DateTime. Par conséquent, si vous utilisez le format V3, vous devez le qualifier avec la date et l'heure complètes. Les littéraux de date comme "datetime'2019-05-20'" ne sont pas pris en charge dans la notation V3. Mais vous pouvez simplement écrire "2019-05-20" en notation V4. Voici deux requêtes de filtre équivalentes dans V3 et V4 :
- Format OData V4 : filter=Table/Date gt 2019-05-20
- Format OData V3 : filter=Table/Date gt datetime'2019-05-20T00:00:00'
Caractères spéciaux dans les filtres d’URL
Caractères spéciaux dans les noms de tables et de colonnes
Les caractères spéciaux, les espaces et les numéros initiaux dans les noms de table et de colonnes nécessitent davantage de mise en forme. Quand votre requête contient des espaces, des tirets, des numéros initiaux ou d’autres caractères non-ASCII, faites précéder ces caractères spéciaux d’un code d’échappement commençant par un trait de soulignement et X (_x), suivi du code Unicode à quatre chiffres, puis par un autre trait de soulignement. Si le code Unicode a moins de quatre caractères, vous devez le compléter avec des zéros. Voici quelques exemples.
Identificateur | Unicode | Codage pour Power BI |
---|---|---|
Nom du tableau | L’espace est 00x20 | Table_x0020_Name |
Column@Number | @ est 00x40 | Column_x0040_Number |
[Column] | [ is 0x005B ] is 0x005D | _x005B_Column_x005D_ |
Column+Plus | Le code Unicode pour + est 0x2B | Column_x002B_Plus |
2TableName | 2 est x0032 | _x0032_TableName_ |
Table_x0020_Name/Column_x002B_Plus eq 3
Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]'
Caractères spéciaux dans les valeurs
Les filtres d’URL prennent en charge la plupart des caractères spéciaux dans les valeurs de champ, mais certains nécessitent également des codes d’échappement. Par exemple, pour rechercher un guillemet simple, utilisez deux guillemets simples ('').
?filter=Table/Name eq 'O''Brien'
devient :?filter=Table/Name eq 'Lee''s Summit'
devient :L’opérateur
in
prend également en charge cet échappement :?filter=Table/Name in ('Lee''s Summit', 'O''Brien')
devient :
Voici une liste de certains caractères spéciaux qui nécessitent des codes d’échappement dans les valeurs de champ.
Caractère | Code d’échappement |
---|---|
(un espace) | %20 |
' | '' |
% | %25 |
+ | %2B |
/ | %2F |
? | %3F |
# | %23 |
& | %26 |
Caractères d’échappement d’URL standard
Quand vous utilisez une URL avec des espaces et d’autres caractères spéciaux, les navigateurs peuvent les remplacer automatiquement par des caractères d’échappement standard. Imaginons que vous créez cette chaîne de requête d’URL :
https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives/Executive eq 'Andrew Ma'
Elle ouvre l’exemple Customer Profitability, filtré sur Andrew Ma. Toutefois, si vous examinez l’URL, elle peut maintenant ressembler à ceci :
https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives%2FExecutive%20eq%20%27Andrew%20Ma%27
Le navigateur a remplacé l’espace entre Andrew
et Ma
par %20
, de même que les autres espaces. Il a remplacé la barre oblique entre le nom de table Executives
et le nom de champ Executive
par %2F
, et a remplacé le guillemet simple '
par %27
.
Cette version d’URL peut être utile. Par exemple, vous pouvez la coller dans une conversation par chat dans Microsoft Teams pour qu’elle renvoie les résultats filtrés souhaités.
Utiliser DAX pour filtrer sur plusieurs valeurs
Une autre façon de filtrer plusieurs champs consiste à créer une colonne calculée qui concatène deux champs pour former une seule valeur. Ensuite, vous pouvez utiliser cette valeur pour le filtrage.
Par exemple, nous avons deux champs : Territory (territoire) et Chain (chaîne). Dans Power BI Desktop, créez une colonne calculée (champ) nommée TerritoryChain (TerritoireChaîne). N’oubliez pas que le nom de Champ ne peut pas contenir d’espaces. Voici la formule DAX pour cette colonne.
TerritoryChain = [Territoire] & " - " & [Chaîne]
Publiez le rapport sur le service Power BI, puis utilisez la chaîne de requête d’URL pour filtrer les données affichées uniquement pour les magasins Lindseys en Caroline du Nord (NC).
https://app.powerbi.com/groups/me/reports/8d6e300b-696f-498e-b611-41ae03366851/ReportSection3?filter=Store/TerritoryChain eq 'NC – Lindseys'
Épingler une vignette d’un rapport filtré
Après avoir filtré le rapport à l’aide de paramètres de chaîne de requête, vous pouvez épingler des visualisations de ce rapport à votre tableau de bord. La vignette épinglée au tableau de bord affiche les données filtrées. La sélection de cette vignette a pour effet d’ouvrir le rapport utilisé pour la créer. Toutefois, le filtrage effectué à l’aide de l’URL n’est pas enregistré avec le rapport. Lorsque vous sélectionnez la mosaïque du tableau de bord, le rapport s’ouvre dans son état non filtré. Les données affichées par la mosaïque épinglée au tableau de bord ne correspondent donc pas à celles présentées dans la visualisation du rapport.
Cette divergence est utile quand vous voulez afficher des résultats différents : filtrés sur le tableau de bord et non filtrés dans le rapport.
Considérations et résolution des problèmes
Lorsque vous utilisez les paramètres de chaîne de requête, vous devez garder certaines choses à l’esprit.
Quand vous utilisez l’opérateur in, les valeurs à droite de in doivent être sous forme de liste séparée par des virgules et placée entre des parenthèses.
Power BI Report Server offre également la possibilité de spécifier plusieurs filtres en utilisant le paramètre d’URL « filter ». Voici un exemple de ce à quoi peut ressembler l’URL dans Power BI Report Server :
https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'
Les filtres d’URL de rapport sont limités à 10 expressions (10 filtres connectés par AND).
Le type de données long est (2^53 - 1) en raison des limitations de JavaScript.
Les chaînes de requête d’URL sont limitées à 2 000 caractères. Cette limite comprend les codes d’échappement pour les caractères spéciaux (par exemple, un espace, %, +).
Vous ne pouvez pas filtrer sur des noms de table ou de colonne qui commencent par les lettres majuscules INF, y compris, par exemple, un nom de table commençant par « INFORMATION ». INF en majuscules est une valeur spéciale dans OData. Si vous voulez qu’un nom de table ou de colonne commence par « INF », utilisez plutôt « inf » en minuscules.
Les noms de table et de champ peuvent contenir des caractères chinois au format Unicode. Par exemple, si vous voulez appliquez un filtre où 表/人 égale « 张力 » (cela signifie que Table/Personne égale « 张力 »). Le filtre est converti à _x8868_/_x4eba_ égale « 张力 ».
Scénarios d’incorporation
Les filtres d’URL sont pris en charge dans certains scénarios d’incorporation et non dans d’autres.
- L’incorporation d’un rapport dans un portail sécurisé ou un site web est prise en charge.
- Les filtres d’URL sont pris en charge dans Power BI Embedded.
- Le filtrage de chaîne de requête ne fonctionne pas avec Publier sur le web ou Exporter au format PDF.
- Incorporer avec le composant du rapport dans SharePoint Online ne prend pas en charge les filtres d’URL.
- Les équipes n’autorisent pas la spécification d’une URL.
Contenu connexe
D’autres questions ? Essayez d’interroger la communauté Power BI