Поделиться через


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

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

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

Снимок экрана: отчет Power BI в службе.

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

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

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

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

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

URL?filter=Table/Field eq 'value'

Снимок экрана: U R L с фильтром.

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

Если параметр фильтра не является первым параметром в строке запроса, он присоединяется к предыдущему параметру с амперсандом (&), например:

URL?reportId=xxxx-xxxx-xxxx-xxxx&pageName=ReportSection&filter=Table/Field eq 'value'

Типы полей

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

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

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

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

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

Снимок экрана: начальный URL-адрес.

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

?filter=Store/Territory eq 'NC'

Снимок экрана: U R L с фильтром для Северной Каролины.

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

Снимок экрана отчета, отфильтрованного по Северной Каролине.

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

Чтобы отфильтровать несколько значений в одном поле, используйте оператор 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]' Снимок экрана: визуальная отрисовка специальных символов в таблице для кодирования в Power BI.

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

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

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

    Имя O'Брайен

  • ?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-адресов поддерживаются в некоторых сценариях внедрения, а не в других случаях.

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