如何把Power BI嵌入到Web应用中

(此文章同时发表在本人微信公众号“dotNET开发经验谈”,欢迎右边二维码来关注。)web

题记:这篇其实不是一个操做向导了,主要对Power BI的嵌入特性进行探讨。api

Power BI是微软的创新性(或者称之为敏捷型)BI产品,从发布之初就备受关注,由于它是一个只能以纯SaaS模式提供服务端的BI产品。目前Power BI实际上是以两种方式提供服务端:服务器

  1. Power BI Service。只能经过Office 365来购买订阅,通常做为一个独立的BI应用供企业内部使用。
  2. 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来实时更新数据。下图展现了进行集成的总体流程:app

Overview

微软已经很贴心的给出了一个示例和文档来指导你们进行Power BI Service的集成(都不须要我来写了):https://powerbi.microsoft.com/zh-cn/documentation/powerbi-developer-integrate-report/。大体步骤以下:工具

  1. 经过Office 365订阅Power BI服务(有免费可选),有了Office 365,天然就有AAD租户。固然也能够反过来,使用已有的AAD租户(必须是企业组织)来注册免费的Power BI服务
  2. 注册你的Web应用,能够直接在Azure Portal中注册(建议使用这种方式),或者使用Power BI应用注册工具注册。以Power BI应用注册工具为例:App Type选择服务端应用,Redirect URL输入相似http://localhost:13526/这样的地址
  3. 把获得的Client ID和Client Secret填写到配置文件中,示例代码是项目的Settings.settings
  4. 运行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可供下载。下图给出了一个嵌入步骤的概念模型:spa

简单说来就是:rest

  1. 一个开发者首先须要申请Azure订阅(能够多个)
  2. 在Azure中建立一个或多个Power BI工做区集合,得到名称和AccessKey
  3. 经过API来建立一个或多个Power BI工做区(工做区包含了报表、数据集等),得到工做区ID
  4. 经过API获取工做区内的报表等信息,并经过AccessKey来得到EmbedToken
  5. 利用iframe(实际微软提供了MVC的一些HtmlHelper和js供你们使用)来显示嵌入的报表
  6. 最终用户访问你的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这种租用服务的方式也有优点。

相关文章
相关标签/搜索