Фильтрация отчета с помощью параметров строки запроса в 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 вместо оператора and. Синтаксис:
URL?filter=Table/Fieldin ('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 поддерживает множество операторов помимо "и". В следующей таблице перечислены эти операторы вместе с поддерживаемым типом контента.
Оператор | Определение | Строка | Число | Дата | Пример |
---|---|---|---|---|---|
и | и | да | да | да | продукт/цена менее или равно 200 и цена больше чем 3,5 |
eq | равно | да | да | да | Адрес/город = 'Redmond' |
никогда | не равно | да | да | да | Адрес/Город не «Лондон» |
Германия | больше или равно | нет | да | да | товар/цена ≥ 10 |
gt | больше чем | нет | да | да | продукт/цена > 20 |
≤ | меньше или равно | нет | да | да | product/price ≤ 100 |
lt | Менее | нет | да | да | продукт/цена меньше 20 |
в* | включая | да | да | да | Студент/Возраст в (27, 29) |
* При использовании in, значения справа от in могут быть списком, разделенным запятыми и заключенным в скобки, или одним выражением, возвращающим коллекцию. Примеры см. в статье "Оператор IN".
Числовые типы данных
Фильтр URL-адресов Power BI может содержать числа в следующих форматах.
Тип номера | Пример |
---|---|
integer | 5 |
длинный | 5 L или 5 l |
двойной | 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 V3, так и V4 для типов данных Date и DateTimeOffset. Для OData версии 3 необходимо заключить даты в одинарные кавычки и перед ними указать слово datetime. Вам не нужны одинарные кавычки и слово datetime в OData V4.
Даты представлены с помощью формата 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. Таким образом, если вы используете формат V3, вы должны указать его с полной датой и временем. Литералы дат, такие как 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 | Колонка_x0040_Номер |
[Столбец] | [ соответствует 0x005B ] соответствует 0x005D | _x005B_Column_x005D_ |
Column+Plus | + это 0x2B | Колонка_x002B_Плюс |
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-кодов в значениях полей.
Символ | Код выхода |
---|---|
(пробел) | 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
и именем поля Executive
на %2F
, а также заменил одинарную кавычку '
на %27
.
Эта версия URL-адреса может оказаться полезной. Например, его можно вставить в чате в Microsoft Teams, и он возвращает нужные отфильтрованные результаты.
Использование DAX для фильтрации по нескольким значениям
Другим способом фильтрации по нескольким полям является создание вычисляемого столбца, сцепляющего два поля с одним значением. Затем можно отфильтровать это значение.
Например, у нас есть два поля: Территория и цепочка. В Power BI Desktop создайте новый вычисляемый столбец (поле) с именем TerritoryChain. Помните, что имя поля не может содержать пробелов. Ниже приведена формула DAX для этого столбца.
TerritoryChain = [Территория] и " - " и [Цепочка]
Опубликуйте отчет в службу Power BI, а затем используйте строку запроса URL-адреса для фильтрации и отображения данных только для магазинов Линдси в Северной Каролине.
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".
Имена таблиц и полей могут содержать китайские символы, выраженные в форме Юникода. Например, предположим, что вы хотите применить фильтр, который 表/人 (Таблица/Человек) равен '张力' (это значит Table/Person равен '张力'). Фильтр преобразуется в _x8868_/_x4eba_ eq "张力".
Сценарии внедрения
Фильтры URL-адресов поддерживаются в некоторых сценариях внедрения, а не в других случаях.
- Поддерживается внедрение отчета на защищенном портале или веб-сайте .
- Фильтры URL-адресов поддерживаются в Power BI Embedded.
- Фильтрация строк запроса не работает с публикацией в Интернете или экспорте в PDF.
- Внедрение с веб-частью отчета в SharePoint Online не поддерживает фильтры URL-адресов.
- Teams не разрешает указывать URL-адрес.
Связанный контент
Есть еще вопросы? Задайте их в сообществе Power BI.