在开发企业应用中,报表功能是当之无愧的重头戏,如何将数据通过合适的报表呈现出来成为每个项目人员必需面临的问题。而找到一款合适的报表往往都需要考率价格、开发、风格、支撑等因素。那么,我在这里给大家介绍一款由微软提供的可视化报表工具Power BI,并通过ASP.NET Core2程序调用云端的报表(国内的Azure云),并用代码方式将报表与项目程序集成起来,以供你有个更好的选择。
Power BI
Power BI 是一套商业分析工具,用于在团队组织中提供数据报表呈现,并支持多种不同的数据源连接,可生成美观的报表并进行发布,供团队人员在 Web端与和移动端上使用。微软Power BI 工具同时提供一个PC桌面版的客户端“Power BI Desktop”帮助用户来设计报表,还提供了一套基于Azure云端的报表发布部署环境“Power BI Embedded”。而这里我们主要介绍借助“Power BI Embedded”完成报表集成。如下是跟Power BI相关的网址:
Power BI 中文官网:https://powerbi.microsoft.com/zh-cn/
Power BI Embedded 中文官网:https://powerbi.microsoft.com/zh-cn/developers/embedded-analytics/isv/
准备
在着手开始实现之前咱们需准备一些必要的环境,如下:
1、在Azure上创建一个名为“iot-pbi”的Power BI 工作区集合,并获取其访问Key,留待后面使用。
2、通过Power BI Desktop工具来设计一个报表名为“work1.pbix”,并保存到本地磁盘。
3、从Github上下载一个由微软开源的管理Azure端Power BI工作区的命令行工具”ProvisionSample“的代码,使用VS2017打开项目后并编译它。代码地址:https://github.com/Azure-Samples/power-bi-embedded-integrate-report-into-web-app。
4、成功编译后在其bin目录找到“ProvisionSample.exe.config”文件,将其打开,并按自身情况填写,如下:
<appSettings file="Cloud.config"> <!-- Azure订阅id--> <add key="subscriptionId" value="" /> <!-- Azure资源分组名称--> <add key="resourceGroup" value="" /> <!-- Powerbi工作区集合名称 --> <add key="workspaceCollectionName" value="" /> <!-- Powerbi工作区集合名称访问key --> <add key="accessKey" value="" /> <!-- Powerbi工作区id--> <add key="workspaceId" value="" /> <!-- Azure登录账号 --> <add key="username" value="" /> <!-- Azure登录密码 --> <add key="password" value="" /> </appSettings>
5、用VS2017开发工具创建一个ASP.NET Core2带视图的项目名“WebApplication1”。
实现
通过上述的准备后,咱们就可以进入具体的发布与集成工作了,如下:
1、因为Azure的用户台上暂时没法直接创建Power BI的工作区与报表,所以我们必需借助从Github下载编译的工具“ProvisionSample”来完成Power BI的工作区与报表的管理工作。在bin目录下找到“ProvisionSample.exe”文件启动它,截图如下:
2、依次输入命令“1”、“6”来创建一个新的工作区,并获取该工作区的ID。
3、依次输入命令“2”、“3”来将本地磁盘的文件“work1.pbix”导入到Azure端,并获取该报表的ID。
4、通过上面几步后我们已将本地的报表发布到Azure云端了,那么咱们下一步就来看看如何在ASP.NET Core2项目集成该云端的报表吧。首先,需在ASP.NET Core2项目中通过Nuget管理器引用第三方库“PowerBI.NetStandard.Api”(Azure官网提供的类库“Microsoft.PowerBI.Core”暂时不支持ASP.NET Core),该库的作用是帮助我们可以很简便的获取报表授权的Token,后端代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; namespace WebApplication1.Controllers { public class PowerbiController : Controller { //工作区集合名称,按自身情况填写 private string workspaceCollection = ""; //工作区id,按自身情况填写 private string workspaceId = ""; //报表id,按自身情况填写 private string reportId = ""; //工作区集合访问key,按自身情况填写 private string token = ""; public IActionResult Index() { //获取报表访问的授权token var embedToken = PowerBIToken.CreateReportEmbedToken(workspaceCollection, workspaceId, reportId); var ebToken = embedToken.Generate(token); ViewBag.StrToken = ebToken; return View(ViewBag); } } }
5、后端代码编写完成后,在视图层加入如下前端代码:
<script src="https://microsoft.github.io/PowerBI-JavaScript/demo/node_modules/jquery/dist/jquery.js"></script> <script src="https://microsoft.github.io/PowerBI-JavaScript/demo/node_modules/powerbi-client/dist/powerbi.js"></script> <div id="reportContainer" style="width:100%;height:850px;"></div> <script> var token ='@ViewBag.StrToken'; var embedConfiguration = { type: 'report', accessToken: token, id: 'b5904f26-47cc-4455-9025-06258ea5d8f5', embedUrl: 'https://embedded.powerbi.cn/appTokenReportEmbed' }; var reportContainer = $('#reportContainer'); var report = powerbi.embed(reportContainer.get(0), embedConfiguration); </script>
6、至此,基于ASP.NET Core2项目的前后端代码就全部编写完成,运行项目后效果如下:
总结
1、Azure云的用户台暂时没提供管理Power BI工作区、报表的功能,所以这里借助开源工具“ProvisionSample”来完成管理。
2、Power BI发布到网页前端后是通过由后端生成的一个Token来完成身份认证的,如果没有该Token报表则无法正常打开呈现。
3、Azure官网提供的类库“Microsoft.PowerBI.Core”暂时不支持ASP.NET Core,这里使用第三方库“PowerBI.NetStandard.Api”来获取报表的授权Token。
声明
本文为作者原创,转载请备注出处与保留原文地址,谢谢。如文章能给您带来帮助,请点下推荐或关注,感谢您的支持!
ASP.NET Core2调用Azure云上的PowerBI报表展示的更多相关文章
-
.NET Core2使用Azure云上的Iot-Hub服务
基于工业4.0大背景下的工业物联网是近几年内热门的话题,依靠信息化技术企业可以实现数字化转型,生产可以实现智能化制造,设备可以实现自动化运作.然而,海量的数据采集是整个建设过程的基础环节,如何处理与利 ...
-
azure 云上MySQL最新版本 MySQL5.7.11 批量自动化一键式安装 (转)
--背景云端 以前都喜欢了源码安装mysql,总觉得源码是高大上的事情,不过源码也需要时间,特别是make的时候,如果磁盘和cpu差的话,时间很长很长,在虚拟机上安装mysql尤其甚慢了. 现在业务发 ...
-
在Azure云上实现postgres主备切换
以下是工作上实现postgres主备切换功能所用到的代码和步骤,中间走了不少弯路,在此记录下.所用到的操作系统为centos 7.5,安装了两台服务器,hostname为VM7的为Master,VM8 ...
-
AZURE云上 mkfs.ext4 /dev/sdc 导致宕机问题解决纪实
)开机启动挂载配置 [root@pldb2 ~]# vim /etc/fstab You have new mail in /var/spool/mail/root [root@pldb2 ~]# m ...
-
在阿里云Windows Server 上部署ASP .NET CORE2.0项目
近期使用ASP.NET Core2.0对博客进行了重写,在部署到服务器时遇到了一些问题,来记录一下留用. 配置环境 安装 .Net Framework3.5 在IIS管理器上直接开启,这里总是失败,上 ...
-
[转]在 Azure 云服务上设计大规模服务的最佳实践
本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...
-
在ASP.NET Core2上操作MongoDB就是能这么的简便酷爽(自动完成分库分表)
NoSQL是泛指非关系型的数据库,现今在我们的项目中也多有使用,其独特的优点为我们的项目架构带来了不少亮点,而我们这里的主角(MongoDB)则是NoSQL数据库家族中的一种.事实上,NoSQL数据库 ...
-
将asp.net core2.0项目部署在IIS上运行
原文:将asp.net core2.0项目部署在IIS上运行 前言: 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是独立运行的.它独立运行在控 ...
-
ASP.NET Core 中文文档 第二章 指南(3)用 Visual Studio 发布一个 Azure 云 Web 应用程序
原文:Getting Started 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘).刘怡(AlexLEWIS).何镇汐 设置开发环境 安装最新版本的 Azure S ...
随机推荐
-
【分块打表】bzoj3758 数数
验证一个数是不是优美的:设数位之和为sum,若sum mod 2 != 0,则不优美.否则考虑枚举这个数的每一位,将之前所有位任意相加产生的所有 数字和 和 当前位 的和塞到集合里,最终判断集合中是否 ...
-
jquery源码学习之queue方法
队列模块的代码结构 静态方法jQuery下有queue,dequeue,_queueHooks这三种方法:静态方法不建议直接在外部调用: 实例方法.queue,.dequeue,.clearQueue ...
-
ci创建zip
public function createZip() { $this->load->library("zip"); $name = "test.text&q ...
-
Linux shell的标准输入、输出和错误
编译文件时,若编译过程时间长,可以将 标准错误 重定向 输出到一个文件中 2 > 1.txt 也可以通过管道 重定向 到 标准输出 2 > &1 ...
-
CI如何接受POST请求中的JSON数据
PHP默认只识别application/x-www.form-urlencoded标准的数据类型 “php://input可以读取没有处理过的POST数据.相较于$HTTP_RAW_POST_DATA ...
-
CentOS7.0关于libguestfs的bug
libguestfs,libguestfs-tools是用来在不启动虚拟机的情况下,快速简单访问虚拟机磁盘的工具. 今天在CentOS7.0系统上通过guestmount命令去mount虚拟机磁盘的时 ...
-
C++学习之路,漫长而遥远
一.C/C++语言 如果你的基础很差, 建议不要一开始就学C++语言,从C开始学起,对程序有个初步的认识,循序渐进.C语言的书嘛,先买一本 300 页以内的,把书中的每一个例子都通过键盘敲打进去到 V ...
-
Cookie、LocalStorge、SesstionStorge 的区别和用法
前言 总括:详细讲述Cookie.LocalStorge.SesstionStorge的区别和用法. 1. 各种存储方案的简单对比 Cookies:浏览器均支持,容量为4KB UserData:仅IE ...
-
设置静态IP
设定IP $sudo vi/etc/network/interfaces autolo iface lo inet loopback 加入下面内容 autoeth0 iface eth0inet st ...
-
MAC地址格式小结
之前一段时间在做网卡驱动的工作,如今产品量产,利用ifconfig eth hw ether在配置mac地址时发现一个问题, 随机配置一个mac地址,发现有的会报出Cannot assign requ ...