Фильтрация отчета с помощью параметров строки запроса в URL-адресе
При открытии отчета в служба Power BI каждая страница отчета имеет собственный уникальный URL-адрес. Чтобы отфильтровать эту страницу отчета, можно использовать область "Фильтры" на холсте отчета. Или можно добавить параметры строки запроса в URL-адрес, чтобы префильтровать отчет. Возможно, у вас есть отчет, который вы хотите показать коллегам, и вы хотите префиксировать его для них. Один из способов фильтрации состоит в том, чтобы начать с URL-адреса отчета по умолчанию, добавить параметры фильтра в URL-адрес, а затем отправить им весь новый URL-адрес.
В этой статье используется пример отчета по анализу розничной торговли. Если вы хотите скачать пример отчета, можно скачать пример отчета.
Используется для параметров строки запроса
Предположим, что вы работаете в Power BI Desktop. Вы хотите создать отчет с ссылками на другие отчеты Power BI, но вы хотите отобразить только некоторые сведения в других отчетах. Сначала отфильтруйте отчеты с помощью параметров строки запроса и сохраните URL-адреса. Затем создайте таблицу в Desktop с этими URL-адресами отчета. Затем опубликуйте и поделитесь отчетом.
Другим способом использования параметров строки запроса является создание расширенного решения Power BI. В DAX они создают отчет, который создает url-адрес отфильтрованного отчета динамически на основе выбора клиента в текущем отчете. Когда клиенты выбирают URL-адрес, они видят только нужные сведения.
Синтаксис параметра строки запроса для фильтрации
С параметрами можно отфильтровать отчет по одному или нескольким значениям, даже если эти значения содержат пробелы или специальные символы. Базовый синтаксис довольно простой; Начните с URL-адреса отчета, а затем добавьте синтаксис фильтра в строку запроса. Строка запроса в URL-адресе начинается с вопроса (?), например:
URL?filter=Table/Field eq 'value'
- Имена таблиц и полей чувствительны к регистру; Значение не является.
- Поля, скрытые из представления отчета, по-прежнему могут быть отфильтрованы.
Если параметр фильтра не является первым параметром в строке запроса, он присоединяется к предыдущему параметру с амперсандом (&), например:
URL?reportId=xxxx-xxxx-xxxx-xxxx&pageName=ReportSection&filter=Table/Field eq 'value'
Типы полей
Тип поля может быть числом, датой или строкой, а используемый тип должен соответствовать набору типов в семантической модели. Например, указание столбца таблицы типа "string" не работает, если вы ищете дату или числовое значение в столбце семантической модели в качестве даты, например Table/StringColumn eq 1.
- Строки должны быть заключены в одинарные кавычки, как в "имя руководителя".
- Номера не требуют специального форматирования. Дополнительные сведения см . в разделе "Числовые типы данных" в этой статье.
- Даты и время просмотра типов данных Date в этой статье.
Если это все еще запутано, продолжайте читать, и мы сломаем его.
Фильтрация по полю
Предположим, что URL-адрес отчета приведен ниже.
И мы видим в нашей предыдущей визуализации карты, что у нас есть магазины в Северной Каролине. NC — это значение, представляющее Северную Каролину в поле территории таблицы Store. Чтобы отфильтровать отчет, чтобы отобразить данные только для хранилищ в NC, мы добавим эту строку к URL-адресу:
?filter=Store/Territory eq 'NC'
Наш доклад теперь фильтруется для Северной Каролины; Все визуализации в отчете показывают данные только для Северной Каролины.
Фильтрация по нескольким значениям в поле
Чтобы отфильтровать несколько значений в одном поле, используйте оператор in вместо оператора и оператора. Синтаксис:
URL?filter=Table/Field in ('value1', 'value2')
Используя тот же пример, чтобы отфильтровать отчет, чтобы отобразить данные только для хранилищ в "NC" (Северная Каролина) или "TN" (Теннесси), добавьте URL-адрес со следующим кодом;
?filter=Store/Territory in ('NC', 'TN')
См. таблицу "Операторы " далее в статье для списка других полезных операторов.
Фильтрация по нескольким полям
Вы также можете отфильтровать несколько полей, добавив дополнительные параметры в URL-адрес. Давайте вернемся к исходному параметру фильтра.
?filter=Store/Territory eq 'NC'
Чтобы отфильтровать дополнительные поля, добавьте "и" и другое поле в том же формате, что и предыдущий пример. Ниже приведен пример.
?filter=Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'
Операторы
Power BI поддерживает множество операторов в дополнение к "и". В следующей таблице перечислены эти операторы вместе с поддерживаемым типом контента.
Оператор | Определение | Строка | Число | Дата | Пример |
---|---|---|---|---|---|
and | и | yes | yes | yes | продукт/цена le 200 и цена 3,5 |
eq | равно | yes | yes | yes | Адрес/город eq "Redmond" |
никогда | не равно | yes | yes | yes | Адрес/Город не "Лондон" |
ge | больше или равно | no | yes | yes | product/price ge 10 |
gt; | больше чем | no | yes | yes | продукт/цена 20 |
меньше или равно | меньше или равно | no | yes | yes | product/price le 100 |
lt | Менее | no | yes | yes | product/price lt 20 |
в* | включая | yes | yes | yes | Student/Age in (27, 29) |
* При использовании значения справа от в нее могут быть разделенные запятыми список, заключенный в скобки, или одно выражение, возвращающее коллекцию. Примеры см. в статье "Оператор IN".
Числовые типы данных
Фильтр URL-адресов Power BI может содержать числа в следующих форматах.
Тип номера | Пример |
---|---|
integer | 5 |
long | 5 L или 5 l |
double | 5.5 или 55e-1 или 0,55e+1 или 5D или 5d или 0,5e1D или 0,5e1d или 5.5D или 5.5d или 55e-1D или 55e-1d |
десятичное | 5 М или 5 м или 5,5 М или 5,5 м |
float | 5 F или 5 f или 0,5e1 F или 0,5e-1 d |
Типы данных даты
Power BI поддерживает как типы данных OData версии 3, так и V4 для типы данных Date и DateTimeOffset . Для OData версии 3 необходимо заключить даты в одинарные кавычки и предшествуть им слово datetime. Вам не нужны одинарные кавычки и слово datetime в OData версии 4.
Даты представлены с помощью формата EDM (2019-02-12T00:00:00): При указании даты как "ГГГГ-ММ-ДД", Power BI интерпретирует ее как "ГГГГ-ММ-ДДT00:00:00".. Убедитесь, что месяц и день являются двумя цифрами, ММ и DD.
Почему это различие имеет значение? Предположим, что вы создадите параметр строки запроса Table/Date gt '2018-08-03'. Будут ли результаты включать 3 августа 2018 г. или начать с 4 августа 2018 г.? Power BI преобразует запрос в table/Date gt '2018-08-03T00:00:00:00'. Таким образом, результаты включают любые даты, имеющие ненулевая часть времени, так как эти даты будут больше 2018-08-03T00:00:00'.
Существуют и другие различия между версиями 3 и V4. OData версии 3 не поддерживает даты, только DateTime. Таким образом, если вы используете формат версии 3, необходимо квалифицировать его с полным временем даты. Литералы дат, такие как datetime'2019-05-20', не поддерживаются в нотации V3. Но вы можете просто написать его как "2019-05-20" в нотации V4. Ниже приведены два эквивалентных запроса фильтра в версии 3 и V4:
- Формат OData V4: filter=Table/Date gt 2019-05-20
- Формат OData V3: filter=Table/Date gt datetime'2019-05-20T00:00:00'
Специальные символы в фильтрах URL-адресов
Специальные символы в именах таблиц и столбцов
Для специальных символов, пробелов и ведущих чисел в именах таблиц и столбцов требуется больше форматирования. Если запрос содержит пробелы, дефисы, начальные цифры или другие символы, отличные от ASCII, префикс этих специальных символов с escape-кодом , начиная с подчеркивания и X (_x), а затем четырехзначный Юникод, а затем еще один символ подчеркивания. Если Юникод меньше четырех символов, его необходимо заполнить нулями. Ниже приведено несколько примеров.
Идентификатор | Unicode | Написание кода для Power BI |
---|---|---|
Имя таблицы | Пробел — 00x20 | Table_x0020_Name |
Номер столбца@ | @ — 00x40 | Column_x0040_Number |
[Столбец] | [ 0x005B ] имеет значение 0x005D | _x005B_Column_x005D_ |
Column+Plus | + 0x2B | Column_x002B_Plus |
2TableName | 2 — x0032 | _x0032_TableName_ |
Table_x0020_Name/Column_x002B_Plus eq 3
Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]'
Специальные символы в значениях
Фильтры URL-адресов поддерживают большинство специальных символов в значениях полей, но для некоторых из них также требуются escape-коды. Например, для поиска одного символа кавычки используйте две одинарные кавычки (').
?filter=Table/Name eq 'O''Brien'
Становится:?filter=Table/Name eq 'Lee''s Summit'
Становится:Оператор
in
также поддерживает этот экранирование: становится следующим:?filter=Table/Name in ('Lee''s Summit', 'O''Brien')
Ниже приведен список некоторых специальных символов, требующих escape-кодов в значениях полей.
Символ | Escape-код |
---|---|
(пробел) | 20% |
' | '' |
% | 25% |
+ | %2B |
/ | %2F |
? | %3F |
# | %23 |
& | 26 % |
Стандартные символы escape-адреса
При использовании URL-адреса с пробелами и другими специальными символами в нем браузеры могут автоматически заменить их стандартными escape-символами. Предположим, что вы создадите эту строку запроса URL-адреса:
https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives/Executive eq 'Andrew Ma'
Откроется пример рентабельности клиента, отфильтрованный в Эндрю Ма. Но если вы посмотрите НА URL-адрес, он теперь может выглядеть следующим образом:
https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives%2FExecutive%20eq%20%27Andrew%20Ma%27
Браузер заменил пространство между Andrew
и Ma
%20
с другими пробелами. Он заменил косую черту вперед между именем Executives
таблицы и именем %2F
Executive
поля и заменил одинарный кавычки '
%27
на .
Эта версия URL-адреса может оказаться полезной. Например, его можно вставить в чате в Microsoft Teams, и он возвращает нужные отфильтрованные результаты.
Использование DAX для фильтрации по нескольким значениям
Другим способом фильтрации по нескольким полям является создание вычисляемого столбца, сцепляющего два поля с одним значением. Затем можно отфильтровать это значение.
Например, у нас есть два поля: Территория и цепочка. В Power BI Desktop создайте новый вычисляемый столбец (поле) с именем TerritoryChain. Помните, что имя поля не может содержать пробелов. Ниже приведена формула DAX для этого столбца.
TerritoryChain = [территория] & " - " и [цепочка]
Опубликуйте отчет в служба Power BI, а затем используйте строку запроса URL-адреса для фильтрации и отображения данных только для хранилищ Линдси в NC.
https://app.powerbi.com/groups/me/reports/8d6e300b-696f-498e-b611-41ae03366851/ReportSection3?filter=Store/TerritoryChain eq 'NC – Lindseys'
Закрепление плитки из отфильтрованного отчета
После фильтрации отчета с помощью параметров строки запроса можно закрепить визуализации из этого отчета на панели мониторинга. Плитка на панели мониторинга отображает отфильтрованные данные и выбор плитки панели мониторинга открывает отчет, который использовался для его создания. Однако фильтрация, которую вы сделали с помощью URL-адреса, не сохраняется в отчете. При выборе плитки панели мониторинга отчет открывается в его нефильтрованном состоянии. Таким образом, данные, отображаемые на плитке панели мониторинга, не соответствуют данным, отображаемым в визуализации отчета.
Это несоответствие полезно, если вы хотите увидеть различные результаты; фильтруется на панели мониторинга и не фильтруется в отчете.
Рекомендации и устранение неполадок
При использовании параметров строки запроса следует учитывать несколько вещей.
При использовании оператора in значения справа от него должны быть разделенными запятыми списком, заключенным в скобки.
Сервер отчетов Power BI также поддерживает возможность указания нескольких фильтров с помощью параметра URL-адреса "filter". Ниже приведен пример того, как может выглядеть URL-адрес в Сервер отчетов Power BI:
https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'
Фильтры URL-адресов отчета имеют ограничение в 10 выражений (10 фильтров, подключенных с помощью AND).
Длинный тип данных — (2^53-1) из-за ограничений JavaScript.
Строки запроса URL-адреса ограничены 2000 символами. Это ограничение включает в себя escape-коды для специальных символов (например, пробел, %, +).
Невозможно отфильтровать имена таблиц или столбцов, начинающиеся с заглавных букв INF, включая, например, имя таблицы, начинающееся с "INFORMATION". INF верхнего регистра — это специальное значение в OData. Если вы хотите запустить таблицу или имя столбца с именем INF, сделайте его нижним регистром inf вместо этого.
Имена таблиц и полей могут содержать китайские символы, выраженные в форме Юникода. Например, предположим, что вы хотите применить фильтр, который 表/人 eq '张力' (это означает Table/Person eq '张力'). Фильтр преобразуется в _x8868_/_x4eba_ eq "张力".
Сценарии внедрения
Фильтры URL-адресов поддерживаются в некоторых сценариях внедрения, а не в других случаях.
- Поддерживается внедрение отчета на защищенном портале или веб-сайте .
- Фильтры URL-адресов поддерживаются в Power BI Embedded.
- Фильтрация строк запроса не работает с публикацией в Интернете или экспорте в PDF.
- Внедрение с веб-частью отчета в SharePoint Online не поддерживает фильтры URL-адресов.
- Teams не разрешает указывать URL-адрес.
Связанный контент
Есть еще вопросы? Задайте их в сообществе Power BI.