如何把Power BI嵌入到Web应用中
(此文章同时发表在本人微信公众号“dotNET开发经验谈”,欢迎右边二维码来关注。)
题记:这篇其实不是一个操作向导了,主要对Power BI的嵌入特性进行探讨。
Power BI是微软的创新性(或者称之为敏捷型)BI产品,从发布之初就备受关注,因为它是一个只能以纯SaaS模式提供服务端的BI产品。目前Power BI其实是以两种方式提供服务端:
- Power BI Service。只能通过Office 365来购买订阅,一般作为一个独立的BI应用供企业内部使用。
- Power BI Embedded。只能通过Azure来购买,按使用量付费,主要满足ISV(独立软件供应商)在自身Web应用中集成BI功能提供给最终用户的需求。
所以要把Power BI嵌入到Web应用程序中,针对不同的提供方式,也有不同的嵌入方式。
通过Power BI Service嵌入
Power BI Service一般通过Azure Active Directory进行验证后(即你的Web应用必须使用AAD做验证),使用iframe把报表嵌入到应用页面中。比如MS Teams就使用这种方式集成了Power BI。同时还可以利用Power BI REST API来实时更新数据。下图展示了进行集成的整体流程:

微软已经很贴心的给出了一个示例和文档来指导大家进行Power BI Service的集成(都不需要我来写了):https://powerbi.microsoft.com/zh-cn/documentation/powerbi-developer-integrate-report/。大致步骤如下:
- 通过Office 365订阅Power BI服务(有免费可选),有了Office 365,自然就有AAD租户。当然也可以反过来,使用已有的AAD租户(必须是企业组织)来注册免费的Power BI服务。
- 注册你的Web应用,可以直接在Azure Portal中注册(建议使用这种方式),或者使用Power BI应用注册工具注册。以Power BI应用注册工具为例:App Type选择服务端应用,Redirect URL输入类似http://localhost:13526/这样的地址
- 把得到的Client ID和Client Secret填写到配置文件中,示例代码是项目的Settings.settings
- 运行Web应用,使用Office365帐号登录,获取报表的嵌入Url,就可以进行报表的嵌入浏览了
通过Power BI Embedded嵌入
考虑到Power BI Service主要用于企业内部,并且没有单独的服务器可供安装,为了解决ISV集成BI报表到自己产品的需求,微软特意在Azure中提供了Azure Power BI Embedded云服务。可以把Azure Power BI Embedded看作是Qlik Sense的OEM模式,只是它是在线的OEM服务。它的优点是:“通过使用Power BI Embedded服务,ISV就无需为了开发与维护可视化功能和BI控件而自行投入研发力量。这些可视化功能可以支持他们使用的全部设备,而ISV也能够充分地利用Power BI服务上不断出现的各种创新功能以及他们的全部价值”。老实说我也基于Qlik Sense构思了类似Power BI Embedded的东西,要解决的就是这样的问题,看来这个Idea还是有市场的。
Power BI Embedded嵌入方式比Power BI Service的简单些,最主要是通过AccessKey代替AAD验证,页面嵌入也是通过iframe来实现。当然访问后台的API是另外一套,名字叫Azure Power BI Embedded REST API,不过有.NET和JS的SDK可供下载。下图给出了一个嵌入步骤的概念模型:

简单说来就是:
- 一个开发者首先需要申请Azure订阅(可以多个)
- 在Azure中创建一个或多个Power BI工作区集合,获得名称和AccessKey
- 通过API来创建一个或多个Power BI工作区(工作区包含了报表、数据集等),获得工作区ID
- 通过API获取工作区内的报表等信息,并通过AccessKey来获得EmbedToken
- 利用iframe(实际微软提供了MVC的一些HtmlHelper和js供大家使用)来显示嵌入的报表
- 最终用户访问你的Web应用从而浏览报表
具体的步骤可以看官方的文档,已经写的足够好和详细了:https://docs.microsoft.com/zh-cn/azure/power-bi-embedded/power-bi-embedded-get-started
Power BI vs Qlik Sense
下面我们来对Power BI和Qlik Sense在嵌入Web应用这个方面进行一个简单比较:
| 比较点 | Power BI | Qlik Sense |
| iframe方式嵌入 | 支持 | 支持 |
| div方式嵌入 | 不支持 | 支持 |
| 仪表盘嵌入 | 支持 | 支持 |
| 报表/工作表嵌入 | 支持 | 支持 |
| 磁贴/可视化对象嵌入 | 支持 | 支持 |
| 嵌入后客户端操作 | 支持 | 支持 |
| 开发工具支持 | 弱 | 强 |
| 本地AD/Windows验证 | Embedded支持 | 支持 |
| Azure AD验证 | Service支持 | 支持(需在QMC中配置) |
| 自定义验证 | Embedded支持 | 支持 |
总体而言,Qlik Sense的嵌入灵活度和便捷性更高。但是Power BI这种租用服务的方式也有优势。
如何把Power BI嵌入到Web应用中的更多相关文章
- Power BI官方视频(2) Power BI嵌入到应用中的3种方法
今天给大家介绍3种将Power BI嵌入到应用中的方法. 本文原文地址:Power BI官方视频(2) Power BI嵌入到应用中的3种方法 Power BI系列文章地址:微软Power BI技术文 ...
- 如何把Qlik Sense嵌入到Web应用中
(此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:这是一个给初学者(尤其对VS不熟悉的BI工程师)的入门操作向导. Qlik Sense是 ...
- 免费生成二维码接口,可直接嵌入到web项目中,附带嵌入方法,任意颜色二维码,任意大小二维码!
在线体验连接:http://www.zhaimaojun.top/qrcode/ 你是否在项目中寻找方便而且免费的可以直接嵌入到项目中的二维码生成工具呢?你找到了这里,说明你已经找到了!不要犹豫直接拿 ...
- 微软Power BI 每月功能更新系列——7月Power BI 新功能学习
Power BI Desktop 7月产品功能摘要 7月是Power BI Desktop团队的重要发布!但由于官方延迟更新,我们的讲述也就更晚了一点,也许大家觉得没有必要了,都8月了,谁还看7月的? ...
- 微软Power BI技术文章与资源目录
下面是本博客原创的微软Power BI技术相关文章,对于部分转载文章和资源,会注明出处. 本博客将发布基于微软Power BI相关的基础入门文章,视频教程等资源,敬请关注. 个人建立的Power BI ...
- 2019微软Power BI 每月功能更新系列——3月Power BI 新功能学习
Power BI3月产品功能更新发布啦!本次新功能新增了热图和单选切片器:完善了新的DAX功能和对现有功能的改进(例如按钮和选择窗格):同时官方表示建模视图的全面改进也正在进行中~Woo~那么,本月更 ...
- 微软Power BI 每月功能更新系列——8月Power BI 新功能学习
Power BI Desktop 8月新功能摘要 Power BI 产品八月发布的新版本又刷新了大家所期待的一些功能,它可以更方便的解决我们从用户那里听到的一些最重要的请求:其中最令人兴奋的是我们的导 ...
- Power BI for Office 365 概览
伴随着数据量的日益增长,通过自服务式的商业智能把数据转换成辅助决策支持的工具,越来越成为迫切的需求.在以前,处理这些数据往往只是IT人员范围内的事,但是通过Power BI for Office 36 ...
- Power BI for Office 365(八)共享查询
在Power Query中,你不但可以搜索线上的数据,也可以把自己的数据发布到线上供其它人检索.Power Query通过Power BI站点提供了这种内置的分享功能.在Excel中,Anna打开了她 ...
随机推荐
- YII Install 安装
Download Yii is an open source project released under the terms of the BSD License. This means t ...
- Could not find or load main class org.gradle.wrapper.GradleWrapperMain解决办法
解决办法: gradlew is the gradle wrapper executable - batch script on windows and shell script elsewhere. ...
- [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!
引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...
- word2vec参数调整 及lda调参
一.word2vec调参 ./word2vec -train resultbig.txt -output vectors.bin -cbow 0 -size 200 -window 5 -neg ...
- Jquery 小技巧
[每个程序员都会的35个jQuery的小技巧]收集的35个jQuery的小技巧/代码片段,可以帮你快速开发
- python --> 递归 以及装饰器
一.递归知识 函数迭套执行,逐层执行之后,满足某个条件之后就会停止执行,将return值返回上层的函数,上层函数再逐层返回,最终返回给最初始函数. 递归在斐波那契数列的应用[斐波那契数列特点:前两个数 ...
- JDK,JRE,JVM,三者的区别于联系?
万事开头难,从基础抓起! 下载JDK官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK:Java Dev ...
- Java Web ——http协议响应报文
HTTP 响应报文 HTTP 响应报文由状态行.响应头部.空行 和 响应包体 4 个部分组成,如下图所示: 下面对响应报文格式进行简单的分析: 状态行:状态行由 HTTP 协议版本字段.状态码和状态码 ...
- git操作
svn终结,git时代来临 git是最好的分布式版本控制系统 廖雪峰的git讲的蛮不错,http://www.liaoxuefeng.com/wiki/0013739516305929606dd183 ...
- Ajax深入解析
AJAX:Asynchronous JavaScript And Xml(异步的JS和XML) 同步:客户端发起请求>服务端的处理和响应>客户端重新载入页面(循环) 异步:客户端实时请求& ...