Filtrowanie raportu przy użyciu parametrów ciągu zapytania w adresie URL

Po otwarciu raportu w usługa Power BI każda strona raportu ma własny unikatowy adres URL. Aby filtrować stronę raportu, możesz użyć okienka Filtry na kanwie raportu. Możesz też dodać parametry ciągu zapytania do adresu URL, aby wstępnie filtrować raport. Być może masz raport, który chcesz pokazać współpracownikom i chcesz wstępnie filtrować go dla nich. Jednym ze sposobów filtrowania jest rozpoczęcie od domyślnego adresu URL raportu, dodanie parametrów filtru do adresu URL, a następnie wysłanie wiadomości e-mail do całego nowego adresu URL.

W tym artykule jest używany raport Przykład Retail Analysis. Jeśli chcesz kontynuować, możesz pobrać przykładowy raport.

Screenshot of Power BI report in the service.

Używa parametrów ciągu zapytania

Załóżmy, że pracujesz w programie Power BI Desktop. Chcesz utworzyć raport zawierający linki do innych raportów usługi Power BI, ale chcesz wyświetlić tylko niektóre informacje w innych raportach. Najpierw przefiltruj raporty przy użyciu parametrów ciągu zapytania i zapisz adresy URL. Następnie utwórz tabelę w programie Desktop przy użyciu tych nowych adresów URL raportu. Następnie opublikuj i udostępnij raport.

Innym zastosowaniem parametrów ciągu zapytania jest utworzenie zaawansowanego rozwiązania usługi Power BI. W języku DAX tworzą raport, który dynamicznie generuje filtrowany adres URL raportu w oparciu o wybór, który jest tworzony przez klienta w bieżącym raporcie. Gdy klienci wybierają adres URL, widzą tylko zamierzone informacje.

Składnia parametrów ciągu zapytania na potrzeby filtrowania

Za pomocą parametrów można filtrować raport pod kątem co najmniej jednej wartości, nawet jeśli te wartości zawierają spacje lub znaki specjalne. Podstawowa składnia jest dość prosta; zacznij od adresu URL raportu, dodaj znak zapytania, a następnie dodaj składnię filtru.

URL?filter=Pole tabeli/eq "value"

Screenshot of U R L with filter.

  • W nazwach tabel i pól uwzględniana jest wielkość liter; wartość nie jest.
  • Pola ukryte w widoku raportu mogą być nadal filtrowane.

Typy pól

Typ pola może być liczbą, datą/godziną lub ciągiem, a używany typ musi być zgodny z typem ustawionym w modelu semantycznym. Na przykład określenie kolumny tabeli typu "ciąg" nie działa, jeśli szukasz wartości daty/godziny lub liczbowej w kolumnie modelu semantycznego ustawionej jako data, na przykład Table/StringColumn eq 1.

  • Ciągi muszą być ujęte w apostrofy, tak jak w "nazwie menedżera".
  • Liczby nie wymagają specjalnego formatowania. Aby uzyskać szczegółowe informacje, zobacz Typy danych liczbowych w tym artykule.
  • Daty i godziny Zobacz Typy danych daty w tym artykule.

Jeśli nadal jest mylące, kontynuuj czytanie i rozbijemy go.

Filtrowanie w polu

Załóżmy, że adres URL raportu jest następujący.

Screenshot of starting URL.

W poprzedniej wizualizacji mapy widzimy, że mamy sklepy w Karolinie Północnej. NC to wartość reprezentująca Karolinę Północną w polu Territory tabeli Store. Aby filtrować raport w celu wyświetlania danych tylko dla magazynów w ciągu "NC", dołączamy ten ciąg do adresu URL:

?filter=Store/Territory eq 'NC'

Screenshot of U R L with filter for North Carolina.

Nasz raport jest teraz filtrowany dla Karoliny Północnej; wszystkie wizualizacje w raporcie pokazują dane tylko dla Karoliny Północnej.

Screenshot of Report filtered for North Carolina.

Filtrowanie więcej niż jednej wartości w polu

Aby filtrować więcej niż jedną wartość w jednym polu, należy użyć operatora in zamiast operatora i . Składnia jest następująca:

URL?filter=Poletabeli/w obiekcie ('value1', 'value2')

Korzystając z tego samego przykładu, aby przefiltrować raport, aby wyświetlić dane tylko dla magazynów w "NC" (Karolina Północna) lub "TN" (Tennessee), dołącz adres URL z następującymi elementami;

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

Zapoznaj się z tabelą Operatory w dalszej części artykułu, aby zapoznać się z listą innych przydatnych operatorów.

Filtrowanie w wielu polach

Możesz również filtrować wiele pól, dodając więcej parametrów do adresu URL. Wróćmy do naszego oryginalnego parametru filtru.

?filter=Store/Territory eq 'NC'

Aby filtrować więcej pól, dodaj pole "i" i inne pole w tym samym formacie co w poprzednim przykładzie. Oto przykład.

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

Operatory

Usługa Power BI obsługuje wiele operatorów oprócz operatorów "i". W poniższej tabeli wymieniono te operatory wraz z typem zawartości, który obsługują.

Operator Definicja String Liczba Data Przykład
and oraz tak tak tak produkt/cena le 200 i cena gt 3,5
Eq equals tak tak tak Adres/Miasto eq "Redmond"
Ne nie równa się tak tak tak Adres/miasto ne "Londyn"
Ge większe niż lub równe nie tak tak produkt/cena ge 10
Gt więcej niż nie tak tak produkt/cena gt 20
Le mniejsze niż lub równe nie tak tak produkt/cena le 100
Por mniejsze niż nie tak tak produkt/cena lt 20
Cala* Tym tak tak tak Student/Wiek w (27, 29)

* W przypadku użycia elementu wartości po prawej stronie elementu in mogą być rozdzielaną przecinkami listą ujętą w nawiasy lub pojedynczym wyrażeniem, które zwraca kolekcję. Zobacz artykuł IN Operator, aby zapoznać się z przykładami.

Typy danych liczbowych

Filtr adresu URL usługi Power BI może zawierać liczby w następujących formatach.

Typ liczby Przykład
integer 5
long 5 L lub 5 l
double 5.5 lub 55e-1 lub 0.55e+1 lub 5D, 5d lub 0.5e1D lub 0.5e1d lub 5.5D lub 5.5d lub 55e-1D lub 55e-1d
decimal 5 M lub 5 m lub 5,5 M lub 5,5 m
float 5 F lub 5 f lub 0,5e1 F lub 0,5e-1 d

Typy danych daty

Usługa Power BI obsługuje zarówno typy danych OData V3, jak i V4 dla typów danych Date i DateTimeOffset. W przypadku usługi OData V3 należy ująć daty w pojedynczy cudzysłów i poprzedzać je słowem datetime. Nie potrzebujesz pojedynczych cudzysłowów ani słowa data/godzina w usłudze OData V4.

Daty są reprezentowane przy użyciu formatu EDM (2019-02-12T00:00:00): Po określeniu daty jako "RRRR-MM-DD", usługa Power BI interpretuje ją jako "RRRR-MM-DDT00:00:00". Upewnij się, że miesiąc i dzień to dwie cyfry: MM i DD.

Dlaczego to rozróżnienie ma znaczenie? Załóżmy, że utworzysz parametr ciągu zapytania Table/Date gt '2018-08-03'. Czy wyniki będą obejmować 3 sierpnia 2018 r. lub zaczną się od 4 sierpnia 2018 r.? Usługa Power BI tłumaczy zapytanie na tabelę/datę gt "2018-08-03T00:00:00". Dlatego wyniki obejmują wszystkie daty, które mają część czasową inną niż zero, ponieważ te daty będą większe niż "2018-08-03T00:00:00".

Istnieją inne różnice między wersjami 3 i V4. Usługa OData w wersji 3 nie obsługuje dat, tylko datetime. Dlatego jeśli używasz formatu V3, musisz zakwalifikować go z pełną datą. Literały daty, takie jak "datetime'2019-05-20'" nie są obsługiwane w notacji W wersji 3. Ale możesz po prostu napisać go jako "2019-05-20" w notacji V4. Poniżej przedstawiono dwa równoważne zapytania filtru w wersji 3 i 4:

  • Format OData V4: filter=Table/Date gt 2019-05-20
  • Format OData V3: filter=Table/Date gt datetime'2019-05-20T00:00:00'

Znaki specjalne w filtrach adresów URL

Znaki specjalne w nazwach tabel i kolumn

Znaki specjalne, spacje i liczby wiodące w nazwach tabel i kolumn wymagają większego formatowania. Jeśli zapytanie zawiera spacje, kreski, liczby wiodące lub inne znaki inne niż ASCII, prefiks tych znaków specjalnych z kodem ucieczki rozpoczynającym się od znaku podkreślenia i znakiem X (_x), a następnie czterocyfrowym znakiem Unicode, a następnie innym podkreśleniem. Jeśli kod Unicode ma mniej niż cztery znaki, musisz wypełnić go zerami. Oto kilka przykładów.

Identyfikator Unicode Kodowanie dla usługi Power BI
Nazwa tabeli Spacja to 00x20 Table_x0020_Name
Numer kolumny@ @ jest 00x40 Column_x0040_Number
[Kolumna] [ is 0x005B ] is 0x005D _x005B_Column_x005D_
Kolumna+plus + jest 0x2B Column_x002B_Plus
2TableName 2 to 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.

Znaki specjalne w wartościach

Filtry adresów URL obsługują większość znaków specjalnych w wartościach pól, ale niektóre wymagają również kodów ucieczki. Na przykład, aby wyszukać pojedynczy znak cudzysłowu, użyj dwóch pojedynczych cudzysłowów ('').

  • ?filter=Table/Name eq 'O''Brien' Staje się:

    Name is O'Brien

  • ?filter=Table/Name eq 'Lee''s Summit' Staje się:

    Lee's Summit

  • Operator in obsługuje również tę ucieczkę: staje się: ?filter=Table/Name in ('Lee''s Summit', 'O''Brien')

    Lee's Summit or O'Brien

Oto lista niektórych znaków specjalnych, które wymagają kodów ucieczki w wartościach pól.

Znak Kod ucieczki
(spacja) 20%
' ''
% 25%
+ %2B
/ %2F
? %3F
# %23
& 26%

Standardowe znaki ucieczki adresu URL

Jeśli używasz adresu URL ze spacjami i innymi znakami specjalnymi, przeglądarki mogą automatycznie zastąpić je standardowymi znakami ucieczki. Załóżmy, że tworzysz ten ciąg zapytania adresu URL:

https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives/Executive eq 'Andrew Ma'

Spowoduje to otwarcie przykładu Customer Profitability z filtrem Andrew Ma. Ale jeśli spojrzysz na adres URL, może to teraz wyglądać następująco:

https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives%2FExecutive%20eq%20%27Andrew%20Ma%27

Przeglądarka zamieniła spację między Andrew i Ma na %20, podobnie jak inne spacje. Zamieniono ukośnik w kierunku przesyłania dalej między nazwą tabeli a nazwą ExecutivesExecutive pola ciągiem %2F, i zamienił pojedynczy cudzysłów ' na %27.

Ta wersja adresu URL może być przydatna. Możesz na przykład wkleić go na czacie w usłudze Microsoft Teams i zwrócić żądane odfiltrowane wyniki.

Filtrowanie wielu wartości przy użyciu języka DAX

Innym sposobem filtrowania w wielu polach jest utworzenie kolumny obliczeniowej, która łączy dwa pola z jedną wartością. Następnie można filtrować według tej wartości.

Na przykład mamy dwa pola: Territory (Terytorium) i Chain (Łańcuch). W programie Power BI Desktop utwórz nową kolumnę obliczeniową (pole) o nazwie TerritoryChain. Pamiętaj, że nazwa pola nie może zawierać spacji. Oto formuła języka DAX dla tej kolumny.

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

Opublikuj raport w usługa Power BI, a następnie użyj ciągu zapytania adresu URL do filtrowania i wyświetlania danych tylko dla magazynów Lindseys w nc.

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

Przypinanie kafelka z filtrowanego raportu

Po przefiltrowania raportu przy użyciu parametrów ciągu zapytania możesz przypiąć wizualizacje z tego raportu do pulpitu nawigacyjnego. Kafelek na pulpicie nawigacyjnym wyświetla przefiltrowane dane i wybranie tego kafelka pulpitu nawigacyjnego powoduje otwarcie raportu użytego do jego utworzenia. Jednak filtrowanie, które zostało utworzone przy użyciu adresu URL, nie jest zapisywane w raporcie. Po wybraniu kafelka pulpitu nawigacyjnego raport zostanie otwarty w stanie niefiltrowanym. W związku z tym dane wyświetlane na kafelku pulpitu nawigacyjnego nie są zgodne z danymi wyświetlanymi w wizualizacji raportu.

Ta rozbieżność jest przydatna, gdy chcesz zobaczyć różne wyniki; filtrowany na pulpicie nawigacyjnym i niefiltrowany w raporcie.

Zagadnienia i rozwiązywanie problemów

Podczas korzystania z parametrów ciągu zapytania należy pamiętać o kilku elementach.

  • Jeśli używasz operatora in , wartości z prawej strony elementu in muszą być rozdzielaną przecinkami listą ujętą w nawiasy.

  • Serwer raportów usługi Power BI obsługuje również możliwość określenia więcej niż jednego filtru przy użyciu parametru adresu URL "filter". Oto przykład tego, jak adres URL może wyglądać w Serwer raportów usługi Power BI:https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'

  • Filtry adresów URL raportu mają limit 10 wyrażeń (10 filtrów połączonych za pomocą funkcji AND).

  • Długi typ danych to (2^53-1) ze względu na ograniczenia języka JavaScript.

  • Ciągi zapytania adresu URL są ograniczone do 2000 znaków. Ten limit obejmuje kody ucieczki znaków specjalnych (np. spację, %, +).

  • Nie można filtrować nazw tabel lub kolumn rozpoczynających się od wielkiej litery INF, w tym na przykład nazwy tabeli rozpoczynającej się od "INFORMATION". Wielkie litery INF jest specjalną wartością w usłudze OData. Jeśli chcesz uruchomić nazwę tabeli lub kolumny o nazwie "INF", zamiast tego ustaw ją jako "inf".

  • Nazwy tabel i pól mogą zawierać znaki chińskie wyrażone w postaci Unicode. Załóżmy na przykład, że chcesz zastosować filtr 表/人 eq "张力" (oznacza to tabelę/osobę eq "张力"). Filtr jest konwertowany na _x8868_/_x4eba_ eq "张力".

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

Scenariusze osadzania

Filtry adresów URL są obsługiwane w niektórych scenariuszach osadzania, a nie w innych.

Masz więcej pytań? Spróbuj zadać Społeczność usługi Power BI