加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

以编程方式将参数传递给Power BI过滤器

发布时间:2020-12-14 04:16:35 所属栏目:大数据 来源:网络整理
导读:在我的应用程序中,我展示了一个Power BI报告.它已经有效,所以没有任何问题,通过其ID(guid)显示任何报告. 但有一些报告需要进行参数化,例如,与当年或查看报告的人员.这是我的问题:怎么做? 更具体地说,我将报告嵌入HTML iframe元件.我将iframe URL设置为从报
在我的应用程序中,我展示了一个Power BI报告.它已经有效,所以没有任何问题,通过其ID(guid)显示任何报告.

但有一些报告需要进行参数化,例如,与当年或查看报告的人员.这是我的问题:怎么做?

更具体地说,我将报告嵌入HTML< iframe>元件.我将iframe URL设置为从报表定义的embedUrl(从REST API接收)中收到的URL.我通过调用postMessage()的JavaScript代码进行控制.

报表定义:

{
  "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),"*");
}

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

解决方法

首先,必须在报表中定义过滤器,因此用户可以手动设置.

有两种可能的方式将参数(从而将过滤器)设置为来自外部源的Power BI报告.

a)在Power BI应用程序中

您可以通过在报告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看起来像这样:

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

b)JavaScript sendMessage oDataFilter参数

JavaScript(浏览器客户端)通过postMessage()调用参数来控制加载的BI报告(就像上面的问题).还有一个额外的选项oDataFilter可以设置为过滤报表.

设置如下:oDataFilter:“Store / PostalCode eq’15012’”

完整的代码将如下所示:

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

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

备注

>过滤器参数(数据源或参数名称)中不能有任何点,因为Power BI代码无声地拒绝它们作为无效名称;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读