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.

Screenshot of Power BI report in the service.

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 rapportens URL, lägg till ett frågetecken och lägg sedan till filtersyntaxen.

URL?filter=Tabellfält/ eq "värde"

Screenshot of U R L with filter.

  • Tabell - och fältnamn är skiftlägeskänsliga. värdet är inte det.
  • Fält som är dolda från rapportvyn kan fortfarande filtreras.

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.

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.

Screenshot of starting URL.

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'

Screenshot of U R L with filter for North Carolina.

Vår rapport är nu filtrerad för North Carolina; alla visualiseringar i rapporten visar endast data för North Carolina.

Screenshot of Report filtered for 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 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.

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:

    Name is O'Brien

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

    Lee's Summit

  • Operatorn in stöder även den här utrymningen: ?filter=Table/Name in ('Lee''s Summit', 'O''Brien') blir:

    Lee's Summit or O'Brien

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 %2Foch 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 "张力".

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

Inbäddningsscenarier

URL-filter stöds i vissa inbäddningsscenarier och inte i andra.

Har du fler frågor? Prova att fråga Power BI Community