我有一个Power BI报告,我想与我的外向型网站集成。
在我的网站上,如果用户点击名称"Frank“,我想将此参数传递给我的BI报告。在内部,这与
Query00/name eq 'Frank‘附加到报告的URL。
但是,当我将此报告发布到WEB (公共而不是组织内部)时,此参数字符串不起作用。如何向已发布的BI报表传递参数?
发布于 2019-09-06 15:29:58
正如你从官方documentation中看到的,这是不受支持的:
您可以将切片器添加到报表中,这将允许访问者过滤数据,或者以其他方式嵌入数据。
Secure embedding支持网址过滤,但正确的方法是通过actually embed the report访问您的站点。您可以在Power BI Embedded Playground中看到它的实际效果。在嵌入时,有两种情况-“用户拥有数据”,其中每个访问者都需要Power BI Pro帐户来查看报表;“应用程序拥有数据”,在这种情况下,您的应用程序使用一个Power BI Pro帐户来验证自己,但您的用户根本不需要拥有Power BI帐户。在您的情况下,您需要后者。
只需下载微软的sample application并对其进行配置。你需要register Azure AD application才能在你的应用中使用。然后,您的应用程序将authenticate itself并使用Power BI REST API来获取report的embedUrl
,并将其与Power BI JavaScript client一起使用,将其嵌入到网页的空<div>
中。
如何嵌入Power BI是StackOverflow上的一个常见问题,因此你也可以阅读其他答案,例如:
发布于 2020-05-29 15:47:51
POWER BI与HTML页面集成及建立通信BTW HTML页面和POWER BI
在此示例中,我们将在html页面中嵌入powerbi内容,并在html页面中创建按钮,通过这些按钮,页面的视图将发生变化。下面的例子我已经根据上面的问题进行了修改
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button class="textLarge" onclick='show("ReportSection", "Frank");' style="display: inline-block;">Frank</button>
所以这里我使用了一个按钮点击函数"show“,它有两个参数,一个是"page name”,另一个是"filtervalue“。
我有一个iframe,我通过它嵌入我的power bi报告。只需记住,筛选器值和您要放入的值与发布的Bi报告中的值相似。避免拼写错误,因为字符串上会有字符匹配。
<iframe id="embeddedframe" width="2000" height="1000" src="https://app.powerbi.com/reportEmbed?reportId=(put_your_report_id_here_and remove_parenthesis)&groupId=(put_your_group_id_here_and remove_parenthesis)&autoAuth=true&ctid=(put_your_ct_id_here_and remove_parenthesis)&pageName=" frameborder="0" allowFullScreen="true"></iframe>
基本上,您不必编辑iframe URL,您可以直接从bi服务门户获取它
然后调用下面的函数
在下面的功能中,您需要编辑1) baseURL 2) Table_Nameand Colum_Name 3)iframe_id
<script>
function show(pageName, filterValue)
{
var baseUrl='https://app.powerbi.com/reportEmbed?
reportId=b0f&groupId=e2c&autoAuth=true&ctid=efc8&config=e&pageName='
var newUrl = baseUrl + "&pageName=" + pageName;
if(null != filterValue && "" != filterValue)
{
newUrl += "&$filter=Table_Name/Column_name eq '" + filterValue + "'";
}
//Assumes there's an iFrame on the page with id="iFrame"
var report = document.getElementById("embeddedframe")
report.src = newUrl;
}
</script>
https://stackoverflow.com/questions/57813018
复制相似问题