Sdílet prostřednictvím


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 ze způsobů, jak to filtrovat, je začít s výchozí URL adresou pro zprávu, přidat k URL adresy filtrační parametry a pak jim poslat celou novou URL adresu e-mailem.

Tento článek používá zprávu Ukázková analýza maloobchodního prodeje. Pokud chcete postup sledovat, můžete si stáhnout ukázkovou sestavu.

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

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. Následně vytvořte tabulku na ploše s těmito novými adresami URL zpráv. Poté publikujte a sdílejte zprávu.

Dalším použitím parametrů řetězce dotazu je vytvoření pokročilého řešení Power BI. V DAXu 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 na základě jedné nebo více hodnot, i když tyto hodnoty obsahují mezery nebo speciální znaky. Základní syntaxe je poměrně jednoduchá - začněte s adresou URL sestavy a poté 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'

Snímek obrazovky U R L s filtrem

  • Názvy tabulek a polí jsou citlivé na velikost písmen; hodnota není.
  • Pole, která jsou v zobrazení sestavy skrytá, lze stále 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. Například zadání sloupce tabulky typu "string" nebude fungovat, pokud hledáte hodnotu datetime nebo číselnou hodnotu ve sloupci sémantického modelu, který je nastaven jako datum, například Table/StringColumn eq 1.

Pokud je to stále matoucí, pokračujte ve čtení a my to vysvětlíme.

Filtrování podle pole

Předpokládejme, že adresa URL sestavy je následující.

Snímek obrazovky s počáteční adresou URL

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 obchody v NC, připojíme tento řetězec k adrese URL.

?filter=Store/Territory eq 'NC'

Snímek obrazovky U R L s filtrem pro Severní Karolínu

Naše zpráva je nyní filtrována podle Severní Karolíny; všechny vizualizace ve zprávě zobrazují data pouze pro Severní Karolínu.

Snímek obrazovky sestavy filtrované 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/Fieldin ('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 řetězec Číslo Datum Příklad
and a ano ano ano produkt/cena ≤ 200 a cena > 3,5
Eq rovná se ano ano ano Adresa/Město eq 'Redmond'
ne není rovno ano ano ano Adresa/Město ne 'Londýn'
Ge 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 ≤ 100
lt méně než ne ano ano produkt/cena lt 20
v* včetně ano ano ano Student/věk v rozmezí (27, 29)

* Když použijete in, hodnoty napravo od in mohou být seznam oddělený čárkami uzavřený v závorkách, nebo jeden výraz, který vrací kolekci. Příklady najdete v článku o operátoru 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
dlouhý 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 pro 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 gt '2018-08-03T00: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 pomocí úplného data a času. 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: filtr=Tabulka/Datum 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 váš dotaz obsahuje mezery, pomlčky, úvodní čísla nebo jiné znaky, které nejsou ASCII, přidejte před tyto speciální znaky escape kód, který začíná podtržítkem a písmenem X (_x), pak čtyřmístným kódem 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 Název_x0020_tabulky
Sloupec@Číslo @ je 00x40 Column_x0040_Number
[Sloupec] [ je 0x005B ] je 0x005D _x005B_Sloupec_x005D_
Column+Plus + je 0x2B Column_x002B_Plus
2TableName 2 je x0032 _x0032_TableName

Table_x0020_Name/Column_x002B_Plus eq 3 Snímek obrazovky s vizuálem tabulky, který vykresluje speciální znaky pro Unicode.

Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]' Snímek obrazovky vizuálního zobrazení tabulky, která vykresluje speciální znaky pro kódování pro Power B I.

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:

    Jméno je O'Brien

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

    Lee's Summit

  • Operátor in podporuje i toto unikání: ?filter=Table/Name in ('Lee''s Summit', 'O''Brien')

    Lee's Summit nebo O'Brien

Tady je seznam některých speciálních znaků, které vyžadují únikové kódy v hodnotách polí.

Znak Únikový kód
(mezera) 20 %
' ''
% 25 %
+ %2B
/ %2F
? %3F
# %23
& 26 %

Standardní escape 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 URL dotazovací řetězec:

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 a Ma mezerou %20, stejně tak i další mezery. Nahradil lomítko mezi názvem tabulky Executives a názvem pole Executive s %2F a nahradil jednoduchou uvozovku ' s %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: Oblast a Ř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 = [Území] & " - " & [Řetězec]

Publikujte sestavu do služby Power BI a pak pomocí řetězce dotazu adresy URL vyfiltrujte a zobrazte data pouze pro prodejny Lindseys v Severní Karolíně.

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 při výběru této dlaždice 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 se proto neshodují s daty zobrazenými 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 rovněž podporuje možnost zadat více filtrů pomocí URL parametru "filter". Tady je příklad, jak může adresa URL vypadat v serveru 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ísmeno INF je speciální hodnota v rámci 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 '张力'.

    Snímek obrazovky s čínskými znaky převedenými do formátu Unicode ve vyhledávacím řetězci

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.

Máte ještě další otázky? Zkuste se zeptat Komunita Power BI