利用DAX Studio连接PowerBI数据集到Excel并实现数据刷新

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

利用DAX Studio连接PowerBI数据集到Excel并实现数据刷新

  2020-10-06 我要评论
  1. 背景

周期性的更新数据和撰周报月报成为繁重的劳动。很多时间花费在数据处理上,而真正的分析工作,往往只能草草收场,周报月报的质量也难以得到提高。
使用Power BI对图表进行可视化处理,效果和稳定性是杠杠的,但是总有一些表格是需要在Excel里完成的。可是微软不支持用户能自动与PPT嵌入图表(也许是微软想直接在PowerBI内部制作类似报告,但是不得不说做出高大上的演讲报告方面,PowerBI只是个弟弟)。目前PowerBI的报告能力,颜色和文字能力,图表的定制能力,目前不及Excel和PPT。给分析人员看是非常够用了,快捷又方便。但是给管理层做报告,呵呵。领导看到PowerBI的报告,意见是质量一般。我也是做过几次才发现,PowerBI报告不能用其他字体,不能调整单个数据label,等等。
虽然有第三方工具或插件可以嵌入PowerBI图表到PPT,但是需要联网等等,万一刷新不出来怎么办呢。各位做报告的同学一定有经验,你绝对不希望PPT报告有任何技术问题,不然董事会上各位大佬干瞪眼等着刷新数据,呵呵。后果惨过没有报告。这就是报告一族面对的政治生态。简单说就是绝不允许任何问题。
而光有Excel PowerPivot,可视化又不够?一套数据源两吃是多么迫切的需求!!
在微信公众号POWERBI星球 上终于找到了一篇解决方法,现把亲测的结果汇总在这里。希望对需要经常更新数据分析报告的同行有帮助。
从PowerBI外部访问,并利用Excel的图表功能成为可能。
Excel链接PowerBI的方法有三种,下我亲测了前两种:

  1. 方法一:Excel手动连接PowerBI SSAS服务
    1.1Excel通过DAX Studio找到端口号 ,保存数据模型文件,连接到powerbi数据集。
    1.1.1打开pbix文件,然后打开DAX Studio,复制pbix文件的ssas服务端口:
    在这里插入图片描述
    1.1.2然后,打开Excel,新建一个文件。点击数据>自其它数据来源>来自Analysis Services:
    在这里插入图片描述
    1.1.3把pbix的分析服务端口黏贴到里面,然后下一步>下一步在这里插入图片描述
    在这里插入图片描述
    1.1.4注意点两次下一步后出现的这个窗口,这一步我们建立了一个数据模型的链接文件,点击浏览可以看到它的存放路径:链接文件是以端口号为开头的,容易区分。这个数据模型model文件路径就是以后更新数据会用到的。稍后再详细说。
    点击完成,就可以将这个数据模型model文件保存好了。
    在这里插入图片描述
    在这里插入图片描述
    1.1.5然后Excel会提示你打算把用什么方式调用外部ssas服务的数据。当然 数据透视表 了。
    在这里插入图片描述
    注意看下右侧的字段列表里 可选数据表和所有列,看看是不是都在了?在这里插入图片描述
    这里有个坑or技巧。你会发现一些数字列不能被拖入value。怎么办呢?查阅了微软的官方文档,方法是在PowerBI里面给每个数字列做一个度量值。然后你会看到这些度量值(带西格玛∑符号)如下图:然后他们就可以被拖入value合并计算了。然后根据需要做各种透视表吧。
    建议大家再单独建立一个新的Excel文件,该文件专门用来制作最终的图表(管理层喜欢的那种各种定制图表,包含贵公司的各种文化和领导喜好)。
    tips1:下一步是把OLAP文件里的数据链接黏贴到最终图表文件里面。(其实业务顺序可能是根据业务需要先做最终图表Excel文件,然后根据图表文件的数据需求再做OLAP pivot数据文件),最后把最终图表黏贴链接到PPT。
    tips2:一定要在同时打开PowerBI和OLAP文件的情况下才能修改PowerBI文件里面数据表和列的名称。否则,OLAP文件找不到变更后的列和表名称。最好留一个专门做报告的PowerBI文件,不要随便修改。我做过实验,调整列的位置或增加列不会影响OLAP文件,所以可以随后增加分组等工作,不需要一开始都分好。
    tips3:使用Excel时一定要保持PowerBI文件处于打开状态,不然Excel容易出现报错无法使用
    1.2如何更新Excel表格的数据
    每月数据更新。当pbix文档关闭并重新打开后数据端口会发生变化,怎么办呢?我找到了两个办法,一个手动的,一个VAB语言的。其中手动的已经亲测邮箱,源数据和新添加的字段,度量值都能更新。
    1.2.1手动更新
    每次打开pbix文档,用DAX studio查询都会生成一个新的端口,我们把这个新端口,在新建的Excel里保存成数据模型文件,然后把数据模型文件更新为为有很多表格的那个Excel文档的数据源就行。
    1.2.1.1打开一个新建Excel,重复前面1.1.1至1.1.4这几步的操作,新建一个链接ssas端口的数据模型文件。然后关闭新建的Excel文件。
    1.2.1.2下一步是关键,打开我们保留了很多透视表的OLAP Excel文档,点击其中随便一个透视表的单元格,选项栏里就会出现分析和设计两栏,选择分析>更改数据源>连接属性:
    在这里插入图片描述
    1.2.1.3选择“定义”选项卡,选择连接文件,浏览然后选择我们刚才保存的新端口号开头的数据模型的连接文件。连接名称处也可以手动改成新的端口号的名字,不改的话不会变。
    在这里插入图片描述
    1.2.1.4 然后全部更新,结束。

tips:如果原始数据有更新,一定要先pbix文档更新完毕,再有很多图表的Excel文档更新,Excel文档里才会是最新的数据。
因为Excel是调用PowerBI的服务,因此这些在Excel里面图表报告的数据调用,其实都是在PowerBI里面完成的,超级高效。
至此,我们即可以享受PowerBI的高效,又可以享受Excel和PPT的强大定制功能,还可以固定下来所有的工作步骤,以后一键刷新就好。当然有些图表还是需要适当调整样式。
以上是最经典的OLAP链接方式。但是,这种数据更新方式真的有点麻烦。其他的方法先放在这里,有兴趣的小伙伴可以验证 了在评论里告诉我一下。
1.2.2利用宏文件自动连接PowerBI ssas服务
方法二:利用宏文件自动连接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 & “**\Microsoft\Power BIDesktop\AnalysisServicesWorkspaces **”
Sheets(“Connection”).Range(“B2”) = UserPath
End Sub
SubRefreshSSASConnection()
’ developed byMatt Allington from http://Exceleratorbi.com.au
Dim myTable AsListObject
UpdateUserPath
Range(“SSAS_Data”).ListObject.QueryTable.RefreshBackgroundQuery:=False
Port =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链接方式,微软自己其实也发现了大家的需求,推出了一个插件。
2.pro版利用在线powerbi的“在Excel里分析”
亲测可用,但是需要开通pro版
因为相当于使用云SSAS功能,一方面是需要将pbix文档上载,并设置好各数据源的网关才能实现更新,
连接的每一步操作的响应速度较慢,增加了很多不确定性因素(比如加班的晚上,突然怎么也加载不了新数据,会不会很崩溃),从稳定性考虑还是推荐上面的本地方法。
另外很多的公司数据安全也不允许这样的数据上传操作

在Excel里分析功能的官网介绍

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们