27

在我的应用程序中,我正在显示 Power BI 报告。它已经可以工作了,因此通过 ID (guid) 显示任何报告都没有问题。

但是有些报告需要参数化,例如,当前年份或查看报告的人。这是我的问题:怎么做?

更具体地说,我将报告嵌入到 HTML<iframe>元素中。我将 iframe URL 设置为从报告定义接收的 URL embedUrl(从 REST API 接收)。我通过调用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), "*");
}

现在我通过自定义应用程序中的参数过滤报告。有没有办法发送或传递一个值来过滤报表中的数据集?

4

2 回答 2

33

首先,过滤器必须在报告中定义,所以用户可以手动设置它。

有两种可能的方法可以将参数(从而设置筛选器)从外部源传递到 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”是报表id,“Store”是数据集,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(浏览器客户端)通过postMessage()调用参数来控制加载的 BI 报告(就像上面的问题一样)。可以设置一个额外的选项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 代码将其作为无效名称默默地拒绝;
于 2016-02-23T07:39:32.467 回答
8

Microsoft 创建了一个 powerbi 客户端,您可以使用它来做更多的事情,而不仅仅是应用一个过滤器。您可以根据需要应用任意数量的过滤器,还可以选择默认页面、默认过滤器、隐藏过滤器窗格、隐藏页面导航等。

您可以在这里找到客户端: https ://microsoft.github.io/PowerBI-JavaScript/

这是一个演示应用程序: https ://microsoft.github.io/PowerBI-JavaScript/demo/index.html

这是文档: https ://github.com/Microsoft/PowerBI-JavaScript/wiki

于 2016-10-10T11:37:40.960 回答