1

我创建了一个托管在 Azure IIS 上的 WebApp。我正在调用 PowerBI 报告和仪表板并将它们呈现到我的 WebApp 中。

我需要应用以下功能,但无法在线找到解决方案。

  1. 用户可以从 Web 应用程序的 PowerBI 中可用的筛选器筛选数据。
  2. 当我们调用 PowerBI 报表并渲染到网页中时,可以应用行级安全性。
4

1 回答 1

1

目前尚不清楚您使用哪种 URL 来嵌入报告。本质上,您可以使用 3 个 URL 在 Web 应用程序中显示报告:

  1. 从浏览器地址栏中获取的 URL。在这种情况下,您的 Web 应用程序的使用需要登录 Power BI 服务并被授予查看此报告的权限。缺点之一是在您的 Web 应用程序中,您不会只看到报表,而是整个 Power BI 页面(包括左侧的导航菜单)。
  2. 当您使用 Publish to web公开共享此报告时使用的 URL。在这种情况下,只有报表将嵌入到您的 Web 应用程序中(菜单将不可见),但您不能对启用 RLS 的数据集上的报表执行此操作(因为 RLS 需要用户的身份,而在这种情况下访问是匿名的) .
  3. 可以使用 Power BI REST API 获取的报表(或磁贴或仪表板)的embedUrl 。当您为此工作区(Power BI Embedded)分配了专用容量时,通常会使用它。在这种情况下,有两种情况——“用户自己的数据”和“应用程序自己的数据”。在第一个中,您的每个用户都必须拥有自己的帐户和权限才能查看报告(如 #1 所示)。在后一种情况下,您在 Web 应用程序中使用一个共享的“主帐户”来访问报告,并且您的用户无需进行身份验证。你可以看看样品看看它是如何工作的。本质上,您需要 JavaScript Power BI 客户端、一个带有 a 的 HTML 页面和一些 JavaScript 代码来加载报告(检查示例中的 powerbi.js、ReportLoader.html 和 ReportLoader.js 文件。这是一个很好的起点文章 -教程:将 Power BI 报表、仪表板或磁贴嵌入到客户的应用程序中

要将过滤器应用于嵌入式报告,您可以使用最近的一项新功能(如果我是正确的,它自 2018 年 8 月起可用)并在 URL 中添加过滤器。我不确定这在#2 的情况下是否有效,但无论如何我都不建议使用它。

案例 #2 无法使用 RLS。在 #1 和 #3 的情况下,RLS 将简单地工作。对于#3,如果您使用“应用程序自己的数据”方案,为了让 RLS 工作,您需要在生成令牌以访问报告时传递用户名和角色(因为否则对于所有用户的请求,Power BI 将始终看到您的“主帐户”和 RLS 将没有任何意义)。这是使用EffectiveIdentity参数指定的。

您还将“power-bi-report-server”附加到您的问题中,但同时您说您的 Web 应用程序正在 Azure 中运行。如果您的所有报表都在本地 Power BI 报表服务器上,那么您也可以通过在报表的 URL 处传递 rs_embed=true 参数来嵌入报表。在这种情况下,要使 RLS 工作,您只需要确保您的用户使用他们自己的帐户进行身份验证。在 URL 中传递过滤器也适用于最新版本(它在 2018 年 3 月被破坏,但在 15.0.2.389 中修复)。

于 2018-11-02T12:02:02.257 回答