在开发企业应用中,报表功能是当之无愧的重头戏,如何将数据通过合适的报表呈现出来成为每个项目人员必需面临的问题。而找到一款合适的报表往往都需要考率价格、开发、风格、支撑等因素。那么,我在这里给大家介绍一款由微软提供的可视化报表工具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报表展示的更多相关文章

  1. .NET Core2使用Azure云上的Iot-Hub服务

    基于工业4.0大背景下的工业物联网是近几年内热门的话题,依靠信息化技术企业可以实现数字化转型,生产可以实现智能化制造,设备可以实现自动化运作.然而,海量的数据采集是整个建设过程的基础环节,如何处理与利 ...

  2. 关于将Azure云上磁盘导出-使用VirtualBox转换成vmdk格式的方法记录

    在工作中,经常会遇到虚拟磁盘文件格式的转换需求,尤其是在虚拟化迁移及云环境迁移到DC的虚拟化环境中 或者中转处理,如最近笔者遇到一个需要将Azure Cloud上的磁盘导出到VMware中,但Azur ...

  3. azure 云上MySQL最新版本 MySQL5.7.11 批量自动化一键式安装 (转)

    --背景云端 以前都喜欢了源码安装mysql,总觉得源码是高大上的事情,不过源码也需要时间,特别是make的时候,如果磁盘和cpu差的话,时间很长很长,在虚拟机上安装mysql尤其甚慢了. 现在业务发 ...

  4. 在Azure云上实现postgres主备切换

    以下是工作上实现postgres主备切换功能所用到的代码和步骤,中间走了不少弯路,在此记录下.所用到的操作系统为centos 7.5,安装了两台服务器,hostname为VM7的为Master,VM8 ...

  5. AZURE云上 mkfs.ext4 /dev/sdc 导致宕机问题解决纪实

    )开机启动挂载配置 [root@pldb2 ~]# vim /etc/fstab You have new mail in /var/spool/mail/root [root@pldb2 ~]# m ...

  6. 在阿里云Windows Server 上部署ASP .NET CORE2.0项目

    近期使用ASP.NET Core2.0对博客进行了重写,在部署到服务器时遇到了一些问题,来记录一下留用. 配置环境 安装 .Net Framework3.5 在IIS管理器上直接开启,这里总是失败,上 ...

  7. [转]在 Azure 云服务上设计大规模服务的最佳实践

    本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...

  8. 在ASP.NET Core2上操作MongoDB就是能这么的简便酷爽(自动完成分库分表)

    NoSQL是泛指非关系型的数据库,现今在我们的项目中也多有使用,其独特的优点为我们的项目架构带来了不少亮点,而我们这里的主角(MongoDB)则是NoSQL数据库家族中的一种.事实上,NoSQL数据库 ...

  9. 将asp.net core2.0项目部署在IIS上运行

    原文:将asp.net core2.0项目部署在IIS上运行 前言:  与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是独立运行的.它独立运行在控 ...

随机推荐

  1. web开发的功能备忘录

    总体设计 Web项目开发中,我们可以根据不同的功能,将整个系统的功能进行划分.系统功能总体来说可以划分为两个模块:系统的必备功能和逻辑业务功能. 下面主要是分析一下系统的必备功能,所谓系统的必备功能是 ...

  2. multipart/form-data boundary 说明

    含义 ENCTYPE="multipart/form-data" 说明: 通过 http 协议上传文件 rfc1867协议概述,jsp 应用举例,客户端发送内容构造 1.概述在最初 ...

  3. Springboot 配置文件加解密

    功能介绍 在Spring boot开发过程中,需要在配置文件里配置许多信息,如数据库的连接信息等,如果不加密,传明文,数据库就直接暴露了,相当于"裸奔"了,因此需要进行加密处理才行 ...

  4. probably another instance of uWSGI is running on the same address (127.0.0.1:9090). bind(): Address already in use

    probably another instance of uWSGI is running on the same address (127.0.0.1:9090). bind(): Address ...

  5. MYSQL, REDIS 等数据库的介绍

    MySQL: 数据库概述 MySql安装和基本管理 MySQl创建用户和授权 初始mysql语句 库的操作 表的操作 数据类型 数据类型(2) 完整性约束 外键的变种 三种关系 数据的增删改 单表查询 ...

  6. Media Queries 媒体查询

    1.什么是媒体查询 媒体查询可以让我们根据设备显示器的特性(如视口宽度.屏幕比例.设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成.媒体查询中可用于 ...

  7. 迷你MVVM框架 avalonjs 1.2.6发布

    avalon.mobile 针对GCC压缩器进行优化 avalon.mobile对浏览器是否支持触屏使用更好的判定 监控数组的splice,remove,removeAt进行了重构,修改直接删掉列表的 ...

  8. spring mvc请求参数中文乱码解决方案

    POST 请求 在web.xml中加上增加过滤器 <filter> <filter-name>encodingFilter</filter-name> <fi ...

  9. Linux下Thunderbird要安装的插件

    网络时代,总少不了跟邮件打交道,日常生活使用时多数是直接用网页版邮箱,在职场中一般要求用邮件客户端.使用Windows的朋友一般要么用Outlook,要么用Foxmail,其实,我们还有一个很不错的选 ...

  10. 4-圆数Round Numbers(数位dp)

    Round Numbers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14947   Accepted: 6023 De ...