个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第5波-使用DAX查询从PowerbiDeskTop中获取数据源
PowerbiDeskTop可以连接几乎一切的数据源,并且可以存储几乎无限大的数据量,在powerbi建模过程中,Excel的powerpivot与PowerbiDeskTop对比,首先是PowerbiDeskTop,无论性能上还是功能上都处于优势,PowerbiDeskTop每个月不断地迭代更新,除了在可视化组件方面有更新,在SSAS的建模内核上也是处于最新。
Excel2013的SSAS级别是1103,对标Sqlserver2012/2014
Excel2016的SSAS级别是1200,对标Sqlserver2016
poweribDeskTop是最新的1400。对标Sqlserver2017
若需要进行数据建模,没有理由不使用PowerbiDeskTop而退而使用Excel。
当然问题来了,PowerbiDeskTop的使用广度和使用深度,都远远没法和Excel相提并论,为了单纯的建模方便或用户使用方便而需要在Excel和PowerbiDeskTop之间做二选一的抉择的确让人非常左右为难。
自从Excel催化剂的诞生,问题已经从二选一变成了强强联手,各自做各自最擅长的,鱼和熊掌都可兼得的理想人生从此拉开了帷幕!
文章出处说明
原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。
简书原文地址:https://www.jianshu.com/p/21b2ca8fd2b8
系列文章
Excel催化剂安装过程详解及安装失败解决方法 - 简书https://www.jianshu.com/p/4efcee38175a
Excel催化剂功能第1波-工作表导航 - 简书 https://www.jianshu.com/p/d9b2ae29cebe
Excel催化剂功能第2波-数字格式设置 - 简书 https://www.jianshu.com/p/a758ac3e77e2
Excel催化剂功能第3波-与PowerbiDesktop互通互联 - 简书https://www.jianshu.com/p/e05460ad407d
Excel催化剂功能第4波-一大波自定义函数高级应用,重新定义Excel函数的学习和使用方法 - 简书 https://www.jianshu.com/p/534803771c20
Excel催化剂功能第5波-使用DAX查询从PowerbiDeskTop中获取数据源 - 简书https://www.jianshu.com/p/21b2ca8fd2b8
Excel催化剂功能第6波-导出PowerbiDesktop模型数据字典 - 简书https://www.jianshu.com/p/bc26a8dcdfce
视频演示
此篇文章功能较多,请仔细阅读文字,并结合实操练习,视频演示打算后续弄个直播之类的方式供大家现场观看,重点演示大家感兴趣或有疑问的部分,后续有视频后再提供出来。
Excel透视表向PowerbiDeskTop发出MDX查询
当关系型数据库可以使用SQL和数据库内的表进行查询时,数据从数据库存储到最终查询使用提供了很大的便利性,而且SQL查询也因其简单易学,功能强大,在数据工作者群体中风靡全球。
从第3波功能中,大家已经见识到Excel可以和PowerbiDeskTop进行数据交互的方式是以透视表的方式查询PowerbiDeskTop,通过透视表的字段拖拉,立马生成相应的查询结果,已经解决了大部分的分析场景需求。因实在没有什么比透视表更容易使用的同时又可以快速实现所需的数据结果,说句不过份的话,比开发人员亲手写SQL查询得到的结果还要方便快捷。因透视表访问的是PowerbiDeskTop的多维数据模型,多个表之间已经建立好关系和复杂的度量值已经在模型中生成,直接从透视表字段中拖出即可得到最终结果,若只是用SQL查询的话,不知道需要写出多复杂的SQL语句才能得到透视表简单透视一下就能得到的数据结果,而且可以随时进行多维度切换查看、筛选、汇总等,SQL语句也只能望洋兴叹的份上了。
说了这么多,的确很兴奋了,有了透视表似乎已经得数据天下的感觉,但接下来有点泼冷水地说一点透视表差强人意的地方,这点的不如意,也就让今天的DAX查询能够显出威力的时候。
透视表向PowerbiDeskTop发出的查询是MDX查询,而非PowerbiDeskTop原生的DAX查询,MDX查询是传统的SSAS多维模型的查询语言,其对数据的聚合效率是很高,但一面对需要查询的颗粒度数据较细,即拖拉到透视表的行或列区域的字段的项目数量很多时,如查询不同区域的销售额,是一个很不错的MDX查询,区域最多就10多个区域分区,但如果查询的是每个店铺(假设500家店铺)下每个商品SKU(假设1000个SKU),最终就出来最多50万条的记录,这个查询在透视表上拖拉字段出来,让透视表自动向PowerbiDeskTop发出MDX查询,将是很漫漫漫漫漫漫长的等待。
透视表向PowerbiDeskTop发出明细查询很慢,并不代表PowerbiDeskTop的多维数据模型查询明细数据就很慢,相反PowerbiDeskTop查询明细数据是很快的,只要是用DAX查询,甚至可能比SQL查询更快,因其所有数据都在内存里查询,索引也是优化得很棒的。但Excel透视表却无法向PowerbiDeskTop发出DAX查询,而只能是MDX查询。目前可以向PowerbiDeskTop发出DAX查询的客户端就PowerbiDeskTop一个,在PowerbiDeskTop上拖拉字段所发出的查询是DAX查询,也就是速度和性能杠杠的。
Excel催化剂向PowerbiDeskTop发出DAX查询
以上提到,Excel自身是无法向PowerbiDeskTop发出DAX查询的,就算用了第3波的功能,也只能让透视表顺利连接上PowerbiDeskTop发出MDX查询,用来做一些汇总统计分析的交互最为便利。
今天插件再上一超级功能,让Excel顺利向PowerbiDeskTop发出DAX查询,而且不单单可以手动写DAX查询,还可以像操作透视表一样只需通过拖拉字段的方式,自动生成所需的DAX查询并返回查询数据结果,同时这个查询还可以保存下来,供下次重新打开Excel和PowerbiDeskTop时重复使用,功能体验,再次达到国际领先水平!!
功能详细介绍
查询界面总览
- 下图序号1
pbix文件清单,若需要打开多个pbix文件,此处显示多个pbix供选择,需要先选择对哪个pbix文件进行查询 - 下图序号2
pbix文件最后一次查询的DAX语句,有时会有多条记录,需要选择自己最终想要的记录,选取的记录的DAX查询内容将显示在序号3和序号4的区域供进一步识别是否所需内容
在PowerbiDeskTop的可视化区域中进行图表组件的字段选择(需要生成较多字段的查询最后用表组件)后,PowerbiDeskTop将自动生成DAX查询语句向SSAS模型发出查询请求,最终把数据结果返回到可视化组件中,同时还可以配合字段的筛选功能,当数据量大时只选取所要符合条件的数据子集。
利用此自动生成DAX查询的功能,配合在Excel催化剂上可检测出此最后一次提交的DAX查询的内容的功能,可轻松实现如透视表一般地拖拉字段即出结果的最终效果。 -
下图序号3
此区域是前面序号2的DAX查询语句的优化版本,删除不必要的TOPN等限制返回数据数量的语句,精简出真正符合要求的DAX查询。同时此区域可直接粘贴自己写好的DAX查询语句,不必只用自动生成的简单的DAX查询。DAX查询是个很庞大的复杂的查询,好比SQL查询也可以写出很复杂的查询语句,比自动生成的语句更能满足查询结果,有写DAX查询语句能力的,可写好DAX语句直接粘贴到序号3的位置即可。
-下图序号4
若使用的是自动生成的DAX语句,序号4的位置将显示此DAX查询语句的小范围数据预览,方便查看DAX查询结果是否是所需的结果。
额外辅助功能
前面提到的DAX查询界面的功能是本次主要功能,有了DAX查询语句,只需简单点击新表查询或覆盖现有表查询,即可发出DAX查询并返回对应的数据结果。
为使插件使用体验更佳,特设立几个小功能,让整个过程更流畅,更好用。
-
格式化DAX
前面序号3的位置,DAX查询的文本没有关键字高亮显示,都是统一的黑色,若有一些高级一些的修改DAX语句再发出查询的话,此段DAX查询代码阅读性仍不足(虽已经进行了代码的排版,对DAX查询熟悉的话,已经很好阅读了),本插件借助https://www.daxformatter.com/网站的格式化功能,通过联网的方式向网站提交DAX查询内容,让网站帮助格式化DAX语句,同时再调用https://cloudconvert.com/网站提供的API接口,让刚刚返回的html文本转换为rtf格式,可以在Excel的窗体上显示并进行修改,从而达到了最佳的阅读效果。此功能需要联网,且处理速度有些许卡顿和缓慢(连接国外网站较慢),同时API接口有使用次数限制,最好自行申请APIKey(点击【设置格式化APIKey】进行设置)。
-
刷新DAX查询
在打开查询界面后,发现最后一次的DAX语句并非自己所要的最终版本时,可返回PowerbiDeskTop对字段进行拖拉,让PowerbiDeskTop帮助生成一段新的DAX代码,因对PowerbiDeskTop拖拉操作,Excel无法识别和检测到,需要手动点击【刷新DAX查询】,让新的DAX查询能够更新加载进来。 -
保存DAX查询
一段DAX查询写好后,想下次仍然可以直接调用,不用重复性地操作之前操作过的到PowerbiDeskTop里的多个步骤,可以把此段符合要求的DAX查询保存下来,供下次使用,当然自己手写或修改过的DAX查询更值得保存下来复用,操作步骤为点击【保存当前DAX查询】即可保存到刚刚序号3所示的查询(若DAX查询代码已经格式化过,保存的是已经格式化过的代码,更具人性化,无需重复格式化)。
保存过的DAX查询,点击【历史DAX查询】可调出所有保存过的DAX查询,并可对其历史DAX清单进行删除或修改操作。
- 查询结果覆盖现有工作表数据
查询的结果一般首次使用,会让其在新建的工作表中存储,若已经保存过数据,并且数据又再次引用了其他的公式或透视表,若仍然在新的工作表上重复之前做过的步骤,就未免太重复性低效工作了,此时可用【覆盖现有表查询】的方式来更新现有表里的结果数据,现有表里的公式和透视表引用等将不受影响。
关于Excel催化剂
Excel催化剂先是一微信公众号的名称,后来顺其名称,正式推出了Excel插件,插件将持续性地更新,更新的周期视本人的时间而定争取一周能够上线一个大功能模块。Excel催化剂插件承诺个人用户永久性免费使用!
Excel催化剂插件使用最新的布署技术,实现一次安装,日后所有更新自动更新完成,无需重复关注更新动态,手动下载安装包重新安装,只需一次安装即可随时保持最新版本!
Excel催化剂插件下载链接:https://pan.baidu.com/s/1eT2znYM
因插件使用VSTO开发技术完成,插件的安装需要电脑满足相关的环境配置才能运行,且需可连接外网的方式实现自动更新机制,若下载安装过程中有任何疑问或需要离线版安装等,尽量不单独私聊询问,加QQ群可高效解决(群内已汇集了VSTO开发、Powerbi技术、Sqlserver商业智能等方面的国内顶尖大牛人物,进群的好处不用多说了)
取名催化剂,因Excel本身的强大,并非所有人能够立马享受到,大部分人还是在被Excel软件所虐的阶段,就是头脑里很清晰想达到的效果,而且高手们也已经实现出来,就是自己怎么弄都弄不出来,或者更糟的是还不知道Excel能够做什么而停留在不断地重复、机械、手工地在做着数据,耗费着无数的青春年华岁月。所以催生了是否可以作为一种媒介,让广大的Excel用户们可以瞬间点燃Excel的爆点,无需苦苦地挣扎地没日没夜的技巧学习、高级复杂函数的烧脑,最终走向了从入门到放弃的道路。
最后Excel功能强大,其实还需树立一个观点,不是所有事情都要交给Excel去完成,也不是所有事情Excel都是十分胜任的,外面的世界仍然是一个广阔的世界,Excel只是其中一枚耀眼的明星,还有其他更多同样精彩强大的技术、工具等。*Excel催化剂也将借力这些其他技术,让Excel能够发挥更强大的爆发!
关于Excel催化剂作者
姓名:李伟坚,从事数据分析工作多年(BI方向),一名同样在路上的学习者。
技术路线从一名普通用户,通过Excel软件的学习,从此走向数据世界,非科班IT专业人士。
历经重重难关,终于在数据的道路上达到技术平原期,学习众多的知识不再太吃力,同时也形成了自己的一套数据解决方案(数据采集、数据加工清洗、数据多维建模、数据报表展示等)。
擅长技术领域:Excel等Office家族软件、VBA&VSTO的二次开发、Sqlserver数据库技术、Sqlserver的商业智能BI技术、Powerbi技术、云服务器布署技术等等。
2018年开始职业生涯作了重大调整,从原来的正职工作,转为自由职业者,暂无固定收入,暂对前面道路不太明朗,苦重新回到正职工作,对Excel催化剂的运营和开发必定受到很大的影响(正职工作时间内不可能维护也不可能随便把工作时间内的成果公布于外,工作外的时间也十分有限,因已而立之年,家庭责任重大)。
和广大拥护者一同期盼:Excel催化剂一直能运行下去,我所惠及的群体们能够给予支持(多留言鼓励下、转发下朋友圈推荐、小额打赏下和最重点的可以和所在公司及同行推荐推荐,让我的技术可以在贵司发挥价值,实现双赢(初步设想可以数据顾问的方式或一些小型项目开发的方式合作)。)