一个excel文档里复制黏贴另外表单跟着变动_利用Excel连接Power BI,实现PPT报告自动输出...

​文/HALI就职于汽车行业战略部门
专注汽车市场信息情报收集和分析

因为工作需要,每月周期性的更新数据和撰写PPT 报告成为繁重的劳动。结果是很多时间花费在数据处理上,真正的分析工作,往往只能草草收场。不能坐以待毙,就要想想有没有更好的办法。

最早,我想到并采取的是Excel图表到PPT的链接。后来随着各种BI工具的普及,尝试学习并使用了Power BI。它实在强大,据说使用了SQL Server的数据引擎Vertipaq,数据处理速度飞一样。另外,可以处理的数据可以做到海量,加上是专业数据库,比较之下,Excel秒成渣。

于是尝试将工作平台转移到PowerBI。但是,最终的测试发现,微软不支持用户能自动与PPT嵌入图表(不知道为什么,但是看来微软想直接在PowerBI内部制作类似报告,与PPT不同,PowerBI的报告将更倾向于数据)。

虽然有第三方工具或插件可以嵌入PowerBI图表到PPT(如何在PPT中动态交互PowerBI报告?),但是需要联网等等,很麻烦。各位做报告的同学一定有经验,你绝对不希望PPT报告有任何技术问题,不然董事会上各位大佬干瞪眼等着刷新数据,呵呵。后果惨过没有报告。这就是报告一族面对的政治生态。简单说就是绝不允许任何问题。

平心而论,目前PowerBI的报告能力,颜色和文字能力,图表的定制能力,目前不及Excel和PPT。给分析人员看是非常够用了,快捷又方便。但是给管理层做报告,呵呵。领导看到PowerBI的报告,意见是质量一般。我也是做过几次才发现,PowerBI报告不能用其他字体,不能调整单个数据label,等等。有其他方法,太费劲。

这就尴尬了,PowerBI白学了。这么好的数据处理能力真的可惜了。曾经有一段时间尝试学习Excel PowerPivot,但是发现差异挺大,而且不能使用PowerBI的便捷图表方式和分组什么的真的是损失,貌似不能兼得了,怎么办呢?

搜google吧,功夫不负有心人,还真让我找到了解决方法-OLAP(OnlineAnalytical Processing)。应采总的邀约,把相关的内容汇总一下,在这里分享给大家。希望对需要经常更新PPT报告的人有帮助。

传统方式:Excel 数据图表和PPT的链接及自动数据更新

我的工作涉及数据分析图表和定期报告(PPT)。之前采用的方式是Excel维护数据,然后使用多个pivot table数据支持,制作数据图表。然后Excel内部的图表用黏贴链接的方式,黏贴进PPT里面。每个月数据更新时,把新增数据手工黏贴到数据源表,然后refresh all pivot table。然后打开PPT,提示是否更新数据,点yes。在无数次的屏幕抽动(抽筋一样闪动)之后,结束了图表更新。

这样做的好处是以透视表的方式固定了每月固定的工作流程,一定程度上实现了图标数据更新的自动化,节省大量时间。

但如果可以享受PowerBI的高效,又可以享受Excel和PPT的强大定制功能,还可以固定下来所有的工作步骤,然后一键刷新是不是就完美了?

PowerBI实际上可以理解为一个小规模的SQL Server,精简了很多东东,但是SSAS服务保留了。如果你运行PowerBI,通过任务管理器,你可以看到SSAS的服务一起运行了,SSAS服务就是留给兼容的外部程序访问数据库的,很幸运Excel里面提供了访问SSAS的组件。

这就让我们可以从PowerBI外部访问,并利用Excel的图表功能成为可能。

Excel链接PowerBI的方法有三种,下面一一介绍。

方法一:Excel手动连接PowerBI SSAS服务

打开pbix文件,然后打开DAX Studio(关于DAX Studio的使用请参考:DAX Studio:你迟早会用到的几个功能),复制pbix文件的ssas服务端口:

9d02d7461879e8d642ad3c7a4a1216ba.png

然后,打开Excel,新建一个文件。点击data>from other sources>fromanalysis services:

cb64a1659142c0165dec4d05753be1bd.png

把pbix的分析服务端口黏贴到里面:

2b05494c7725ddb51434f81314dd0f79.png

然后下一步,下一步,结束。注意,这一步我们建立了一个链接文件,它的存放位置在这里:链接文件是以端口号为开头的,容易区分。

7293ad2f36591ebafb40a652e4dbd6f9.png

然后Excel会提示你打算把用什么方式调用外部ssas服务的数据。当然PivotTable Report了:

7fab4880892a6d1e882e84a6d5626a7a.png

注意看下右侧的可选数据表和所有列,看看是不是都在了?

9430441e3b5c7ba8f7bd7ab1d4cf3a18.png

这里有个技巧。你会发现一些数字列不能被拖入value。怎么办呢?查阅了微软的官方文档,方法是在PowerBI里面给每个数字列做一个度量值。然后你会看到这些度量值(带西格玛∑符号)如下图:然后他们就可以被拖入value合并计算了。

c89d8be652d5da167a193fc4ebbfddad.png

然后根据需要做各种透视表吧。

这里建议大家再单独建立一个新的Excel文件,该文件专门用来制作最终的图表(管理层喜欢的那种各种定制图表,包含贵公司的各种文化和领导喜好)。

下一步是把OLAP文件里的数据链接黏贴到最终图表文件里面。(其实业务顺序可能是根据业务需要先做最终图表Excel文件,然后根据图表文件的数据需求再做OLAP pivot数据文件),最后把最终图表黏贴链接到PPT。

这里提醒一句,一定要在同时打开PowerBI和OLAP文件的情况下才能修改PowerBI文件里面数据表和列的名称。否则,OLAP文件找不到变更后的列和表名称。最好留一个专门做报告的PowerBI文件,不要随便修改。我做过实验,调整列的位置或增加列不会影响OLAP文件,所以可以随后增加分组等工作,不需要一开始都分好。

最后,还有个问题,每月数据更新。当pbix文档关闭并重新打开后数据端口会发生变化,怎么办呢?

用DAX studio查询新端口。然后打开一个新Excel尝试链接ssas端口。然后关闭Excel文件。下一步是关键,打开我们保留了很多透视表的OLAP Excel文档,选择pivot tools>connection properties:

4b971b87c7e6626180df66e92894ca6f.png

选择definition选项卡,选择connection file,Browse然后选择新端口号开头的链接文件。

e1179d552228b532016754b96d5b39e3.png

然后refreshall,屏幕抽动无数次,结束。

其他的更新步骤不多说了,Excel就是全部刷新,PPT在打开时更新数据就ok了。至于pbix文件的数据更新,请各位参考采总的星球文章,推荐同一文件夹里的新增更新方式。

因为Excel是调用PowerBI的服务,因此这些在Excel里面图表报告的数据调用,其实都是在PowerBI里面完成的,超级高效。

至此,我们即可以享受PowerBI的高效,又可以享受Excel和PPT的强大定制功能,还可以固定下来所有的工作步骤,以后一键刷新就好。当然有些图表还是需要适当调整样式。

以上是最经典的OLAP链接方式。但是,这种数据更新方式真的有点麻烦。有没有更快捷的方法呢?google告诉我有的。

方法二:利用宏文件自动连接PowerBI ssas服务

Google上还找到一个澳大利亚的大神写的一个专门的Excel VB宏,来实现一键自动链接PowerBI文件。也就是说你不再需要链接文件,不需要DAX Studio查询端口,不需要每次都建立链接文件,一键连好。这个哥们儿叫Matt Allington。你可以在「PowerBI星球」后台回复“Excel连接PowerBI”获取这个Excel宏文件。

我这里把VBA的代码放一下:

SubUpdateUserPath()

'developed by Matt Allington from http://Exceleratorbi.com.au user = Environ("LOCALAPPDATA") UserPath = user & "MicrosoftPower BIDesktopAnalysisServicesWorkspaces" Sheets("Connection").Range("B2") = UserPathEnd SubSubRefreshSSASConnection()' developed byMatt Allington from http://Exceleratorbi.com.auDim myTable AsListObjectUpdateUserPathRange("SSAS_Data").ListObject.QueryTable.RefreshBackgroundQuery:=FalsePort =Range("Port")Db =Range("DB")If Len(Port) =5 Then With ActiveWorkbook.Connections("PowerBID").OLEDBConnection .CommandText = Array("Model") .CommandType = xlCmdCube .Connection = Array( _ "OLEDB;Provider=MSOLAP.5;Integrated Security=SSPI;PersistSecurity Info=True;Initial Catalog=" & Db & ";Data " _ , _ "Source=localhost:" & Port & ";MDXCompatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update IsolationLevel=2" _ ) .RefreshOnFileOpen = False .SavePassword = False .SourceConnectionFile = "" .MaxDrillthroughRecords = 1000 .ServerCredentialsMethod = xlCredentialsMethodIntegrated .AlwaysUseConnectionFile = False .RetrieveInOfficeUILang = True End With With ActiveWorkbook.Connections("PowerBID") .Name = "PowerBID" .Description = "" End With ActiveWorkbook.Connections("PowerBID").Refresh

Else MsgBox "You must have exactly 1 instance of Power BI Desktop open",vbCritical

End If

End Sub

大家注意黑体和下划线的部分可能需要调整。(第一个部分指定了PowerBI的SSAS端口文件位置,可能因为安装的位置不同而不同,只装一个PowerBI软件,且是一路yes的不需要调整。

第二个部分,最大打开drill数可以调到最大10,000)

除了上述两种OLAP链接方式,还有别的办法吗?在星球贴出本文后,一个迪拜的星友 分享了另外一个实现方法。

方法三:利用Power BI Publisher

Power BIPublisher是微软自己做的一个Excel插件。看来微软也觉得让各位数据分析员每次更新数据都去重新建立链接文件太费力了。因此写了一个插件方便大家。

据她说:“可以从Excel界面登陆连接PowerBI的报告和数据。然后加载成透视表,刷新就跟Excel刷新一样也可以设置每次打开自动刷新。我们财务系统的所有数据都推到了dataflow里这样就不用从ERP里下载了。”

我去下载了测试。发现使用该插件的前提是PowerBI必须是Pro账户。所以,不给钱,官方是不会给你这个方便的。不过购买Pro的同学可以下载该插件,享受这一便利。


本文至此结束。所有操作,亲测可靠,各位有需要的亲可以尝试。

答应了采总写一篇文章,拖了一段时间,今天交差,请各位斧正,如果各位有新的方法和心得,也请分享,希望对大家的工作有所帮助,谢谢。

-精彩推荐-

采悟:Power BI数据分析实战:模拟高德城市交通健康榜​zhuanlan.zhihu.com
36880e73b56af86442b9bf9742d74f26.png
采悟:Power BI应用实战:批量爬取网页数据​zhuanlan.zhihu.com
0ffa8403111bd0ed57da33ef7144cd62.png
采悟:如何使用Power BI进行回流客户分析?​zhuanlan.zhihu.com
6144e36a09dfdbd69c64f2ac1e7ef9cd.png

喜欢了别忘了点赞哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

出现23.97帧率的原因

http://raytao.lofter.com/post/3d177_185a386 关于那些“格(Frame)”不得不说的事 今天早上,鄙人在社交网络发了这一系列的问题:请解释以下名词之间的关系或差异。帧,格,帧率,时基,…

使用ajax将数据显示在指定位置_AJAX学习主题之一

学习主题:AJAX删除用户功能实现根据视频中的讲解,完成以下内容简述删除功能的基本思路流程点击按钮获取当前元素中的用户uid,向服务器发起请求,将uid提交到服务器删除指定用户,浏览器获取浏览器响应结果。独立完成删除…

js日期比较大小_node.js 内存泄漏的秘密

每日前端夜话第276篇翻译:疯狂的技术宅作者:Giovanny Gongora来源:nodesource正文共:3955 字预计阅读时间:10分钟一直以来,跟踪 Node.js 的内存泄漏是一个反复出现的话题,人们始终希望对其复杂性…

win7+vs2015/13+caffe+matlab+python(CPU only)配置

首先声明本教程可以适用于vs2015 和vs2013 .以vs2015为例。 安装必备软件 vs 2015 /vs2013 matlab 2016a(64bit)推荐使用Anaconda 2.7 或者Miniconda 2.7这两个Python发布版本cmake 3.8.0 以上caffe-window: https://github.com/BVLC/caffe/tree/windows 可选软件&#xff1…

Performance Co-Pilot

Install Performance Co-Pilot 提前安装依赖 [rootiZrj97j6t7ih9hgz1me35hZ ~]# cat install.sh yum install -y docker yum install -y git yum install -y yum-utils-1.1.31-40.el7.noarch yum install lex yum install flex yum install -y bison yum install -y perl-ExtUt…

如何发布打包并发布自己的Android应用(APP)

第一步,在Eclipse中选择需要打包的项目,然后右键--选择Export,会弹出一个打包的提示框,如下图所示。 按Next之后,会继续出现一个提示框,这里你可以选择自己需要打包的项目(默认是刚才选中的&…

js变量提升_一道JS变量提升题

var a 0;if(true){a 1;function a(){};a 21;console.log(a);}console.log(a);// 21 1 当前上下文代码执行之前,会将带var/function的进行声明/定义。当遇到“{}”时,新版浏览器和老版浏览器的处理不一致。老版浏览器(IE10以下)…

Caffe训练过程:test_iter test_interval等概念

转载自http://blog.csdn.net/iamzhangzhuping/article/details/49993899 先上一张图,大家很熟悉的一张图。 首先说明一个概念:在caffe中的一次迭代iteration指的是一个batch,而不是一张图片。 下面主要说下2个概念: test_ite…

R的获取和安装

R的获取和安装 一、下载 R可以在CRAN(Comprehensive r archive network)http://cran.r-project.org上免费下载,可供选择的有Linux、Mac OS X和windows对应的二进制文件; 我这里选择的是windows版本。打开如下页面: bas…

扩展欧几里得算法求逆元_从辗转相除法到求逆元,数论算法初体验

今天是算法和数据结构专题的第22篇文章,我们一起来聊聊辗转相除法。辗转相除法又名欧几里得算法,是求最大公约数的一种算法,英文缩写是gcd。所以如果你在大牛的代码或者是书上看到gcd,要注意,这不是某某党,…

[翻译] Fast Image Cache

https://github.com/path/FastImageCache Fast Image Cache is an efficient, persistent, and—above all—fast way to store and retrieve images in your iOS application. Part of any good iOS applications user experience is fast, smooth scrolling, and Fast Image …

php练习 租房子

题目要求 1.封装类 <?php class DBDA {public $fuwuqi"localhost"; //服务器地址public $yonghuming"root";//用户名public $mima"";//密码 public $dbconnect;//连接对象//操作数据库的方法//$sql代表需要执行的SQL语句//$type代表SQL语…

centos 安装boost(caffe需要)

安装 由于安装caffe&#xff0c;要求boost的版本在1.55以上&#xff0c;而服务器上的刚好是1.54,所以进行了重装。 参考&#xff1a;《CentOS 7下编译安装Boost_1_57_0 》 不过由于pycaffe需要boost.python,因此需要在./b2时修改为./b2 –stage debug 才可以。而不能去掉py…

JAVA正则表达式介绍和使用

本文引用自 http://www.cnblogs.com/android-html5/archive/2012/06/02/2533924.html 技术博客 1.Java中在某个字符串中查询某个字符或者某个子字串 Java代码 String s "Shang Hai Hong Qiao Fei Ji Chang";    String regEx "a|F"; //表示a或F Pat…

集合框架中的接口及其实现类

Collection&#xff1a;集合层次中的根接口&#xff0c;JDK没有提供这个接口直接地实现类。Set&#xff1a;不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。List&#xff1a;是一个有序的集合&#xff0c;可以包含重复的元素。提供了按索引访问的方式。Map&#x…

C# 多线程 Parallel.For 和 For 谁的效率高?那么 Parallel.ForEach 和 ForEach 呢?

还是那句话&#xff1a;十年河东&#xff0c;十年河西&#xff0c;莫欺少年穷。 今天和大家探讨一个问题&#xff1a;Parallel.For 和 For 谁的效率高呢&#xff1f; 从CPU使用方面而言&#xff0c;Parallel.For 属于多线程范畴&#xff0c;可以开辟多个线程使用CPU内核&#x…

bigdecimal 小于等于0_图解小于 K 的两数之和

点击蓝色“五分钟学算法”关注我哟加个“星标”&#xff0c;天天中午 12:15&#xff0c;一起学算法作者 | P.yh来源 | 五分钟学算法题目描述 题目来源于 LeetCode 上第 1099 号问题&#xff1a;小于 K 的两数之和。给你一个整数数组 A 和一个整数 K&#xff0c;请在该数组中找出…

pdf 深入理解kotlin协程_Kotlin协程实现原理:挂起与恢复

今天我们来聊聊Kotlin的协程Coroutine。如果你还没有接触过协程&#xff0c;推荐你先阅读这篇入门级文章What? 你还不知道Kotlin Coroutine?如果你已经接触过协程&#xff0c;但对协程的原理存在疑惑&#xff0c;那么在阅读本篇文章之前推荐你先阅读下面的文章&#xff0c;这…

编译py-faster-rcnn的问题汇总及解决方法

按照官网 的提示&#xff0c;我开始安装faster rcnn&#xff0c;但是出现了很多问题&#xff0c;我将其汇总了起来&#xff0c;并提出了解决办法。 先说明一下我的配置&#xff1a; python : anaconda2linux: centos 6.9 安装faster rcnn请先参考&#xff1a;《cuda8cudnn4 F…

linux 安装python-opencv

三种方法&#xff1a; 1. pip 安装 &#xff1a; pip install opencv-python &#xff0c;最新版为opencv3安装后>>> import cv2 >>> print cv2.__version__参考&#xff1a;http://www.cnblogs.com/lclblack/p/6377710.html 2. anaconda的conda安装 ,可以指…