Filtrování sestavy pomocí parametrů řetězce dotazu v adrese URLFilter a report using query string parameters in the URL

Když otevřete sestavu v Power BI, každá stránka sestavy má svou vlastní jedinečnou adresu URL.When you open a report in Power BI service, each page of the report has its own unique URL. K filtrování stránky sestavy můžete použít podokno Filtry na plátně sestavy.To filter that report page, you could use the Filters pane on the report canvas. Případně můžete sestavu filtrovat předem přidáním parametrů řetězce dotazu k adrese URL.Or you could add query string parameters to the URL to pre-filter the report. Možná máte sestavu, kterou byste chtěli ukázat kolegům, a chcete ji předem filtrovat.Perhaps you have a report you'd like to show colleagues and you want to pre-filter it for them. Jedním ze způsobů, jak filtrovat, je začít s výchozí adresou URL sestavy, přidávat do adresy URL parametry filtru a pak odeslat e-mailem kompletní novou adresu URL.One way to filter it is to start with the default URL for the report, add the filter parameters to the URL, and then email them the entire new URL.

V tomto článku se používá sestava ukázkové analýzy maloobchodního prodeje.This article uses the Retail Analysis Sample report. Pokud chcete postup sledovat, stáhněte si ukázkovou sestavu.If you want to follow along, you can download the sample report.

Snímek obrazovky se sestavou Power BI ve službě

Použití parametrů řetězce dotazuUses for query string parameters

Řekněme, že pracujete v Power BI Desktopu.Say you're working in Power BI Desktop. Chcete vytvořit sestavu, která obsahuje odkazy na další sestavy Power BI, ale v ostatních sestavách chcete zobrazit jenom některé informace.You want to create a report that has links to other Power BI reports, but you want to show only some of the information in the other reports. Nejdříve filtrujte sestavy pomocí parametrů řetězce dotazu a uložte adresy URL.First, filter the reports using query string parameters and save the URLs. Pak v Desktopu vytvořte tabulku s těmito novými adresami URL sestav.Next, create a table in Desktop with these new report URLs. Potom sestavu publikujte a sdílejte.Then publish and share the report.

Další možností použití parametrů řetězce dotazu je, když někdo vytvoří pokročilé řešení Power BI.Another use for query string parameters is for someone creating an advanced Power BI solution. Pomocí jazyka DAX vytvoří sestavu, která generuje adresu URL filtrované sestavy dynamicky na základě výběru, který zákazník provádí v aktuální sestavě.Using DAX, they create a report that generates a filtered report URL dynamically based on the selection their customer makes in the current report. Když zákazníci adresu URL vyberou, uvidí jenom zamýšlené informace.When customers select the URL, they see only the intended information.

Syntaxe parametrů řetězce dotazu pro filtrováníQuery string parameter syntax for filtering

S parametry můžete sestavu filtrovat podle jedné nebo více hodnot, i když tyto hodnoty obsahují mezery nebo speciální znaky.With parameters, you can filter the report for one or more values, even if those values contain spaces or special characters. Základní syntaxe je jednoduchá. Začněte adresou URL sestavy, přidejte otazník a pak přidejte syntaxi filtru.The basic syntax is fairly straightforward; start with the report URL, add a question mark, and then add your filter syntax.

URL?filter=Tabulka/Pole EQ 'Hodnota'URL?filter=Table/Field eq 'value'

Snímek obrazovky s adresou URL a filtrem

  • V proměnných Tabulka a Pole se rozlišují malá a velká písmena. Pro hodnotu to neplatí.Table and Field names are case-sensitive, value isn't.
  • Pole, která jsou skryta v zobrazení sestavy, je stále možné filtrovat.Fields that are hidden from report view can still be filtered.

Typy políField types

Typ pole může být číslo, datum a čas nebo řetězec a použitý typ se musí shodovat s typem nastaveným v datové sadě.Field type can be a number, datetime, or string and the type used must match the type set in the dataset. Například zadání sloupce tabulky typu „řetězec“ nebude fungovat, pokud hledáte datum a čas nebo číselnou hodnotu ve sloupci datové sady nastaveném jako datum, třeba Table/StringColumn eq 1.For example, specifying a table column of type "string" won't work if you're looking for a datetime or numeric value in a dataset column set as a date, such as Table/StringColumn eq 1.

  • Řetězce musí být v jednoduchých uvozovkách, například 'jméno správce'.Strings must be enclosed with single quotes, as in 'manager name'.
  • Čísla nevyžadují žádné zvláštní formátování.Numbers require no special formatting. Podrobnosti najdete v části Číselné datové typy v tomto článku.See Numeric data types in this article for details.
  • Data a časy – viz Datové typy kalendářního data v tomto článku.Dates and times See Date data types in this article.

Pokud je to stále matoucí, přečtěte si následující části, kde si vše podrobně rozebereme.If it's still confusing, continue reading and we'll break it down.

Filtrování podle určitého poleFilter on a field

Předpokládejme, že adresa URL sestavy vypadá následovně.Let’s assume that the URL to our report is the following.

Snímek obrazovky s adresou URL pro spuštění

Předchozí vizualizace mapy znázorňuje obchody v Severní Karolíně.And we see in our map visualization above that we have stores in North Carolina. Severní Karolíně odpovídá hodnota NC v poli Territory (Území) tabulky Store (Obchod).NC is the value that represents North Carolina in the Territory field of the Store table. Pokud chcete sestavu filtrovat, aby se zobrazovala data jenom za obchody v Severní Karolíně (NC), připojte k adrese URL tento řetězec:So to filter the report to show data only for stores in "NC", we append this string to the URL:

?filter=Store/Territory eq 'NC'

Snímek obrazovky s adresou URL a s filtrem nastaveným na Severní Karolínu

V sestavě je vyfiltrovaná Severní Karolína a ve všech vizualizacích sestavy se zobrazí data jenom za Severní Karolínu.Our report is now filtered for North Carolina; all the visualizations in the report show data for only North Carolina.

Snímek obrazovky se sestavou, ve které je vyfiltrovaná Severní Karolína

Filtrování podle více hodnot v jednom poliFilter on more than one value in a field

Pokud chcete filtrovat podle více hodnot v jednom poli, použijte místo operátoru and operátor in.To filter on more than one value in a single field, you use the in operator instead of the and operator. Syntaxe je:The syntax is:

URL?filter=Tabulka/Pole in ('Hodnota1', 'Hodnota2')URL?filter=Table/Field in ('value1', 'value2')

Pokud chcete sestavu z předchozího příkladu filtrovat tak, aby se v ní zobrazovala jenom data pro obchody v NC (Severní Karolína) nebo TN (Tennessee), připojte k adrese URL tento řetězec:Using the same example, to filter the report to show data only for stores in "NC" (North Carolina) or "TN" (Tennessee), append the URL with the following;

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

Seznam dalších užitečných operátorů najdete v tabulce Operátory dále v tomto článku.See the Operators table later in the article for a list of other useful operators.

Filtrování podle více políFilter on multiple fields

Přidáním dalších parametrů k adrese URL můžete filtrovat i podle více polí.You can also filter on multiple fields by adding additional parameters to your URL. Vraťme se k původnímu parametru filtru.Let's go back to our original filter parameter.

?filter=Store/Territory eq 'NC'

Pokud chcete filtrovat podle dalších polí, přidejte and a další pole ve stejném formátu, jak je uvedeno výše.To filter on additional fields, add an 'and' and another field in the same format as above. Tady je příklad.Here is an example.

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

OperátoryOperators

Power BI podporuje kromě and mnoho dalších operátorů.Power BI supports many operators in addition to 'and'. Operátory spolu s typem obsahu, který podporují, jsou uvedené v následující tabulce.The table below lists those operators along with the content type they support.

operátoroperator definicedefinition řetězecstring číslonumber DatumDate PříkladExample
andand aand anoyes anoyes anoyes produkt/cena le 200 and cena gt 3.5product/price le 200 and price gt 3.5
eqeq rovná seequals anoyes anoyes anoyes adresa/město eq 'Redmond'Address/City eq 'Redmond'
nene není rovnonot equal anoyes anoyes anoyes adresa/město ne 'Redmond'Address/City ne 'London'
gege větší než nebo rovnogreater than or equal neno anoyes anoyes produkt/cena ge 10product/price ge 10
gtgt větší nežgreater than neno anoyes anoyes produkt/cena gt 20product/price gt 20
lele menší než nebo rovnoless than or equal neno anoyes anoyes produkt/cena le 100product/price le 100
ltlt menší nežless than neno anoyes anoyes produkt/cena lt 20product/price lt 20
in**in** včetněincluding anoyes anoyes anoyes Student/věk in (27, 29)Student/Age in (27, 29)

** Při použití in mohou být hodnoty napravo od in seznamem hodnot oddělených čárkami v závorkách nebo jediným výrazem, který vrací kolekci.** When using in, the values to the right of in can be a comma-separated list enclosed in parentheses, or a single expression that returns a collection.

Číselné datové typyNumeric data types

Filtr adresy URL Power BI může obsahovat čísla v následujících formátech.A Power BI URL filter can include numbers in the following formats.

Typ číslaNumber type PříkladExample
integerinteger 55
longlong 5 L nebo 5 l5 L or 5 l
doubledouble 5.5 nebo 55e-1 nebo 0.55e+1 nebo 5D nebo 5d nebo 0.5e1D nebo 0.5e1d nebo 5.5D nebo 5.5d nebo 55e-1D nebo 55e-1d5.5 or 55e-1 or 0.55e+1 or 5D or 5d or 0.5e1D or 0.5e1d or 5.5D or 5.5d or 55e-1D or 55e-1d
decimaldecimal 5 M nebo 5 m nebo 5.5 M nebo 5.5 m5 M or 5 m or 5.5 M or 5.5 m
floatfloat 5 F nebo 5 f nebo 0.5e1 F nebo 0.5e-1 d5 F or 5 f or 0.5e1 F or 0.5e-1 d

Datové typy kalendářního dataDate data types

Power BI podporuje OData V3 i V4 pro datové typy Date a DateTimeOffset.Power BI supports both OData V3 and V4 for Date and DateTimeOffset data types. U OData V3 musí být kalendářní data v jednoduchých uvozovkách za slovem datetime.For OData V3, dates must be enclosed in single quotes and be preceded by the word datetime. U OData V4 se jednoduché uvozovky a slovo datetime nevyžadují.Single quotes and the word datetime aren't needed in OData V4.

Kalendářní data jsou reprezentovaná pomocí formátu EDM (2019-02-12T00:00:00): Když datum zadáte jako RRRR-MM-DD, Power BI ho interpretuje jako RRRR-MM-DDT00:00:00.Dates are represented using the EDM format (2019-02-12T00:00:00): When you specify a date as 'YYYY-MM-DD', Power BI interprets it as 'YYYY-MM-DDT00:00:00'. Zajistěte, aby měsíc a den byly dvouciferné, MM a DD.Make sure month and day are two digits, MM and DD.

Proč je toto rozlišení důležité?Why does this distinction matter? Řekněme, že vytvoříte parametr řetězce dotazu Table/Date gt '2018-08-03' .Let's say you create a query string parameter Table/Date gt '2018-08-03'. Bude výsledek obsahovat 3. srpna, 2018, nebo bude začínat 4. srpna, 2018?Will the results include August 3, 2018 or start with August 4, 2018? Power BI přeloží tento dotaz na Table/Date gt '2018-08-03T00:00:00' .Power BI translates your query to Table/Date gt '2018-08-03T00:00:00'. Výsledky tak budou zahrnovat všechna data, která mají nenulovou časovou část, protože tato data by byla větší než '2018-08-03T00:00:00' .So, your results include any dates that have a non-zero time part, because those dates would be greater than '2018-08-03T00:00:00'.

Mezi V3 a V4 existují také další rozdíly.There are other differences between V3 and V4. OData V3 nepodporuje kalendářní data, pouze DateTime.OData V3 does not support Dates, only DateTime. Pokud používáte formát V3, musíte ho kvalifikovat s kompletním datem a časem.So if you use the V3 format, you must qualify it with the full date time. V zápisu V3 nejsou podporovány literály kalendářních dat, například datetime'2019-05-20'.Date literals like "datetime'2019-05-20'" aren't supported in V3 notation. V zápisu V4 ale můžete napsat jen "2019-05-20".But you can just write it as "2019-05-20" in V4 notation. Zde jsou dva ekvivalentní dotazy filtru pro V3 a V4:Here are two equivalent filter queries in V3 and V4:

  • Formát OData V4: filter=Table/Date gt 2019-05-20OData V4 format: filter=Table/Date gt 2019-05-20
  • Formát OData V3: filter=Table/Date gt datetime'2019-05-20T00:00:00'OData V3 format: filter=Table/Date gt datetime'2019-05-20T00:00:00'

Speciální znaky ve filtrech adres URLSpecial characters in URL filters

Speciální znaky v názvech tabulek a sloupcůSpecial characters in table and column names

Speciální znaky a mezery v názvech tabulek a sloupců vyžadují další formátování.Special characters and spaces in table and column names require some additional formatting. Pokud dotaz obsahuje mezery, pomlčky nebo jiné znaky mimo ASCII, dejte před tyto speciální znaky řídicí kód začínající podtržítkem a X ( _x), po kterém následují čtyři číslice Unicode a pak další podtržítko.When your query contains spaces, dashes, or other non-ASCII characters, prefix those special characters with an escape code starting with an underscore and an X (_x), then the four-digit Unicode, then another underscore. Pokud má Unicode méně než čtyři znaky, musíte ho doplnit nulami.If the Unicode is fewer than four characters, you need to pad it with zeroes. Tady je pár příkladů.Here are some examples.

IdentifikátorIdentifier UnicodeUnicode Kódování pro Power BICoding for Power BI
Název tabulkyTable Name Mezera je 0x20Space is 0x20 Table_x0020_NameTable_x0020_Name
Column@NumberColumn@Number @ je 0x40@ is 0x40 Column_x0040_NumberColumn_x0040_Number
[Sloupec][Column] [ je 0x005B ] je 0x005D[ is 0x005B ] is 0x005D x005B_Column_x005Dx005B_Column_x005D
Column+PlusColumn+Plus + je 0x2B+ is 0x2B Column_x002B_PlusColumn_x002B_Plus

Table_x0020_Name/Column_x002B_Plus eq 3 Snímek obrazovky s vizuálem tabulky s vykreslenými zvláštními znaky pro UnicodeTable_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]' Snímek obrazovky s vizuálem tabulky s vykreslenými zvláštními znaky pro kódování pro Power BITable_x0020_Special/x005B_Column_x0020_Brackets_x005D eq '[C]' Screenshot of table visual rendering special characters for coding for Power B I.

Speciální znaky v hodnotáchSpecial characters in values

Filtry adresy URL již podporují všechny speciální znaky v hodnotách polí. Výjimkou jsou jednoduché uvozovky (').URL filters already support all special characters in field values, except the single quote ('). Jedná se o jediný znak, který je třeba opatřit řídicím znakem.That's the only character you need to escape. Pokud chcete vyhledat znak jednoduché uvozovky, použijte dvě jednoduché uvozovky ('').To search for a single quote character, use two single quotes ('').

Například:For example:

  • Z ?filter=Table/Name eq 'O''Brien' je:?filter=Table/Name eq 'O''Brien' becomes:

    Jméno je O'Brien

  • Z ?filter=Table/Name eq 'Lee''s Summit' je:?filter=Table/Name eq 'Lee''s Summit' becomes:

    Jméno je O'Brien

  • Operátor in podporuje i toto použití řídicího znaku: z ?filter=Table/Name in ('Lee''s Summit', 'O''Brien') je:The in operator supports this escaping as well: ?filter=Table/Name in ('Lee''s Summit', 'O''Brien') becomes:

    Jméno je O'Brien

Použití jazyka DAX k filtrování více hodnotUse DAX to filter on multiple values

Když chcete filtrovat podle více polí, můžete použít jiný způsob, a tím je vytvoření počítaného sloupce, který zřetězí dvě pole do jediné hodnoty.Another way to filter on multiple fields is by creating a calculated column that concatenates two fields to a single value. Potom můžete filtrovat podle této hodnoty.Then you can filter on that value.

Máme například dvě pole: Territory (Oblast) a Chain (Řetězec).For example, we have two fields: Territory and Chain. V Power BI Desktopu vytvořte počítaný sloupec (pole) s názvem TerritoryChain.In Power BI Desktop, create a new Calculated column (Field) called TerritoryChain. Nezapomeňte, že v názvu pole nesmí být žádné mezery.Remember that the Field name can't have any spaces. Tady je vzorec DAX pro tento sloupec.Here is the DAX formula for that column.

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

Publikujte sestavu ve službě Power BI. Potom pro filtr použijte řetězec dotazu adresy URL a zobrazte data pouze pro obchody Lindseys v Severní Karolíně.Publish the report to Power BI service and then use the URL query string to filter to display data for only Lindseys stores in NC.

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

Připnutí dlaždice z filtrované sestavyPin a tile from a filtered report

Když dokončíte filtrování sestavy pomocí parametrů řetězce dotazu, můžete připnout vizualizace z této sestavy na řídicí panel.Once you've filtered the report using query string parameters, you can pin visualizations from that report to your dashboard. Dlaždice na řídicím panelu zobrazí filtrovaná data a výběrem této dlaždice řídicího panelu se otevře sestava, která se použila k jejímu vytvoření.The tile on the dashboard displays the filtered data and selecting that dashboard tile opens the report that was used to create it. Nicméně filtrování, které jste provedli pomocí adresy URL, se spolu se sestavou neuloží.However, the filtering you did using the URL isn't saved with the report. Když vyberete dlaždici řídicího panelu, sestava se otevře v nefiltrovaném stavu.When you select the dashboard tile, the report opens in its unfiltered state. Tím pádem data zobrazená v dlaždici řídicího panelu nejsou stejná jako data zobrazená ve vizualizaci sestavy.Thus, the data displayed in the dashboard tile doesn't match the data displayed in the report visualization.

Tato nesrovnalost se hodí v případech, kdy chcete zobrazit odlišné výsledky: filtrované na řídicím panelu a nefiltrované v sestavě.This discrepancy is helpful when you want to see different results; filtered on the dashboard and unfiltered in the report.

Co je potřeba vzít v úvahu a jak řešit potížeConsiderations and troubleshooting

Při používání parametrů řetězce dotazu je třeba vědět několik věcí.There are a couple of things to be aware of when using the query string parameters.

  • Při použití operátoru in musí hodnoty napravo od in představovat seznam hodnot oddělených čárkami, který je v závorkách.When using the in operator, the values to the right of in must be a comma-separated list enclosed in parentheses.
  • Server sestav Power BI také umožňuje zadat další filtry parametrem, který filtruje adresu URL.Power BI Report Server also supports the ability to specify additional filters using the “filter” URL parameter. Tady je příklad adresy URL Serveru sestav Power BI: https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'Here's an example of what the URL might look like 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'
  • Filtry adres URL sestav mají omezení na 10 výrazů (10 filtrů spojených pomocí AND).Report URL filters have a 10-expression limit (10 filters connected by AND).
  • Pro datový typ long platí omezení JavaScriptu (2^53-1).The long data type is (2^53-1) due to JavaScript limitations.
  • Power BI neomezuje počet znaků v řetězci dotazu, který je v adrese URL.Power BI doesn't limit the number of characters in URL query strings. V každém prohlížeči ale platí jiná omezení délky.Different browsers have different length restrictions.

Filtry adres URL jsou podporované jen v některých scénářích vložení, ale v jiných ne.URL filters are supported in some embedding scenarios and not in others.

Další krokyNext steps

Připnutí vizualizace na řídicí panelPin a visualization to a dashboard
Registrace k bezplatné zkušební verziSign up for a free trial

Máte další otázky?More questions? Zkuste se zeptat v komunitě Power BI.Try asking the Power BI Community