暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用Power BI enbedded实现Power BI 报表集成到应用中

Max讲IT 2017-12-06
1210

很多用户需要将报表集成在自己的应用,而应用的身份体系是属于私有的应用体系。这时候我们如何来实现集成呢?以下就是整个模拟集成的过程。

准备工作

因为是模拟,所以先去创建一个目录服务。如果是真实环境就是直接一套ad,不需要这样操作。

在portal.azure.com上创建一个目录服务。点击新建,搜索Azure Active Directory。 创建目录

创建了一个模拟目录

创建用户

使用此用户去powerbi注册免费的pro测试账号

注册完成后可以登录

创建一个工作区

制作一个测试报表发布到工作区

在制作一些仪表盘,基本准备完成,现在需要在应用中:http://pbienbedded.azurewebsites.net 中集成报表。集成报表分为2种:第一是用户拥有数据,也就是集成时候需要用户登录授权访问。第二是应用拥有数据,就是直接打开即可集成。一般来说用户都需要这样的集成方式。

注册应用

首先我们需要注册应用才能进行授权。建议只用powerbi注册工具进行注册,工具链接如下

https://dev.powerbi.com/apps

在这里apptype 选择 Native app(不知道为什么,图片一致无法显示

注册成功后会生成一个clientid,在portal.azure.com上可以找到注册好的应用,这时候需要更多权限设置.找到注册好的应用,点击所需权限,会看到power bi service 和 ad的相关权限。分别点击,进行浏览,设置如下

完成后点击授予权限。

应用注册完成

下载测试代码

下载下面的测试代码, app owns data。

https://github.com/Microsoft/PowerBI-Developer-Samples/tree/master/App%20Owns%20Data

下载后更改web.config.更改相应的参数,关键是需要使用到前面生成的clientid,报表id,和groupid,指的是在powerbi上发布报表的工作区id和报表id,可以在浏览报表的时候浏览器的url中找到。比如我的可以是

https://app.powerbi.com/groups/b146685b-9c7b-4daf-89de-1f911595dcef/reports/303dfcdd-d3ad-4ba1-a906-2e4c64dd275d/ReportSection

这里的 b146685b-9c7b-4daf-89de-1f911595dcef 就是groupid

303dfcdd-d3ad-4ba1-a906-2e4c64dd275d 是报表reportId

pbiUsername 指的是powerbi的user,这里测试就是使用的注册的username。

实际生产中用户名和密码不会配置在这里。作为demo就将相应的内容写到了config。如果需要浏览报表列表等操作,也可以调用api

 <add key="clientId" value="3d9812c5-6277-470a-b685-bb5ab92d18e2" />
   <add key="groupId" value="b146685b-9c7b-4daf-89de-1f911595dcef" />

   <!-- The id of the report to embed. If empty, will use the first report in group -->
   <add key="reportId" value="303dfcdd-d3ad-4ba1-a906-2e4c64dd275d" />

   <!-- Note: Do NOT leave your credentials on code. Save them in secure place. -->
   <add key="pbiUsername" value=" " />
   <add key="pbiPassword" value=" " />

配置好后发布应用,浏览即可得到集成效果

参考内容

使用javascript api     https://github.com/Microsoft/PowerBI-javascript/wiki    

更多的效果demo https://microsoft.github.io/PowerBI-JavaScript/demo/v2-demo/index.html

安全控制 https://docs.microsoft.com/zh-cn/power-bi/developer/embedded-row-level-security

令牌生成等都在 HomeController.cs 可以查看




// Create a user password cradentials.
 var credential = new UserPasswordCredential(Username, Password);

// Authenticate using created credentials
var authenticationContext = new AuthenticationContext(AuthorityUrl);
var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceUrl, ClientId, credential);

容量规划

以上调用api的过程和使用测试过程,就没有Power BI Embedded这个服务的感觉。事实上是发布了微软发布了 Power BI Premium,这是一个基于容量的新许可模型,可提高用户访问、共享和分发内容方式的灵活性。 产品/服务还为 Power BI 服务提高其他可伸缩性和性能。

通过引入 Power BI Premium,Power BI Embedded 和 Power BI 服务开始进行融合以推动在应用中嵌入 Power BI 内容的进展。 这意味着,在嵌入内容时,将拥有一个 API 外围、一组一致的功能以及对最新 Power BI 功能(如仪表板、网关和应用工作区)的访问权限。 

也就是说其实上面调用的API最后提供服务是Power BI Embedded来提供,由于是测试所以不需要去购买Power BI Embedded,在生产就需要安装需求进行规划购买。             

可参考以下文档:

Microsoft Power BI Premium 白皮书

规划 Power BI Enterprise 部署白皮书

更多问题我们可以一起探讨。

联系方式:maxcloud@outlook.com  ,

也可以访问www.maxbi.info获取更多信息。公众号信息同步

文章转载自Max讲IT,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论