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


Фильтрация отчета с помощью параметров строки запроса в 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 вместо оператора и оператора. Синтаксис:

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

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

Фильтры 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-кодов в значениях полей.

Символ 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 "张力".

    Снимок экрана: китайские символы, преобразованные в формат Юникода в строке поиска.

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

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

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