Программная передача параметров фильтра Power BI

18

В моем приложении отображается отчет Power BI. Он уже работает, поэтому нет проблем с отображением отчета по его идентификатору (guid).

Но есть некоторые отчеты, которые необходимо параметризовать, например, с текущим годом или человеком, который рассматривает отчет. Это мой вопрос: как это сделать?

Чтобы быть более конкретным, я встраиваю отчет в элемент HTML <iframe> . Я установил URL-адрес iframe для URL-адреса, полученного из определения отчета embedUrl (полученного от REST API). Я управляю им кодом JavaScript, который вызывает postMessage() .

Определение отчета:

{
  "id":"12345678-6418-4b47-ac7c-f8ac7791a0aa",
  "name":"Retail Analysis Sample",
  "webUrl":"https://app.powerbi.com/reports/12345678-6418-4b47-ac7c-f8ac7791a0aa",
  "embedUrl":"https://app.powerbi.com/reportEmbed?reportId=12345678-6418-4b47-ac7c-f8ac7791a0aa"
}

JavaScript-код для загрузки отчета:

function onFrameLoaded() {
    var m = {
        action: "loadReport",
        reportId: reportId,
        accessToken: accessToken
    };

    iframe.contentWindow.postMessage(JSON.stringify(m), "*");
}

Теперь я подаю, чтобы отфильтровать отчет по параметру из моего пользовательского приложения. Есть ли способ отправить или передать значение для фильтрации набора данных в отчете?

    
задан andrew.fox 22.02.2016 в 15:05
источник
  • Возможный дубликат Power BI Встраивание URL-множественных фильтров –  Matt Mazzola 13.09.2016 в 21:41
  • Как это может быть дубликат заданного вопроса LATER и с другой стороны? –  andrew.fox 19.09.2016 в 21:12

2 ответа

26

Прежде всего, фильтр должен быть определен в отчете, поэтому пользователь может установить его вручную.

Существует два возможных способа передать параметры (таким образом, фильтр настройки) в отчет Power BI из внешнего источника.

a) В приложении Power BI

Вы можете указать фильтр, установив параметр filter в URL-адрес отчета (в адресной строке браузера). Параметр принимает запрос пользовательского фильтра:

https://app.powerbi.com/groups/me/reports/12345678-6418-4b47-ac7c-f8ac7791a0a7?filter=Store/PostalCode eq '15012'

где «12345678-6418-4b47-ac7c-f8ac7791a0a7» является идентификатором отчета, а «Хранить» - это набор данных, а PostalCode - это параметр, подлежащий фильтрации. «eq» - оператор равенства.

URL-адрес должен быть закодирован, поэтому окончательный URL-адрес выглядит следующим образом:

https://app.powerbi.com/groups/me/reports/12345678-6418-4b47-ac7c-f8ac7791a0a7?filter=Store/PostalCode%20eq%20%2715012%27

b) Параметр JavaScript sendMessage oDataFilter

JavaScript (сторона клиента браузера) контролирует загруженный отчет BI postMessage() вызовов с параметрами (точно так же, как в вопросе выше). Существует дополнительная опция oDataFilter , которая может быть настроена для фильтрации отчета.

Установите его так: oDataFilter: "Store/PostalCode eq '15012'"

Полный код будет выглядеть следующим образом:

function onFrameLoaded() {
    var m = {
        action: "loadReport",
        reportId: reportId,
        accessToken: accessToken,
        oDataFilter: "Store/PostalCode eq '15012'"
    };

    iframe.contentWindow.postMessage(JSON.stringify(m), "*");
}

Примечания

  • Не должно быть никаких точек в параметрах фильтра (источник данных или имя параметра), поскольку код Power BI отклоняет его молча как недопустимые имена;
ответ дан andrew.fox 23.02.2016 в 08:39
источник
  • хороший пример и объяснение, спасибо andrew. –  Mostafa 08.04.2016 в 13:51
  • Можно использовать этот подход для фильтрации данных на основе UserID? Например, скажем, у меня есть 50 пользователей с разными разрешениями на данные, которые они могут видеть. Если я использую DirectConnect для SQL-сервера, например, могу ли я использовать параметр-параметр только для раскрытия / отображения данных, которые пользователь может видеть? –  Markive 27.04.2016 в 06:53
  • @Markive - не безопасным способом; вы можете просто передать UserId в качестве фильтра, но пользователь может его очистить. С этим требованием возможно, что Power BI не подходит для вас. В Power BI вы должны публиковать разные отчеты для каждой учетной записи пользователя (которые используют разные запросы). –  andrew.fox 27.04.2016 в 08:18
  • Есть ли способ указать несколько параметров с помощью метода URL? Я попытался фильтровать = Store / PostalCode eq '15012' &? Filter = Store / State eq 'IL', а также? Filter = Store / PostalCode eq '15012' и Store / State eq 'IL' –  Travis 09.07.2016 в 17:28
  • , чтобы вы знали, что это не сработает, если вы опубликуете отчет со значением, которое вы будете фильтровать, уже установленным в фильтре. вы должны опубликовать pbix без набора фильтров. –  freethinker6 02.08.2016 в 22:52
4

Microsoft создала powerbi-клиент, с помощью которого вы можете сделать намного больше, чем просто применить один фильтр. Вы можете применить столько фильтров, сколько хотите, и вы также можете выбрать страницу по умолчанию, фильтры по умолчанию, скрыть панель фильтров, скрыть навигацию по страницам и т. Д.

Здесь вы можете найти клиента: Ссылка

Вот демонстрационное приложение: Ссылка

Вот документация: Ссылка

    
ответ дан Silko 10.10.2016 в 13:37
источник