Filtrování sestavy pomocí parametrů řetězce dotazu v adrese URL
Když otevřete sestavu v služba Power BI, každá stránka sestavy má svou vlastní jedinečnou adresu URL. Pokud chcete stránku sestavy filtrovat, můžete použít podokno Filtry na plátně sestavy. Nebo můžete do adresy URL přidat parametry řetězce dotazu, které sestavu předfiltruje. Možná máte sestavu, kterou byste chtěli ukázat kolegům a chcete jim ji předfiltrovat. Jedním zezpůsobůch
Tento článek používá sestavu Ukázka analýzy maloobchodního prodeje. Pokud chcete postup sledovat, můžete si stáhnout ukázkovou sestavu.
Používá se pro parametry řetězce dotazu.
Řekněme, že pracujete v Power BI Desktopu. Chcete vytvořit sestavu, která obsahuje odkazy na jiné sestavy Power BI, ale chcete zobrazit jenom některé informace v ostatních sestavách. Nejprve vyfiltrujte sestavy pomocí parametrů řetězce dotazu a uložte adresy URL. V dalším kroku vytvořte tabulku v Desktopu s těmito novými adresami URL sestavy. Pak sestavu publikujte a sdílejte.
Dalším použitím parametrů řetězce dotazu je vytvoření pokročilého řešení Power BI. V jazyce DAX vytvoří sestavu, která dynamicky generuje filtrovanou adresu URL sestavy na základě výběru, který zákazník provede v aktuální sestavě. Když zákazníci vyberou adresu URL, uvidí jenom zamýšlené informace.
Syntaxe parametru řetězce dotazu pro filtrování
Pomocí parametrů můžete sestavu filtrovat pro jednu nebo více hodnot, i když tyto hodnoty obsahují mezery nebo speciální znaky. Základní syntaxe je poměrně jednoduchá; začněte adresou URL sestavy a pak přidejte syntaxi filtru do řetězce dotazu. Řetězec dotazu v adrese URL začíná otazníkem (?), například:
URL?filter=Table/Field eq 'value'
- V názvech tabulek a polí se rozlišují malá a velká písmena; hodnota není.
- Pole, která jsou skrytá v zobrazení sestavy, je stále možné filtrovat.
Pokud parametr filtru není prvním parametrem v řetězci dotazu, připojí se k předchozímu parametru pomocí ampersandu (&), například:
URL?reportId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&pageName=ReportSection&filter=Table/Field eq 'value'
Typy polí
Typ pole může být číslo, datum a čas nebo řetězec a použitý typ musí odpovídat typu nastavenému v sémantickém modelu. Pokud například hledáte hodnotu datetime nebo číselnou hodnotu ve sloupci sémantického modelu nastaveném jako datum, například Table/StringColumn eq 1, nebude zadání sloupce tabulky typu string fungovat.
- Řetězce musí být uzavřeny s jednoduchými uvozovkami, jako je název manažera.
- Čísla nevyžadují žádné zvláštní formátování. Podrobnosti najdete v části Číselné datové typy v tomto článku.
- Data a časy Viz datové typy Datum v tomto článku.
Pokud je stále matoucí, pokračujte ve čtení a rozdělíme ho.
Filtrování podle pole
Předpokládejme, že adresa URL sestavy je následující.
A v předchozí vizualizaci mapy vidíme, že máme obchody v Severní Karolíně. NC je hodnota, která představuje Severní Karolínu v poli Territory tabulky Store. Pokud tedy chcete vyfiltrovat sestavu tak, aby zobrazovala data pouze pro úložiště v nc, připojíme tento řetězec k adrese URL:
?filter=Store/Territory eq 'NC'
Naše sestava je nyní filtrována pro Severní Karolínu; všechny vizualizace v sestavě zobrazují data pouze pro Severní Karolínu.
Filtrování podle více hodnot v poli
Pokud chcete filtrovat podle více hodnot v jednom poli, použijte operátor in místo operátoru a operátor. Syntaxe je:
URL?filter=Table/Field in ('value1', 'value2')
Pomocí stejného příkladu vyfiltrujte sestavu tak, aby zobrazovala data pouze pro obchody v NC (Severní Karolína) nebo "TN" (Tennessee), připojte adresu URL následujícím kódem;
?filter=Store/Territory in ('NC', 'TN')
Seznam dalších užitečných operátorů najdete v tabulce Operátory dále v článku.
Filtrování podle více polí
Můžete také filtrovat podle více polí přidáním dalších parametrů do adresy URL. Vraťme se k našemu původnímu parametru filtru.
?filter=Store/Territory eq 'NC'
Pokud chcete filtrovat další pole, přidejte pole a další pole ve stejném formátu jako v předchozím příkladu. Zde je příklad:
?filter=Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'
Operátory
Power BI kromě operátoru "and" podporuje i mnoho operátorů. Následující tabulka uvádí operátory spolu s typem obsahu, který podporují.
Operátor | definice | String | Počet | Datum | Příklad |
---|---|---|---|---|---|
and | a | ano | ano | ano | produkt/cena le 200 a cena gt 3,5 |
Eq | rovná se | ano | ano | ano | Address/City eq 'Redmond' |
severovýchod | není rovno | ano | ano | ano | Adresa/Město ne 'Londýn' |
germanium | větší než nebo rovno | ne | ano | ano | produkt/cena ge 10 |
Gt | větší než | ne | ano | ano | produkt/cena gt 20 |
Le | menší než nebo rovno | ne | ano | ano | produkt/cena le 100 |
lt | méně než | ne | ano | ano | produkt/cena lt 20 |
v* | včetně | ano | ano | ano | Student/věk ve věku (27, 29) |
* Pokud použijete hodnoty vpravo od in, mohou být čárkami oddělený seznam uzavřený v závorkách nebo jeden výraz, který vrací kolekci. Příklady najdete v článku OPERÁTOR IN.
Číselné datové typy
Filtr adres URL Power BI může obsahovat čísla v následujících formátech.
Typ čísla | Příklad |
---|---|
integer | 5 |
long | 5 L nebo 5 l |
double | 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-1d |
decimal | 5 M nebo 5 m nebo 5,5 M nebo 5,5 m |
float | 5 F nebo 5 f nebo 0,5e1 F nebo 0,5e-1 d |
Datové typy Datum
Power BI podporuje datové typy OData V3 i V4 pro datové typy Date a DateTimeOffset . V případě OData V3 musíte data uzavřít do jednoduchých uvozovek a před nimi zadat slovo datetime. V OData V4 nepotřebujete jednoduché uvozovky a slovo datetime.
Kalendářní data jsou reprezentována ve formátu EDM (2019-02-12T00:00:00): Když zadáte datum jako RRRR-MM-DD, Power BI ho interpretuje jako RRRR-MM-DDT00:00:00. Ujistěte se, že měsíc a den jsou dvě číslice, MM a DD.
Proč je toto rozlišení důležité? Řekněme, že vytvoříte parametr řetězce dotazu Table/Date gt '2018-08-03'. Budou výsledky zahrnovat 3. srpna 2018 nebo začít se 4. srpnem 2018? Power BI přeloží dotaz na tabulku/datum 2018-08-03T00:00:00.00. Výsledky tedy obsahují všechna data, která mají nenulovou časovou část, protože tato data by byla větší než 2018-08-03T00:00:00.00.
Mezi V3 a V4 existují další rozdíly. OData V3 nepodporuje kalendářní data, pouze DateTime. Pokud tedy používáte formát V3, musíte ho kvalifikovat s úplným datem a časem. Literály kalendářních dat, jako je datetime 2019-05-20, se v zápisu V3 nepodporují. Můžete ho ale jednoduše napsat jako "2019-05-20" v zápisu V4. Tady jsou dva ekvivalentní filtrovací dotazy ve V3 a V4:
- Formát OData V4: filter=Table/Date gt 2019-05-20
- Formát OData V3: filter=Table/Date gt datetime'2019-05-20T00:00:00'
Speciální znaky ve filtrech adres URL
Speciální znaky v názvech tabulek a sloupců
Speciální znaky, mezery a úvodní čísla v názvech tabulek a sloupců vyžadují větší formátování. Pokud dotaz obsahuje mezery, pomlčky, úvodní čísla nebo jiné znaky jiné než ASCII, předponu těchto speciálních znaků pomocí řídicího kódu začínajícího podtržítkem a znakem X (_x), pak čtyřmístným znakem Unicode a dalším podtržítkem. Pokud je Unicode méně než čtyři znaky, musíte ho vypsat nulami. Zde je uvedeno několik příkladů.
Identifikátor | Kódování Unicode | Kódování pro Power BI |
---|---|---|
Název tabulky | Mezera je 00x20 | Table_x0020_Name |
Číslo sloupce@ | @ je 00x40 | Column_x0040_Number |
[Sloupec] | [ je 0x005B ] je 0x005D | _x005B_Column_x005D_ |
Column+Plus | + je 0x2B | Column_x002B_Plus |
2TableName | 2 je x0032 | _x0032_TableName_ |
Table_x0020_Name/Column_x002B_Plus eq 3
Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]'
Speciální znaky v hodnotách
Filtry adres URL podporují většinu speciálních znaků v hodnotách polí, ale některé také vyžadují řídicí kódy. Pokud například chcete vyhledat jeden znak uvozovky, použijte dvě jednoduché uvozovky ('').
?filter=Table/Name eq 'O''Brien'
stane se:?filter=Table/Name eq 'Lee''s Summit'
stane se:Operátor
in
podporuje i toto zapouzdření:?filter=Table/Name in ('Lee''s Summit', 'O''Brien')
Tady je seznam některých speciálních znaků, které vyžadují řídicí kódy v hodnotách polí.
Znak | Řídicí kód |
---|---|
(mezera) | 20 % |
' | '' |
% | 25 % |
+ | %2B |
/ | %2F |
? | %3F |
# | %23 |
& | 26 % |
Standardní řídicí znaky adresy URL
Pokud použijete adresu URL s mezerami a dalšími speciálními znaky, můžou je prohlížeče automaticky nahradit standardními řídicími znaky. Řekněme, že vytvoříte tento řetězec dotazu ADRESY URL:
https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives/Executive eq 'Andrew Ma'
Otevře ukázku ziskovosti zákazníků filtrovanou na Andrew Ma. Pokud se ale podíváte na adresu URL, může teď vypadat takto:
https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives%2FExecutive%20eq%20%27Andrew%20Ma%27
Prohlížeč nahradil mezeru mezi Andrew
mezerami %20
a Ma
dalšími mezerami. Nahradil lomítko mezi názvem Executives
tabulky a názvem Executive
%2F
pole a nahradila jednoduchou uvozovku '
znakem %27
.
Tato verze adresy URL může být užitečná. Můžete ho například vložit do chatu v Microsoft Teams a vrátit požadované filtrované výsledky.
Použití jazyka DAX k filtrování více hodnot
Dalším způsobem filtrování více polí je vytvoření počítaného sloupce, který zřetězí dvě pole na jednu hodnotu. Potom můžete filtrovat podle této hodnoty.
Máme například dvě pole: Territory (Oblast) a Chain (Řetězec). V Power BI Desktopu vytvořte nový počítaný sloupec (Pole) s názvem TerritoryChain. Nezapomeňte, že název pole nesmí obsahovat mezery. Tady je vzorec DAX pro tento sloupec.
TerritoryChain = [Territory] & " - " & [Chain]
Publikujte sestavu do služba Power BI a pak pomocí řetězce dotazu adresy URL vyfiltrujte a zobrazte data pouze pro úložiště Lindseys v 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é sestavy
Jakmile sestavu vyfiltrujete pomocí parametrů řetězce dotazu, můžete vizualizace z této sestavy připnout na řídicí panel. 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á byla použita k jejímu vytvoření. Filtrování, které jste použili pomocí adresy URL, se ale v sestavě neuloží. Když vyberete dlaždici řídicího panelu, sestava se otevře v nefiltrovaném stavu. Data zobrazená na dlaždici řídicího panelu proto neodpovídají datům zobrazeným ve vizualizaci sestavy.
Tato nesrovnalost je užitečná, když chcete zobrazit různé výsledky; filtrované na řídicím panelu a nefiltrované v sestavě.
Důležité informace a řešení potíží
Při použití parametrů řetězce dotazu je potřeba vědět několik věcí.
Pokud použijete operátor in, hodnoty napravo od in musí být čárkami oddělený seznam uzavřený v závorkách.
Server sestav Power BI také podporuje možnost zadat více než jeden filtr pomocí parametru adresy URL "filter". Tady je příklad, jak může adresa URL vypadat v Server sestav Power BI:
https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'
Filtry adres URL sestavy mají limit 10 výrazů (10 filtrů propojených funkcí AND).
Dlouhý datový typ je (2^53-1) kvůli omezením JavaScriptu.
Řetězce dotazu adresy URL jsou omezené na 2 000 znaků. Tento limit zahrnuje řídicí kódy pro speciální znaky (např. mezeru, %, +).
Nemůžete filtrovat názvy tabulek nebo sloupců, které začínají velkými písmeny INF, včetně názvu tabulky začínajícího na "INFORMACE". Velká písmena INF je speciální hodnota v OData. Pokud chcete spustit název tabulky nebo sloupce pomocí inf, nastavte místo toho malé písmeno "inf".
Názvy tabulek a polí můžou obsahovat čínské znaky vyjádřené ve formuláři Unicode. Řekněme například, že chcete použít filtr, který 表/人 eq '张力' (to znamená Table/Person eq '张力'). Filtr se převede na _x8868_/_x4eba_ eq '张力'.
Scénáře vkládání
Filtry adres URL se podporují v některých scénářích vkládání, nikoli v jiných scénářích.
- Vložení sestavy na zabezpečený portál nebo web je podporované.
- Filtry adres URL jsou podporované v Power BI Embedded.
- Filtrování řetězců dotazu nefunguje s možnostmi Publikovat na webu ani Exportovat do PDF.
- Vložení webové části sestavy do SharePointu Online nepodporuje filtry adres URL.
- Teams neumožňuje zadat adresu URL.
Související obsah
Máte ještě další otázky? Zkuste se zeptat Komunita Power BI