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.

Screenshot of Power BI report in the service.

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, přidejte otazník a pak přidejte syntaxi filtru.

URL?filter=Table/Field eq 'value'

Screenshot of U R L with filter.

  • 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.

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í.

Screenshot of starting 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 úložiště v nc, připojíme tento řetězec k adrese URL:

?filter=Store/Territory eq 'NC'

Screenshot of U R L with filter for North Carolina.

Naše sestava je nyní filtrována pro Severní Karolínu; všechny vizualizace v sestavě zobrazují data pouze pro Severní Karolínu.

Screenshot of Report filtered for North Carolina.

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 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'
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 le 100
Lt menší než ne ano ano produkt/cena lt 20
In* 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 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.

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' se stane:

    Name is O'Brien

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

    Lee's Summit

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

    Lee's Summit or 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 %20a Ma dalšími mezerami. Nahradil lomítko mezi názvem Executives tabulky a názvem Executive%2Fpole 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 '张力'.

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

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