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 analizy detalicznej. Jeśli chcesz kontynuować, możesz pobrać przykładowy raport.
Zastosowania 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, a następnie dodaj składnię filtru w ciągu zapytania. Ciąg zapytania w adresie URL rozpoczyna się od znaku zapytania (?), na przykład:
URL?filter=Table/Field eq 'value'
- W nazwach tabel i pól rozróżniana jest wielkość liter; w przypadku wartości już nie.
- Pola ukryte w widoku raportu mogą być nadal filtrowane.
Jeśli parametr filtru nie jest pierwszym parametrem w ciągu zapytania, jest przyłączony do poprzedniego parametru za pomocą znaku ampersand (&), na przykład:
URL?reportId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&pageName=ReportSection&filter=Table/Field eq 'value'
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 pojedyncze cudzysłowy, 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 dotyczące dat w tym artykule.
Jeśli nadal jest niejasne, kontynuuj czytanie, a my to wyjaśnimy.
Filtruj według pola
Załóżmy, że adres URL raportu jest następujący.
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 raport pokazywał dane tylko dla sklepów w "NC", dołączamy ten ciąg do adresu URL.
?filter=Store/Territory eq 'NC'
Nasz raport jest teraz filtrowany dla Karoliny Północnej; wszystkie wizualizacje w raporcie pokazują dane tylko dla Karoliny Północnej.
Filtrowanie po 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=Pole tabeli/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 "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 | równa się | tak | tak | tak | Adres/Miasto jest równy "Redmond" |
Ne | nie równa się | tak | tak | tak | Adres/miasto != "Londyn" |
ge | większe lub równe | nie | tak | tak | produkt/cena ge 10 |
Gt | więcej niż | nie | tak | tak | produkt/cena gt 20 |
Le | mniejsze lub równe | nie | tak | tak | produkt/cena le 100 |
Lt | mniejsze niż | nie | tak | tak | produkt/cena lt 20 |
w* | w tym | tak | tak | tak | Student/Wiek w (27, 29) |
* Gdy używasz in, wartości po prawej stronie in mogą być listą rozdzielaną przecinkami 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 |
długi | 5 L lub 5 l |
podwójny | 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 Tabela/Date 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 uzupełnić go o pełną datę i godzinę. Literały daty, takie jak "datetime'2019-05-20'", nie są obsługiwane w notacji 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: filtr=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, poprzedź te znaki specjalne kodem ucieczki rozpoczynającym się od znaku podkreślenia i znaku X (_x), następnie czterocyfrowym kodem Unicode, a na końcu znakiem podkreślenia. 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 | Tabela_x0020_Nazwa |
Kolumna@Numer | @ jest 00x40 | Kolumna_x0040_Numer |
[Kolumna] | [ ma wartość 0x005B ] ma wartość 0x005D | _x005B_Column_x005D_ |
Kolumna+plus | + jest 0x2B | Kolumna_x002B_Plus |
2TableName | 2 to reprezentacja x0032 | _x0032_NazwaTabeli |
Table_x0020_Name/Column_x002B_Plus eq 3
Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq "[C]"
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 apostrofu, użyj dwóch pojedynczych apostrofów ('').
?filter=Table/Name eq 'O''Brien'
Staje się:?filter=Table/Name eq 'Lee''s Summit'
Staje się:Operator
in
obsługuje również tę ucieczkę: staje się:?filter=Table/Name in ('Lee''s Summit', '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'
Otwiera przykładowy raport rentowności klientów przefiltrowany dla 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 między nazwą tabeli Executives
a nazwą pola Executive
na %2F
, oraz zamieniono pojedynczy cudzysłów '
na %27
.
Ta wersja adresu URL może być przydatna. Możesz na przykład wkleić go na czacie w Microsoft Teams, aby uzyskać żądane przefiltrowane 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: Terytorium i Ł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łudze Power BI, a następnie użyj ciągu zapytania adresu URL do filtrowania i wyświetlania danych tylko dla sklepów Lindseys w Karolinie Północnej.
https://app.powerbi.com/groups/me/reports/8d6e300b-696f-498e-b611-41ae03366851/ReportSection3?filter=Store/TerritoryChain eq 'NC – Lindseys'
Przypnij kafelek 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, aby zobaczyć różne wyniki, filtrowane na pulpicie nawigacyjnym a niefiltrowane 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 operatora in muszą być listą rozdzielaną przecinkami 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 dla znaków specjalnych (np. spacja, %, +).
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". Wielka litera INF jest specjalną wartością w OData. Jeśli chcesz rozpocząć nazwę tabeli lub kolumny od "INF", użyj zamiast tego małych liter "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 Tabela/Osoba równa się "张力" (oznacza to, że Tabela/Osoba równa się "张力"). Filtr jest przekształcany na _x8868_/_x4eba_ eq '张力'.
Scenariusze osadzania
Filtry adresów URL są obsługiwane w niektórych scenariuszach osadzania, a nie w innych.
- Osadzanie raportu w bezpiecznym portalu lub witrynie internetowej jest obsługiwane.
- Filtry adresów URL są obsługiwane w usłudze Power BI Embedded.
- Filtrowanie ciągów zapytania nie działa z funkcją Publikuj w Internecie ani Eksportowanie do formatu PDF.
- Osadzanie przy użyciu składnika Web Part raportu w usłudze SharePoint Online nie obsługuje filtrów URL.
- Usługa Teams nie zezwala na określanie adresu URL.
Powiązana zawartość
Masz więcej pytań? Spróbuj zapytać społeczność Power BI