「PowerBI」丢弃SSDT选择TabularEditor成为你的首选建模开发工具(上)

2021-08-19 17:35:43 浏览数 (1)

许多社区PowerBI爱好者可能少有接触到企业级BI的SSAS建模工具SSDT,仅使用过Excel或PowerBIDeskTop的工具做多维数据建模。 在Sqlserver的SSAS建模过程中(Azure AS通用),一般情况下,是使用微软提供的官方开发工具SSDT来完成,笔者在Azure系列文章中也有提及。但对于一个重度的数据建模工作者来说,更值得推荐的是TabularEditor开源第三方工具。

SSDT开发工具的优缺点分析

在SSDT中开发SSAS数据模型,整体体验是非常棒的,继承了微软一贯的图形化界面操作的友好度,特别是对Excel和PowerBIDeskTop群体来说,无缝过渡到SSDT的操作。

在界面化操作过程中,很多抽象的东西都可以直观地理解,特别是可以有数据导入到模型中可观看其计算结果,逻辑排查等,都是非常方便。

但界面化操作,同时也面临一个很大的局限,类似于我们日常操作Excel一样,通过界面操作,的确可以完成几乎一切的功能,但在高阶应用中,还是喜欢用VBA代码来实现许多界面操作的重复性工作。

在SSDT上,若需要创建度量值、设定显示文件夹、修改数字显示格式等操作,对于度量值不多的情况下,还可以接受一个个的输入设置,但对于一个庞大的模型来说,几百个度量值,一个个去设定、检查,特别是一些简单重复性的相似设置或相似度量值的生成,简直是一件很让人崩溃的事情。

例如都是一些求和的函数,只是针对不同的字段来设置,或者更多场景是由这些基础度量值所衍生出来的当年、当季、当月累计,历史累计,同比、环比、同比%、环比%等一系列度量值时,如果在SSDT上一个个去生成,效率非常低下。

同样地界面化的操作,因数据源已经导入到SSDT内,操作过程中的计算是即时性的,数据源大,反应也会很慢(可以用视图的方式导入数据到SSDT内,在开发过程中视图上Select Top 一下不导入所有数据,等部署后再回到数据库中修改视图将Select Top去掉,可以大幅度改善响应慢问题)。

同样地一些度量值的额外信息补充,若一个个设置或一个个去检查也是效率低下。

总结SSDT的优缺点:界面化操作,易上手,对大量重复性操作不够智能,操作繁琐。并且因数据即时计算带来的性能慢卡顿问题。

优秀的SSDT代替者开源工具TabularEditor

工具的优缺点都是相对而言的,对某些用户群体是优点,对某些人来说是缺点。上述所说SSDT的优缺点取反后,就是TabularEditor的优缺点了。

对于重度建模人员来说,在熟练掌握SSAS建模技术并明白其界面操作对应的内部原理后,使用TabularEditor来做同样的事情,绝对是受益无穷。

对TabularEditor的一些介绍,之前已经写过一篇概述性文章,有兴趣的可以翻阅一下。本篇着重给大家做演示操作。 「PowerBI相关」一款极其优秀的DAX建模工具Tabular Editor https://www.jianshu.com/p/90ea25906952

TabularEditor有限度支持PowerBIDeskTop的建模操作(官方不建议,但是可行,可能有破坏pbix文件风险),也大大地扩大了其使用广度。

TabularEditor实操

模型创建方面,可以来源于某个现有的文件,如SSDT做好的半成品,读取其BIM文件,或者直接读取发布到服务器上的数据模型。笔者更喜欢直接读取数据模型,修改保存后即可在报表层刷新获得最新的修改效果,风险是不小心改坏了,可能会把整个模型给报废了(软件有自动备份功能,一般情况下问题不大,坏了可以还原下)。

读取的服务器,可以是Azure AS的地址,本地Sqlserver也一样,体验没差别。

当然也可以通过【New model】,从零开始创建整个模型,并且可以最高支持1470兼容模式,这个在SSDT2017上还未支持。

在TabularEditor的界面上,将SSAS数据模型分为几大类,同时结合工具栏可以选择性地展示哪些部分。

因TabularEditor不像SSDT那般地直观看到表和表数据等,所有的数据都是停留在元数据级别,所以需要先对多维模型的各种对象元素非常熟悉后才比较容易玩得转。就像学VBA一样,需要对操作层面的功能很熟悉,才能快速上手做出有用功能来。

创建数据连接

首先要访问数据,需要用到数据连接,这里有旧的连接方式和新的PowerQuery连接方式,建议标准化数据库的数据连接使用旧的连接方式,后续的修改更容易。

PowerQuery的方式,没法像SSDT那样可以调出界面化操作,只能接收最终生成的M语言代码,所以真要使用它时,建议从PowerBIDeskTop上将数据加工好,生成M语言代码再复制过来即可。如下面会用到的日期表,纯M代码生成。

TabularEditor有一个好处是,它只关注元数据,所以我们甚至可以从其他数据模型里,直接右键复制某个对象到当前模型里就可以。

导入表或视图数据

直接选择Tables对象下的右键鼠标菜单,即可快速找到【Import Tables】快捷菜单。

选择刚刚创建好的数据连接或未创建时直接新建数据连接。

和微软原生的数据连接界面相差无几,体验也是很棒。

选择数据表时,也是可视化给予数据预览及通过勾选的方式选择字段,非常友好。

当源数据表中字段有增减或字段类型、名字有变更时,同样有非常贴心的右键功能去修复和检验变更情况,帮助快速修复。

创建表间关系

虽然TabularEditor只显示元数据,不像SSDT那样可显示表的具体的数据,且在创建关系上可以较为友好地拖放的方式完成,但毕竟关系创建的操作也非十分繁琐重复性,TabularEditor提供的是在属性面板上选择字段的方式,个人感觉也不算太差的体验。

可通过左侧的数据类型,辅助判断选择是否正确,数据类型不匹配的字段创建关系,后面也是好多坑,关系不起作用,检查老半天还以为自己DAX公式写得有问题。

创建度量值、计算列等

数据建模过程,最高频的莫过于度量值、计算列的创建,这里也是非常友好地甚至提供了快捷键的操作。

现在版本比较遗憾的是表达式编辑区对中文支持不友好,会出现显示压缩在一堆的情况,可以先从DAX Studio上写好后再粘贴过来,软件作者在新版本3.0中将会修复,敬请耐心等待。

在整个软件的设置逻辑中,每个对象都可以在右边的属性面板中进行大量的设置操作,包括度量值表达式,当然更方便的表达式书写在右上方的表达式编辑区上。

在批量操作方面,体验也是非常棒,可以随时批量CTRL C、CTRL V生成一批变量值,可拖动的方式在不同显示文件夹中切换(也可以拖动到其他表中),体验好得不得了(相对SSDT来说,就算可以复制度量值,也因为要即时计算,响应非常慢,更不用说显示文件拖动这些体验了)。

部署到服务器或Azure云上

点击【Deploy】按钮后即可打开部署界面。

填写服务器地址,本机使用localhost,如果是远程的服务器,可能需要域环境才能在本机上进行部署,否则只能在远程服务器上安装TabularEditor,再选择localhost部署了,但在Azure AS上就没这个限制,所以还是Azure更简单。

输入要命名的数据库名称即可。

当然企业级BI模型,角色、成员这些也是非常必要的,用于控制权限,可在Tabular Editor上创建角色和成员,也可以到SSMS上创建,部署时有可选项,是否推送这些信息覆盖服务器元数据,做得也是非常人性化,考虑很周到。

极具生产力效率的功能

可批量选择多个对象后移动、删除、设置详细属性,可模型内、模型间复制对象等快捷操作,将使我们的数据建模工作效率得到极大提升。这是笔者对其喜爱有嘉的原因之一。

在SSAS建模过程中,可以从Excel的PowerPivot模型作为起点导入模型元数据,再进行一定的扩展,是一个很不错的从低到高,从自助式建模平滑过渡到企业级建模的一个不错的方式(同样PowerBIDeskTop亦支持从Excel的PowerPivot导入模型)。

用上TabularEditor后,一个很大的惊喜是,可以将PowerBIDeskTop的模型复制到SSAS中使用,特别是大量的度量值的复制工作。只需在其他模型中选定要复制的对象CTRL C复制后,再回到当前模型进行CTRL V即可完成复制工作,这个体验超级棒。例如上述的日期表笔者就是在多个模型中只通过复制的方式就可在新模型中复用。

同样地,TabularEditor在界面层也做了大量的右键快捷菜单,可以非常方便地选择当前上下文对象中需要的功能。

结语

就如使用Excel的群体中,当上升到使用VBA层面,没有人会觉得用代码来控制比用界面控制体验要差,同样地在Tabular Editor上,当我们对SSAS数据建模的原理非常熟悉后,转移到Tabular Editor的使用也是非常流畅的,大量模型的属性设置都更加灵活方便。

更为高效的高级功能也如VBA一般可使用脚本代码去作更进一步的自动化操作,这些的介绍将在下一篇中给大家作介绍,欢迎继续关注。

关于Excel催化剂

Excel催化剂先是一微信公众号的名称,后来顺其名称,正式推出了Excel插件,插件将持续性地更新,更新的周期视本人的时间而定争取一周能够上线一个大功能模块。Excel催化剂插件承诺个人用户永久性免费使用!

Excel催化剂插件使用最新的布署技术,实现一次安装,日后所有更新自动更新完成,无需重复关注更新动态,手动下载安装包重新安装,只需一次安装即可随时保持最新版本!

Excel催化剂插件下载链接:https://pan.baidu.com/s/1Iz2_NZJ8v7C9eqhNjdnP3Q

0 人点赞