Фильтрация отчета с помощью параметров строки запроса в URL-адресе

При открытии отчета в служба Power BI каждая страница отчета имеет собственный уникальный URL-адрес. Чтобы отфильтровать эту страницу отчета, можно использовать область "Фильтры" на холсте отчета. Или можно добавить параметры строки запроса в URL-адрес, чтобы префильтровать отчет. Возможно, у вас есть отчет, который вы хотите показать коллегам, и вы хотите префиксировать его для них. Один из способов фильтрации состоит в том, чтобы начать с URL-адреса отчета по умолчанию, добавить параметры фильтра в URL-адрес, а затем отправить им весь новый URL-адрес.

В этой статье используется пример отчета по анализу розничной торговли. Если вы хотите скачать пример отчета, можно скачать пример отчета.

Screenshot of Power BI report in the service.

Используется для параметров строки запроса

Предположим, что вы работаете в Power BI Desktop. Вы хотите создать отчет с ссылками на другие отчеты Power BI, но вы хотите отобразить только некоторые сведения в других отчетах. Сначала отфильтруйте отчеты с помощью параметров строки запроса и сохраните URL-адреса. Затем создайте таблицу в Desktop с этими URL-адресами отчета. Затем опубликуйте и поделитесь отчетом.

Другим способом использования параметров строки запроса является создание расширенного решения Power BI. В DAX они создают отчет, который создает url-адрес отфильтрованного отчета динамически на основе выбора клиента в текущем отчете. Когда клиенты выбирают URL-адрес, они видят только нужные сведения.

Синтаксис параметра строки запроса для фильтрации

С параметрами можно отфильтровать отчет по одному или нескольким значениям, даже если эти значения содержат пробелы или специальные символы. Базовый синтаксис довольно простой; Начните с URL-адреса отчета, добавьте вопросительный знак, а затем добавьте синтаксис фильтра.

URL?filter=Table/Field eq 'value'

Screenshot of U R L with filter.

  • Имена таблиц и полей чувствительны к регистру; Значение не является.
  • Поля, скрытые из представления отчета, по-прежнему могут быть отфильтрованы.

Типы полей

Тип поля может быть числом, датой или строкой, а используемый тип должен соответствовать набору типов в семантической модели. Например, указание столбца таблицы типа "string" не работает, если вы ищете дату или числовое значение в столбце семантической модели в качестве даты, например Table/StringColumn eq 1.

  • Строки должны быть заключены в одинарные кавычки, как в "имя руководителя".
  • Номера не требуют специального форматирования. Дополнительные сведения см . в разделе "Числовые типы данных" в этой статье.
  • Даты и время просмотра типов данных Date в этой статье.

Если это все еще запутано, продолжайте читать, и мы сломаем его.

Фильтрация по полю

Предположим, что URL-адрес отчета приведен ниже.

Screenshot of starting URL.

И мы видим в нашей предыдущей визуализации карты, что у нас есть магазины в Северной Каролине. NC — это значение, представляющее Северную Каролину в поле территории таблицы Store. Чтобы отфильтровать отчет, чтобы отобразить данные только для хранилищ в NC, мы добавим эту строку к URL-адресу:

?filter=Store/Territory eq 'NC'

Screenshot of U R L with filter for North Carolina.

Наш доклад теперь фильтруется для Северной Каролины; Все визуализации в отчете показывают данные только для Северной Каролины.

Screenshot of Report filtered for North Carolina.

Фильтрация по нескольким значениям в поле

Чтобы отфильтровать несколько значений в одном поле, используйте оператор in вместо оператора и оператора. Синтаксис:

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 поддерживает множество операторов в дополнение к "и". В следующей таблице перечислены эти операторы вместе с поддерживаемым типом контента.

Оператор Определение Строка Число Дата Пример
and и yes yes yes продукт/цена le 200 и цена 3,5
eq равно yes yes yes Адрес/город eq "Redmond"
Ne не равно yes yes yes Адрес/Город не "Лондон"
Ge больше или равно no yes yes product/price ge 10
Gt больше чем no yes yes продукт/цена 20
Le меньше или равно 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 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.

Специальные символы в значениях

Фильтры URL-адресов поддерживают большинство специальных символов в значениях полей, но для некоторых из них также требуются escape-коды. Например, для поиска одного символа кавычки используйте две одинарные кавычки (').

  • ?filter=Table/Name eq 'O''Brien' Становится:

    Name is O'Brien

  • ?filter=Table/Name eq 'Lee''s Summit' Становится:

    Lee's Summit

  • Оператор in также поддерживает этот экранирование: становится следующим: ?filter=Table/Name in ('Lee''s Summit', 'O''Brien')

    Lee's Summit or 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 таблицы и именем %2FExecutive поля и заменил одинарный кавычки '%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 "张力".

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

Сценарии внедрения

Фильтры URL-адресов поддерживаются в некоторых сценариях внедрения, а не в других случаях.

Есть еще вопросы? Задайте их в сообществе Power BI.