Partager via


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.

Capture d’écran du rapport Power BI dans le service.

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'

Capture d’écran de l’URL avec un filtre.

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

Capture d’écran du lancement de l’URL.

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'

Capture d’écran de l’URL avec un filtre pour Caroline du Nord.

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.

Capture d’écran du rapport filtré sur 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 Capture d’écran du visuel de table affichant des caractères spéciaux pour Unicode

Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]' Capture d’écran du visuel de table affichant des caractères spéciaux pour le codage pour Power BI

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 :

    Le nom est O’Brien

  • ?filter=Table/Name eq 'Lee''s Summit' devient :

    Lee's Summit

  • L’opérateur in prend également en charge cet échappement : ?filter=Table/Name in ('Lee''s Summit', 'O''Brien') devient :

    Lee's Summit ou O'Brien

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 « 张力 ».

    Capture d’écran des caractères chinois convertis au format Unicode dans une chaîne de recherche.

Scénarios d’incorporation

Les filtres d’URL sont pris en charge dans certains scénarios d’incorporation et non dans d’autres.

D’autres questions ? Essayez d’interroger la communauté Power BI