Filtrera en rapport med frågesträngsparametrar i URL:en
När du öppnar en rapport i Power BI-tjänst har varje sida i rapporten en egen unik URL. Om du vill filtrera rapportsidan kan du använda fönstret Filter på rapportarbetsytan. Eller så kan du lägga till frågesträngsparametrar i URL:en för att förfiltrera rapporten. Du kanske har en rapport som du vill visa kollegor och du vill förfiltrera den åt dem. Ett sätt att filtrera det är att börja med standard-URL:en för rapporten, lägga till filterparametrarna i URL:en och sedan skicka hela den nya URL:en till dem via e-post.
Den här artikeln använder rapporten Exempel på detaljhandelsanalys. Om du vill följa med kan du ladda ned exempelrapporten.
Används för frågesträngsparametrar
Anta att du arbetar i Power BI Desktop. Du vill skapa en rapport som har länkar till andra Power BI-rapporter, men du vill bara visa en del av informationen i de andra rapporterna. Filtrera först rapporterna med frågesträngsparametrar och spara URL:erna. Skapa sedan en tabell i Desktop med dessa nya rapport-URL:er. Publicera och dela sedan rapporten.
En annan användning för frågesträngsparametrar är för någon som skapar en avancerad Power BI-lösning. I DAX skapar de en rapport som genererar en filtrerad rapport-URL dynamiskt baserat på det val som kunden gör i den aktuella rapporten. När kunderna väljer URL:en ser de bara den avsedda informationen.
Parametersyntax för frågesträng för filtrering
Med parametrar kan du filtrera rapporten efter ett eller flera värden, även om dessa värden innehåller blanksteg eller specialtecken. Den grundläggande syntaxen är ganska enkel. börja med rapport-URL:en och lägg sedan till filtersyntaxen i en frågesträng. En frågesträng i en URL börjar med ett frågetecken (?), till exempel:
URL?filter=Tabellfält/ eq "värde"
- Tabell - och fältnamn är skiftlägeskänsliga. värdet är inte det.
- Fält som är dolda från rapportvyn kan fortfarande filtreras.
Om filterparametern inte är den första parametern i frågesträngen kopplas den till den tidigare parametern med ett &(&), till exempel:
URL?reportId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx&pageName=ReportSection&filter=Table/Field eq 'value'
Fälttyper
Fälttypen kan vara ett tal, en datetime eller en sträng och den typ som används måste matcha typuppsättningen i semantikmodellen. Att till exempel ange en tabellkolumn av typen "sträng" fungerar inte om du letar efter ett datetime- eller numeriskt värde i en semantisk modellkolumn som angetts som ett datum, till exempel Tabell/StringColumn eq 1.
- Strängar måste omges av enkla citattecken, som i "chefsnamn".
- Tal kräver ingen särskild formatering. Mer information finns i Numeriska datatyper i den här artikeln.
- Datum och tider Se Datumdatatyper i den här artikeln.
Om det fortfarande är förvirrande fortsätter du att läsa så delar vi upp det.
Filtrera på ett fält
Anta att URL:en till rapporten är följande.
Och vi ser i vår tidigare kartvisualisering att vi har butiker i North Carolina. NC är det värde som representerar North Carolina i fältet Område i tabellen Store. Så för att filtrera rapporten så att den endast visar data för butiker i "NC" lägger vi till den här strängen i URL:en:
?filter=Store/Territory eq 'NC'
Vår rapport är nu filtrerad för North Carolina; alla visualiseringar i rapporten visar endast data för North Carolina.
Filtrera på fler än ett värde i ett fält
Om du vill filtrera på fler än ett värde i ett enda fält använder du operatorn i stället för operatorn och . Syntax:
URL?filter=Tabellfält /i ('value1', 'value2')
Om du använder samma exempel för att filtrera rapporten så att den endast visar data för butiker i "NC" (North Carolina) eller "TN" (Tennessee) lägger du till URL:en med följande;
?filter=Store/Territory in ('NC', 'TN')
Se tabellen Operatorer senare i artikeln för en lista över andra användbara operatorer.
Filtrera på flera fält
Du kan också filtrera på flera fält genom att lägga till fler parametrar i url:en. Nu går vi tillbaka till vår ursprungliga filterparameter.
?filter=Store/Territory eq 'NC'
Om du vill filtrera efter fler fält lägger du till ett "och" och ett annat fält i samma format som i föregående exempel. Här följer ett exempel.
?filter=Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'
Operatorer
Power BI har stöd för många operatorer utöver "och". I följande tabell visas dessa operatorer tillsammans med den innehållstyp som de stöder.
Operatör | Definition | String | Antal | Datum | Exempel |
---|---|---|---|---|---|
and | och | ja | ja | ja | produkt/pris le 200 och pris gt 3,5 |
Eq | equals | ja | ja | ja | Adress/ort eq "Redmond" |
Ne | inte lika med | ja | ja | ja | Adress/Stad ne "London" |
ge | större än eller lika med | nej | ja | ja | produkt/pris ge 10 |
Gt | mer än | nej | ja | ja | produkt/pris gt 20 |
Le | mindre än eller lika med | nej | ja | ja | produkt/pris le 100 |
Lt | mindre än | nej | ja | ja | produkt/pris lt 20 |
i* | inklusive | ja | ja | ja | Student/Ålder i (27, 29) |
* När du använder i kan värdena till höger om i vara en kommaavgränsad lista som omges av parenteser eller ett enda uttryck som returnerar en samling. Se artikeln IN-operatör för exempel.
Numeriska datatyper
Ett Power BI-URL-filter kan innehålla tal i följande format.
Nummertyp | Exempel |
---|---|
heltal | 5 |
lång | 5 L eller 5 l |
dubbel | 5.5 eller 55e-1 eller 0.55e+1 eller 5D eller 5d eller 0.5e1D eller 0.5e1d eller 5.5D eller 5.5d eller 55e-1D eller 55e-1d |
decimal | 5 M eller 5 m eller 5,5 M eller 5,5 m |
flyta | 5 F eller 5 f eller 0,5e1 F eller 0,5e-1 d |
Uppdatera datatyper
Power BI stöder både OData V3 och V4 för datatyperna Date och DateTimeOffset . För OData V3 måste du omsluta datum med enkla citattecken och föregå dem med ordet datetime. Du behöver inte enkla citattecken och ordet datetime i OData V4.
Datum representeras med EDM-formatet (2019-02-12T00:00:00): När du anger ett datum som "ÅÅÅÅ-MM-DD" tolkar Power BI det som "ÅÅÅÅ-MM-DDT00:00:00". Kontrollera att månad och dag är två siffror, MM och DD.
Varför spelar den här skillnaden roll? Anta att du skapar en frågesträngsparameter Table/Date gt '2018-08-03'. Kommer resultaten att inkludera 3 augusti 2018 eller börja med 4 augusti 2018? Power BI översätter din fråga till Tabell/Datum gt "2018-08-03T00:00:00". Resultatet inkluderar alltså alla datum som har en tidsdel som inte är noll, eftersom dessa datum skulle vara större än "2018-08-03T00:00:00".
Det finns andra skillnader mellan V3 och V4. OData V3 stöder inte datum, bara DateTime. Så om du använder V3-formatet måste du kvalificera det med den fullständiga datumtiden. Datumliteraler som "datetime'2019-05-20' stöds inte i V3-notation. Men du kan bara skriva det som "2019-05-20" i V4-notation. Här är två motsvarande filterfrågor i V3 och V4:
- OData V4-format: filter=Tabell/Datum gt 2019-05-20
- OData V3-format: filter=Tabell/Datum gt datetime'2019-05-20T00:00:00'
Specialtecken i URL-filter
Specialtecken i tabell- och kolumnnamn
Specialtecken, blanksteg och inledande tal i tabell- och kolumnnamn kräver mer formatering. När frågan innehåller blanksteg, bindestreck, inledande tal eller andra icke-ASCII-tecken prefixar du dessa specialtecken med en escape-kod som börjar med ett understreck och ett X (_x), sedan den fyrsiffriga Unicode och sedan ett annat understreck. Om Unicode är färre än fyra tecken måste du fylla den med nollor. Här följer några exempel.
Identifierare | Unicode | Kodning för Power BI |
---|---|---|
Tabellnamn | Utrymmet är 00x20 | Table_x0020_Name |
Kolumnnummer@ | @ är 00x40 | Column_x0040_Number |
[Kolumn] | [ är 0x005B ] är 0x005D | _x005B_Column_x005D_ |
Kolumn+Plus | + är 0x2B | Column_x002B_Plus |
2TableName | 2 är x0032 | _x0032_TableName_ |
Table_x0020_Name/Column_x002B_Plus eq 3
Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq "[C]"
Specialtecken i värden
URL-filter stöder de flesta specialtecken i fältvärden, men vissa kräver också escape-koder. Om du till exempel vill söka efter ett enda citattecken använder du två enkla citattecken ('').
?filter=Table/Name eq 'O''Brien'
Blir:?filter=Table/Name eq 'Lee''s Summit'
Blir:Operatorn
in
stöder även den här utrymningen:?filter=Table/Name in ('Lee''s Summit', 'O''Brien')
blir:
Här är en lista över några specialtecken som kräver escape-koder i fältvärden.
Tecken | Escape-kod |
---|---|
(ett blanksteg) | 20 % |
' | '' |
% | 25 % |
+ | %2B |
/ | %2F |
? | %3F |
# | %23 |
& | 26 % |
Standard-URL-escape-tecken
När du använder en URL med blanksteg och andra specialtecken i den kan webbläsare automatiskt ersätta dem med vanliga escape-tecken. Anta att du skapar den här URL-frågesträngen:
https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives/Executive eq 'Andrew Ma'
Det öppnar exemplet på kundlönsamhet, filtrerat till Andrew Ma. Men om du tittar på URL:en kan den nu se ut så här:
https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives%2FExecutive%20eq%20%27Andrew%20Ma%27
Webbläsaren har ersatt utrymmet mellan Andrew
och Ma
med %20
, på samma sätt de andra blankstegen. Det ersatte snedstrecket mellan tabellnamnet Executives
och fältnamnet Executive
med %2F
och ersatte det enkla citatet '
med %27
.
Den här versionen av en URL kan vara användbar. Du kan till exempel klistra in den i chatten i Microsoft Teams och returnera önskade filtrerade resultat.
Använda DAX för att filtrera på flera värden
Ett annat sätt att filtrera på flera fält är genom att skapa en beräknad kolumn som sammanfogar två fält till ett enda värde. Sedan kan du filtrera på det värdet.
Vi har till exempel två fält: Område och kedja. I Power BI Desktop skapar du en ny beräknad kolumn (fält) med namnet TerritoryChain. Kom ihåg att fältnamnet inte får ha några blanksteg. Här är DAX-formeln för den kolumnen.
TerritoryChain = [Territory] & " - " & [Chain]
Publicera rapporten till Power BI-tjänst och använd sedan URL-frågesträngen för att filtrera och visa data för endast Lindseys-butiker i NC.
https://app.powerbi.com/groups/me/reports/8d6e300b-696f-498e-b611-41ae03366851/ReportSection3?filter=Store/TerritoryChain eq 'NC – Lindseys'
Fästa en panel från en filtrerad rapport
När du har filtrerat rapporten med frågesträngsparametrar kan du fästa visualiseringar från rapporten på instrumentpanelen. Panelen på instrumentpanelen visar filtrerade data och om du väljer panelen på instrumentpanelen öppnas den rapport som användes för att skapa den. Filtreringen som du gjorde med hjälp av URL:en sparas dock inte med rapporten. När du väljer instrumentpanelen öppnas rapporten i sitt ofiltrerade tillstånd. Därför matchar inte de data som visas i instrumentpanelspanelen de data som visas i rapportvisualiseringen.
Den här avvikelsen är användbar när du vill se olika resultat. filtrerat på instrumentpanelen och ofiltrerat i rapporten.
Överväganden och felsökning
Det finns ett par saker att tänka på när du använder frågesträngsparametrarna.
När du använder operatorn in måste värdena till höger om i vara en kommaavgränsad lista som omges av parenteser.
Power BI-rapportserver stöder också möjligheten att ange fler än ett filter med hjälp av url-parametern "filter". Här är ett exempel på hur URL:en kan se ut i Power BI-rapportserver:
https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'
Rapport-URL-filter har en gräns på 10 uttryck (10 filter anslutna av AND).
Den långa datatypen är (2^53-1) på grund av JavaScript-begränsningar.
URL-frågesträngar är begränsade till 2 000 tecken. Den här gränsen omfattar escape-koder för specialtecken (t.ex. ett blanksteg, %, +).
Du kan inte filtrera på tabell- eller kolumnnamn som börjar med versaler INF, inklusive till exempel ett tabellnamn som börjar med "INFORMATION". Inf för versaler är ett särskilt värde i OData. Om du vill starta ett tabell- eller kolumnnamn med "INF" gör du det till "inf" i stället.
Tabell- och fältnamn kan innehålla kinesiska tecken uttryckta i Unicode-format. Anta till exempel att du vill använda ett filter som 表/人 eq '张力' (det innebär tabell/person eq '张力'). Filtret konverteras till _x8868_/_x4eba_ eq "张力".
Inbäddningsscenarier
URL-filter stöds i vissa inbäddningsscenarier och inte i andra.
- Det finns stöd för att bädda in en rapport på en säker portal eller webbplats .
- URL-filter stöds i Power BI Embedded.
- Frågesträngsfiltrering fungerar inte med Publicera på webben eller Exportera till PDF.
- Bädda in med rapportwebbdelen i SharePoint Online stöder inte URL-filter.
- Teams tillåter inte att en URL anges.
Relaterat innehåll
Har du fler frågor? Prova att fråga Power BI Community