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.
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 en voeg vervolgens de filtersyntaxis toe aan een querytekenreeks. Een querytekenreeks in een URL begint met een vraagteken (?), bijvoorbeeld:
URL?filter=Table/Field eq 'value'
- Tabel - en veldnamen zijn hoofdlettergevoelig; waarde is niet.
- Velden die zijn verborgen in de rapportweergave, kunnen nog steeds worden gefilterd.
Als de filterparameter niet de eerste parameter in de querytekenreeks is, wordt deze gekoppeld aan de vorige parameter met een ampersand (&), bijvoorbeeld:
URL?reportId=xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&pageName=ReportSection&filter=Table/Field eq 'value'
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.
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'
Ons rapport is nu gefilterd op North Carolina; alle visualisaties in het rapport bevatten alleen gegevens voor 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 |
in* | 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 |
lang | 5 L of 5 l |
dubbel | 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 |
drijven | 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
Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]'
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:?filter=Table/Name eq 'Lee''s Summit'
Wordt:De
in
operator biedt ook ondersteuning voor deze escape-bewerking:?filter=Table/Name in ('Lee''s Summit', '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 %20
de andere spaties vervangen. Het vervangt de slash tussen de tabelnaam en de veldnaam Executives
Executive
door %2F
en 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 '张力'.
Scenario's voor insluiten
URL-filters worden ondersteund in sommige insluitingsscenario's en niet in andere.
- Het insluiten van een rapport in een beveiligde portal of website wordt ondersteund.
- URL-filters worden ondersteund in Power BI Embedded.
- Filteren van queryreeksen werkt niet met Publiceren op internet of Exporteren naar PDF.
- Insluiten met een rapportwebonderdeel in SharePoint Online biedt geen ondersteuning voor URL-filters.
- Teams staat het opgeven van een URL niet toe.
Gerelateerde inhoud
Meer vragen? Vraag het Power BI-community