Фильтрация отчета с помощью параметров строки запроса в 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'
Имена таблиц и полей чувствительны к регистру; значение не чувствительно.
Поля, скрытые из представления отчета, по-прежнему могут быть отфильтрованы.
Если параметр фильтра не является первым параметром в строке запроса, он присоединяется к предыдущему параметру с амперсандом (&), например:
Тип поля может быть числом, датой или строкой, а используемый тип должен соответствовать набору типов в семантической модели. Например, указание столбца таблицы типа "string" не работает, если вы ищете дату или числовое значение в столбце семантической модели в качестве даты, например Table/StringColumn eq 1.
Строки должны быть заключены в одинарные кавычки, как в 'имя руководителя'.
Номера не требуют специального форматирования. См. раздел "Числовые типы данных" в этой статье для получения дополнительных сведений.
Если это все еще запутано, продолжайте читать, и мы объясним подробнее.
Фильтрация по полю
Предположим, что 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:
Для специальных символов, пробелов и ведущих чисел в именах таблиц и столбцов требуется больше форматирования. Если ваш запрос содержит пробелы, дефисы, начальные цифры или другие символы, отличные от ASCII, добавьте к этим специальным символам префикс с escape-кодом, начиная с подчеркивания и X (_x), затем добавьте четырехзначный код в Юникоде, а после — еще одно подчеркивание. Если Юникод меньше четырех символов, его необходимо заполнить нулями. Ниже приведено несколько примеров.
Фильтры 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-адрес, он теперь может выглядеть следующим образом:
Браузер заменил пробел между Andrew и Ma на %20, так же как и другие пробелы. Он заменил косую черту между именем таблицы Executives и именем поля Executive на %2F, а также заменил одинарную кавычку ' на %27.
Эта версия URL-адреса может оказаться полезной. Например, его можно вставить в чате в Microsoft Teams, и он возвращает нужные отфильтрованные результаты.
Использование DAX для фильтрации по нескольким значениям
Другим способом фильтрации по нескольким полям является создание вычисляемого столбца, сцепляющего два поля с одним значением. Затем можно отфильтровать это значение.
Например, у нас есть два поля: Территория и цепочка. В Power BI Desktop создайте новый вычисляемый столбец (поле) с именем TerritoryChain. Помните, что имя поля не может содержать пробелов. Ниже приведена формула DAX для этого столбца.
TerritoryChain = [Территория] и " - " и [Цепочка]
Опубликуйте отчет в службу Power BI, а затем используйте строку запроса URL-адреса для фильтрации и отображения данных только для магазинов Линдси в Северной Каролине.
После фильтрации отчета с помощью параметров строки запроса можно закрепить визуализации из этого отчета на панели мониторинга. Плитка на панели мониторинга отображает отфильтрованные данные и выбор плитки панели мониторинга открывает отчет, который использовался для его создания. Однако фильтрация, которую вы сделали с помощью 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-адресов поддерживаются в некоторых сценариях внедрения, а не в других случаях.
Фильтрация отчетов — это сложная тема, так как существует множество методов фильтрации отчетов Microsoft Power BI. Тем не менее вместе со сложностью вы получаете контроль и можете создавать отчеты, соответствующие требованиям и ожиданиям.
Демонстрация методов и рекомендаций, которые соответствуют бизнес-и техническим требованиям для моделирования, визуализации и анализа данных с помощью Microsoft Power BI.
Узнайте, как отправлять команды в отчеты с разбивкой на страницы в Power BI, добавив параметр в URL-адрес, который можно включить в электронную почту или веб-страницу.
Скрытие или отображение заголовков визуальных элементов приложения встроенной аналитики Power BI. Используйте эту функцию при загрузке отчета или после загрузки отчета.
Узнайте, как использовать фильтры для внедрения отчета в приложение и предоставления пользователям определенной аналитики путем применения настраиваемых фильтров и создания панелей фильтров.