PowerBI(一) : 如何将powerBI报表嵌入内部web应用程序?
最近做了一个PowerBI报表嵌入内部web应用系统的项目,分享一下主要步骤以及踩坑记录。
微软官网完整教程这里:https://learn.microsoft.com/zh-cn/power-bi/developer/embedded/embedded-analytics-power-bi
以下是我自己总结的主要步骤(仅供大家参考):
1. 你要付费买一个powerBI的账号。
2. 用这个powerBI账号登录 Azure 门户。
3. 在Azure 门户里选择 “应用注册” ,如果没有,就全局搜索一下。
4. 注册的时候需要特别注意一个地方,“账户类型” ,简单说,如果你希望web端用户每次进去都需要自己的powerBI账号登录查看报表,那就选择“仅此组织目录”。如果希望web端用户不需要登录即可查看报表,那就选择“任何组织目录”,就是选第一个和第二个的区别。

官方的说法是叫 “为组织嵌入内容” 和 “为客户嵌入内容”,区别就是登录不登录的问题。当然,对于这俩个类型,官方github给出的代码示例也不一样,比如你选择为“为客户嵌入内容” 官方不提供react版本代码。但其实自己也可以实现。
5. 在Azure 上 “应用注册” 好后,需要给这个应用赋予一定的访问权限,比如powerBI api的权限。
6. 在Azure 上 “应用注册” 好后,权限也设置完成后,需要复制这个应用的clientId、秘钥、租户ID等信息,给web端使用。
7. PowerBI客户端建立报表,发布报表,这个步骤相信会PowerBI的不用多说了。
8. PowerBI客户端报表完成后,需要去设置里面开启允许 应用访问 API。
9. 开始开发嵌入报表的web系统,我这边采用的是C# web api技术提供报表的后台服务,前端采用react + antd 技术。当然,你可以可以根据自己公司的技术要求,比如Java、python都可以。
主要的代码逻辑为:
- 复制Azure 上注册的 “应用” clientID 和秘钥去请求微软OAuth2身份验证接口,拿到 "访问token"
- 用这个"访问token" 去 请求powerBI的接口,获取“嵌入token"
- 把“嵌入token" 传到前端的powerBI报表组件中进行渲染
最终效果:(有问题可以给我留言)

PowerBI(一) : 如何将powerBI报表嵌入内部web应用程序?的更多相关文章
- 5.把报表集成到Web应用程序中-生成网页和导出两种方式
转自:https://wenku.baidu.com/view/104156f9770bf78a65295462.html 第四部分,把报表集成到Web应用程序中 用MyEclipse新建一个Web ...
- 如何把Power BI嵌入到Web应用中
(此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:这篇其实不是一个操作向导了,主要对Power BI的嵌入特性进行探讨. Power BI ...
- PowerBI更新 - 解决方案架构 - PowerBI Solution Architecture(一图胜万字!)
2019/04更新 参见这里 今天发福利啦!发福利啦!发福利啦! 企业的各种数据整合到PowerBI显示,浏览器,移动端显示关键指标. 一个很好的PowerBI解决方案的图!一图胜万字!你所需要知道的 ...
- 报表嵌入到.net系统页面
目录: 1. 问题描述 2. 情形一:报表整体嵌入在.net系统框架中 3. 情形二:报表嵌入.net系统的某个页面中 4.权限控制方式 5.嵌入问题解决 1. 问题描述编辑 报表部署到Web应用服务 ...
- 如何把Qlik Sense嵌入到Web应用中
(此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:这是一个给初学者(尤其对VS不熟悉的BI工程师)的入门操作向导. Qlik Sense是 ...
- C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子
C#WinForm父级窗体内Panel容器中嵌入子窗体.程序主窗体设计例子 在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点 主窗体窗体采用 ...
- 葡萄城报表介绍:Web 报表
Web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和 HTTP 的.全球性的.动态交互的.跨平台的分布式图形信息系统.Web 报表是以 Web 作为信息展示平台,可以 ...
- 海康威视 嵌入到web页面相关问题
因项目上面需求,接触到了海康威视的设备,要把他嵌入到web页面中,所以就开始了爬坑之路 刚开始不知道如何把设备的页面嵌入到项目的web页面中,直到我遇见了他——“WEB3.0控件开发包V1.0.9_C ...
- 使用 php 内部web服务器
使用 php 内部web服务器如网站目录 d:\web\index.php1.打开命令窗口,输入下列3条命令cd d:cd d:\web\index.phpphp -S localhost:80802 ...
- 第一个嵌入汇编的C程序
最近两天开始学习linux内核,看了赵炯博士的<linux内核完全注释>感觉受益匪浅.今天看到第三章 嵌入汇编部分,于是写了一个小程序试验了一下,用gcc编译通过.代码如下: #inclu ...
随机推荐
- Q:oracle 日期筛选
一.oracle where条件日期筛选 两种方法:tochar和todate todate:将字符串按照指定的格式输出,得到的是日期类型. to_date('2019-12-01','yyyy-MM ...
- Java基础知识题
在Java语言中,已知 a 为int 型,b 为 double型,c 为 float 型,d 为 char 型,则表达式 a+b*c-d/a 的 结果类型为(选一项)A.intB.doubleC.fl ...
- C++ STL的简单应用(vector容器专题)
#include <iostream> #include <string> #include <stdlib.h> #include <vector> ...
- 不同页面的 body设置
由于SPA页面的特性,传统的设置 body 背景色的方法并不通用. 解决方案:利用组件内的路由实现 第一种方式 // 实例创建之前 beforeCreate(){ document.querySele ...
- Error parsing HTTP request header 控制台报错分析与解决
控制台报错信息: org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing HTTP request hea ...
- keshe第三周
本周尝试在openeuler中运行java代码 实现bc库和crypto.gmsm 如下: 实现gmlib C语言库
- Appium--滑动屏幕、不常用API
1.滑动屏幕api #滑动屏幕 size = driver.get_window_size() #获取屏幕大小 width = size.get('width') #宽 height = size.g ...
- ArrayList学习
核心源码 package java.util; import java.util.function.Consumer; import java.util.function.Predicate; imp ...
- mysql数据库用sql语句在指定的一个字段后面添加一个字段
alert table (新增列的表名) add (新列名) comment (添加备注)+[after + 要跟随的字段名]可写可不写 ALTER TABLE ch_poliy_info AD ...
- 如何让Macbook Touch Bar 一直显示F1~F12
原始状态 修改过程 系统偏好设置 > 键盘 将Touch Bar Shous 修改为F1, F2 ,etc. 结果