从C#调用Power Bi仪表板

时间:2019-08-03 07:00:49

标签: .net winforms powerbi

我需要根据用户输入动态创建丰富的ui仪表板。我可以从Windows窗体应用程序调用Power Bi仪表板吗?

1 个答案:

答案 0 :(得分:1)

这是example在WPF应用程序中的实现方式,但是唯一的区别是WPF中的InvokeScript方法在WebBrowser本身中,而在WinForms中则在WebBrowser.Document中。此示例说明如何将Power BI元素嵌入本机桌面应用程序(WPF,WinForms等)中。

首先,您需要知道有两种嵌入Power BI的模式-user owns dataapp owns data。在第一种模式下,嵌入时,用户将使用其自己的Power BI Pro帐户对自己进行身份验证,即每个用户都需要Power BI Pro许可证。对于后一个,您仅需要一个“主帐户”,该帐户将用于身份验证。实现上的差异不是很大,因此我将描述app owns data

您需要执行以下操作:

  • 注册应用程序-转到dev.powerbi.com/apps并注册本机应用程序。选择授予它的权限(如果不确定,对于您的第一个测试,只需将它们全部授予)。复制Guid-这是应用程序ID,也就是客户端ID。

  • 下一步是从您的应用程序进行身份验证并获取访问令牌。为此使用Azure Active Directory Authentication Library (ADAL)-调用acquireToken类的某些AuthenticationContext方法。

  • 使用此访问令牌来调用Power BI REST API并获取要嵌入的元素的embedUrl,例如report

  • 使用Power BI JavaScript client实际嵌入此元素。您需要初始化一个embed configuration class并传递有关元素类型(报告,仪表板,磁贴),在何处查找(embedUrl),身份验证(访问令牌),其他一些配置选项(显示或隐藏过滤器窗格,导航)的信息等),要应用的过滤器等。如果您将使用上面获得的访问令牌,请将tokenType设置为AAD。该令牌具有许多特权,因此出于安全原因,您可能需要使用Embed令牌。在这种情况下,请使用访问令牌再次调用REST API(例如Reports GenerateTokenInGroup)。

  • JavaScript客户端的
  • 调用powerbi.embed方法传递嵌入式配置,以在您的应用程序中可视化此Power BI元素。