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.
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, 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=Pole tabeli/eq "value"
- W nazwach tabel i pól uwzględniana jest wielkość liter; wartość nie jest.
- 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 z parametrem ampersand (&), na przykład:
URL?reportId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx&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 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.
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'
Nasz raport jest teraz filtrowany dla Karoliny Północnej; wszystkie wizualizacje w raporcie pokazują dane tylko dla Karoliny Północnej.
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=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 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 |
Lt | mniejsze niż | nie | tak | tak | produkt/cena lt 20 |
w* | 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
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 cudzysłowu, użyj dwóch pojedynczych cudzysłowó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'
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ą Executives
Executive
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 "张力".
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 za pomocą składnika Web Part raportu w usłudze SharePoint Online nie obsługuje filtrów adresów URL.
- Usługa Teams nie zezwala na określanie adresu URL.
Powiązana zawartość
Masz więcej pytań? Spróbuj zadać Społeczność usługi Power BI