Een rapport filteren met behulp van queryreeksparameters in de URL

Wanneer u een rapport opent in Power BI-service, heeft elke pagina van het rapport een eigen unieke URL. Als u deze rapportpagina wilt filteren, kunt u het deelvenster Filters op het rapportcanvas gebruiken. U kunt ook queryreeksparameters toevoegen aan de URL om het rapport vooraf te filteren. Misschien hebt u een rapport dat u collega's wilt laten zien en wilt u het voor hen vooraf filteren. Een manier om het te filteren, is om te beginnen met de standaard-URL voor het rapport, de filterparameters toe te voegen aan de URL en deze vervolgens de hele nieuwe URL te e-mailen.

In dit artikel wordt het rapport Voorbeeld van een retailanalyse gebruikt. Als u mee wilt gaan, kunt u het voorbeeldrapport downloaden.

Screenshot of Power BI report in the service.

Wordt gebruikt voor queryreeksparameters

Stel dat u in Power BI Desktop werkt. U wilt een rapport maken met koppelingen naar andere Power BI-rapporten, maar u wilt slechts enkele informatie in de andere rapporten weergeven. Filter eerst de rapporten met behulp van queryreeksparameters en sla de URL's op. Maak vervolgens een tabel in Desktop met deze nieuwe rapport-URL's. Publiceer en deel vervolgens het rapport.

Een ander gebruik voor queryreeksparameters is voor iemand die een geavanceerde Power BI-oplossing maakt. In DAX maken ze een rapport dat dynamisch een gefilterde rapport-URL genereert op basis van de selectie die de klant maakt in het huidige rapport. Wanneer klanten de URL selecteren, zien ze alleen de beoogde informatie.

Syntaxis van queryreeksparameter voor filteren

Met parameters kunt u het rapport filteren op een of meer waarden, zelfs als deze waarden spaties of speciale tekens bevatten. De basissyntaxis is vrij eenvoudig; begin met de rapport-URL, voeg een vraagteken toe en voeg vervolgens de filtersyntaxis toe.

URL?filter=Table/Field eq 'value'

Screenshot of U R L with filter.

  • Tabel - en veldnamen zijn hoofdlettergevoelig; waarde is niet.
  • Velden die zijn verborgen in de rapportweergave, kunnen nog steeds worden gefilterd.

Veldtypen

Veldtype kan een getal, datum/tijd of tekenreeks zijn en het gebruikte type moet overeenkomen met het type dat is ingesteld in het semantische model. Het opgeven van een tabelkolom van het type 'tekenreeks' werkt bijvoorbeeld niet als u op zoek bent naar een datum/tijd- of numerieke waarde in een semantische modelkolom die is ingesteld als een datum, zoals Table/StringColumn eq 1.

  • Tekenreeksen moeten tussen enkele aanhalingstekens staan, zoals in 'managernaam'.
  • Voor getallen is geen speciale opmaak vereist. Zie Numerieke gegevenstypen in dit artikel voor meer informatie.
  • Datums en tijden Zie datumgegevenstypen in dit artikel.

Als het nog steeds verwarrend is, lees dan verder en we gaan het opsplitsen.

Filteren op een veld

Stel dat de URL naar ons rapport het volgende is.

Screenshot of starting URL.

En we zien in onze vorige kaartvisualisatie dat we winkels hebben in North Carolina. NC is de waarde die North Carolina vertegenwoordigt in het gebied Gebied van de tabel Store . Als u het rapport dus wilt filteren om alleen gegevens weer te geven voor winkels in 'NC', voegen we deze tekenreeks toe aan de URL:

?filter=Store/Territory eq 'NC'

Screenshot of U R L with filter for North Carolina.

Ons rapport is nu gefilterd op North Carolina; alle visualisaties in het rapport bevatten alleen gegevens voor North Carolina.

Screenshot of Report filtered for North Carolina.

Filteren op meer dan één waarde in een veld

Als u wilt filteren op meer dan één waarde in één veld, gebruikt u de operator in plaats van de operator en de operator. De syntaxis is:

URL?filter=Tabelveld/in ('waarde1', 'waarde2')

Als u in hetzelfde voorbeeld het rapport wilt filteren om alleen gegevens weer te geven voor winkels in 'NC' (North Carolina) of 'TN' (Tennessee), voegt u de URL met het volgende toe;

?filter=Store/Territory in ('NC', 'TN')

Zie de tabel Operators verderop in het artikel voor een lijst met andere nuttige operators.

Filteren op meerdere velden

U kunt ook filteren op meerdere velden door meer parameters toe te voegen aan uw URL. We gaan terug naar de oorspronkelijke filterparameter.

?filter=Store/Territory eq 'NC'

Als u wilt filteren op meer velden, voegt u een 'en' en een ander veld toe in dezelfde indeling als in het vorige voorbeeld. Hier volgt een voorbeeld.

?filter=Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'

Operators

Power BI ondersteunt naast 'en' veel operators. De volgende tabel bevat deze operators, samen met het inhoudstype dat ze ondersteunen.

Operator Definitie String Aantal Datum Opmerking
and en ja ja ja product/price le 200 en price gt 3,5
Eq equals ja ja ja Address/City eq 'Redmond'
Ne not equal ja ja ja Adres/Plaats ne 'Londen'
Ge groter dan of gelijk aan nee ja ja product/price ge 10
Gt groter dan nee ja ja product/prijs gt 20
Le kleiner dan of gelijk aan nee ja ja product/prijs le 100
Lt kleiner dan nee ja ja product/price lt 20
Inch* Inclusief ja ja ja Student/Leeftijd in (27, 29)

* Wanneer u de waarden rechts van in gebruikt, kan een door komma's gescheiden lijst tussen haakjes zijn of één expressie die een verzameling retourneert. Zie het artikel IN Operator voor voorbeelden.

Numerieke gegevenstypen

Een Power BI-URL-filter kan getallen bevatten in de volgende indelingen.

Nummertype Opmerking
Geheel getal 5
Lange 5 L of 5 l
Dubbele 5,5 of 55e-1 of 0,55e+1 of 5D of 5d of 0,5e1D of 0,5e1d of 5.5D of 5.5d of 55e-1D of 55e-1d
decimaal 5 M of 5 m of 5,5 M of 5,5 m
Float 5 F of 5 f of 0,5e1 F of 0,5e-1 d

Datumgegevenstypen

Power BI ondersteunt zowel OData V3 als V4 voor gegevenstypen Date en DateTimeOffset . Voor OData V3 moet u datums tussen enkele aanhalingstekens plaatsen en deze vooraf laten gaan door het woord datetime. U hebt geen enkele aanhalingstekens en het woord datetime in OData V4 nodig.

Datums worden weergegeven met de EDM-indeling (2019-02-12T00:00:00): Wanneer u een datum opgeeft als 'JJJJ-MM-DD', interpreteert Power BI deze als 'JJJJ-MM-DDT00:00:00'. Zorg ervoor dat maand en dag twee cijfers zijn, MM en DD.

Waarom maakt dit onderscheid uit? Stel dat u een queryreeksparameter Table/Date gt '2018-08-03' maakt. Zijn de resultaten 3 augustus 2018 of beginnen met 4 augustus 2018? Power BI vertaalt uw query naar Table/Date gt '2018-08-03T00:00:00'. Uw resultaten bevatten dus datums met een niet-nultijdgedeelte, omdat deze datums groter zijn dan '2018-08-03T00:00:00'.

Er zijn andere verschillen tussen V3 en V4. OData V3 biedt geen ondersteuning voor datums, alleen datum/tijd. Dus als u de V3-indeling gebruikt, moet u deze kwalificeren met de volledige datum/tijd. Letterlijke datumwaarden zoals 'datum/tijd'2019-05-20' worden niet ondersteund in V3-notatie. Maar u kunt het gewoon schrijven als '2019-05-20' in V4-notatie. Hier volgen twee equivalente filterquery's in V3 en V4:

  • OData V4-indeling: filter=Table/Date gt 2019-05-20
  • OData V3-indeling: filter=Table/Date gt datetime'2019-05-20T00:00:00'

Speciale tekens in URL-filters

Speciale tekens in tabel- en kolomnamen

Voor speciale tekens, spaties en voorloopnummers in tabel- en kolomnamen is meer opmaak vereist. Wanneer uw query spaties, streepjes, voorloopnummers of andere niet-ASCII-tekens bevat, moet u deze speciale tekens vooraf laten gaan door een escapecode die begint met een onderstrepingsteken en een X (_x), vervolgens de unicode met vier cijfers en vervolgens nog een onderstrepingsteken. Als de Unicode uit minder dan vier tekens bestaat, moet u deze opvultekens met nullen. Hieronder vindt u enkele voorbeelden.

Identificatie Unicode Coderen voor Power BI
Tabelnaam Ruimte is 00x20 Table_x0020_Name
Kolomnummer@ @ is 00x40 Column_x0040_Number
[Kolom] [ is 0x005B ] is 0x005D _x005B_Column_x005D_
Column+Plus + is 0x2B Column_x002B_Plus
2TableName 2 is x0032 _x0032_TableName_

Table_x0020_Name/Column_x002B_Plus eq 3 Screenshot of table visual rendering special characters for Unicode.

Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]' Screenshot of table visual rendering special characters for coding for Power B I.

Speciale tekens in waarden

URL-filters ondersteunen de meeste speciale tekens in veldwaarden, maar sommige vereisen ook escapecodes. Als u bijvoorbeeld wilt zoeken naar één aanhalingsteken, gebruikt u twee enkele aanhalingstekens ('').

  • ?filter=Table/Name eq 'O''Brien' Wordt:

    Name is O'Brien

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

    Lee's Summit

  • De in operator biedt ook ondersteuning voor deze escape-bewerking: ?filter=Table/Name in ('Lee''s Summit', 'O''Brien')

    Lee's Summit or O'Brien

Hier volgt een lijst met enkele speciale tekens waarvoor escapecodes in veldwaarden zijn vereist.

Teken Escape-code
(een spatie) 20%
' ''
% 25%
+ %2B
/ %2F
? %3F
# %23
& 26%

Standaard-URL-escapetekens

Wanneer u een URL met spaties en andere speciale tekens erin gebruikt, kunnen browsers deze automatisch vervangen door standaard escapetekens. Stel dat u deze URL-queryreeks maakt:

https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives/Executive eq 'Andrew Ma'

Hiermee opent u het voorbeeld van klantwinstgevendheid, gefilterd op Andrew Ma. Maar als u de URL bekijkt, ziet deze er nu als volgt uit:

https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives%2FExecutive%20eq%20%27Andrew%20Ma%27

De browser heeft de ruimte tussen Andrew en Ma door %20de andere spaties vervangen. Het vervangt de slash tussen de tabelnaam en de veldnaam ExecutivesExecutive door %2Fen vervangt de enkele aanhalingsteken ' door %27.

Deze versie van een URL kan nuttig zijn. U kunt deze bijvoorbeeld in de chat in Microsoft Teams plakken en de gewenste gefilterde resultaten retourneren.

DAX gebruiken om te filteren op meerdere waarden

Een andere manier om te filteren op meerdere velden is door een berekende kolom te maken die twee velden samenvoegt tot één waarde. Vervolgens kunt u filteren op die waarde.

We hebben bijvoorbeeld twee velden: Gebied en Keten. Maak in Power BI Desktop een nieuwe berekende kolom (veld) met de naam TerritoryChain. Houd er rekening mee dat de veldnaam geen spaties mag hebben. Hier volgt de DAX-formule voor die kolom.

TerritoryChain = [Territory] & " - " & [Chain]

Publiceer het rapport naar de Power BI-service en gebruik vervolgens de URL-querytekenreeks om gegevens te filteren en weer te geven voor alleen Lindseys-winkels in NC.

https://app.powerbi.com/groups/me/reports/8d6e300b-696f-498e-b611-41ae03366851/ReportSection3?filter=Store/TerritoryChain eq 'NC – Lindseys'

Een tegel uit een gefilterd rapport vastmaken

Nadat u het rapport hebt gefilterd met behulp van queryreeksparameters, kunt u visualisaties uit dat rapport vastmaken aan uw dashboard. De tegel op het dashboard bevat de gefilterde gegevens en het selecteren van die dashboardtegel opent het rapport dat is gebruikt om het te maken. Het filteren dat u hebt gedaan met behulp van de URL, wordt echter niet opgeslagen in het rapport. Wanneer u de dashboardtegel selecteert, wordt het rapport geopend met de niet-gefilterde status. De gegevens die in de dashboardtegel worden weergegeven, komen dus niet overeen met de gegevens die worden weergegeven in de rapportvisualisatie.

Deze discrepantie is handig als u verschillende resultaten wilt zien; gefilterd op het dashboard en niet gefilterd in het rapport.

Overwegingen en probleemoplossing

Er zijn een aantal dingen waar u rekening mee moet houden wanneer u de queryreeksparameters gebruikt.

  • Wanneer u de operator in gebruikt, moeten de waarden rechts van de operator een door komma's gescheiden lijst tussen haakjes zijn.

  • Power BI Report Server biedt ook ondersteuning voor de mogelijkheid om meer dan één filter op te geven met behulp van de URL-parameter filter. Hier volgt een voorbeeld van hoe de URL eruit kan zien in Power BI Report Server: https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'

  • Rapport-URL-filters hebben een limiet van 10 expressies (10 filters verbonden door AND).

  • Het lange gegevenstype is (2^53-1) vanwege JavaScript-beperkingen.

  • URL-queryreeksen zijn beperkt tot 2000 tekens. Deze limiet bevat escapecodes voor speciale tekens (bijvoorbeeld een spatie, %, +).

  • U kunt niet filteren op tabel- of kolomnamen die beginnen met de hoofdletters INF, waaronder bijvoorbeeld een tabelnaam die begint met 'INFORMATIE'. HOOFDLETTERS INF is een speciale waarde in OData. Als u een tabel- of kolomnaam met 'INF' wilt starten, moet u in plaats daarvan 'inf' kleine letters gebruiken.

  • Tabel- en veldnamen kunnen Chinese tekens bevatten die zijn uitgedrukt in Unicode-formulier. Stel dat u een filter wilt toepassen dat 表/人 eq '张力' (dit betekent Table/Person eq '张力'). Het filter wordt geconverteerd naar _x8868_/_x4eba_ eq '张力'.

    Screenshot of Chinese characters converted to Unicode format in a search string.

Scenario's voor insluiten

URL-filters worden ondersteund in sommige insluitingsscenario's en niet in andere.

Meer vragen? Vraag het Power BI-community