上篇主要介绍TabularEditor的界面级别的操作,其最核心的使用脚本自动化方面的高级功能没有涉及,本篇尝试将较为经典用脚本自动化功能引出,让日常建模工作可以立即用上的。深入的话建议阅读工具作者的文档。
TabularEditor是一款使用dotNET语言开发的工具,笔者最喜欢它的地方在于,其类似Excel这样,预留了我们可以使用C#语言通过简单的脚本调用,实现一些批量化操作的功能,批量化操作不限于批量增删改查度量值、计算列、修改属性信息如数字格式、显示文件夹等,亦可以批量筛选出指定符合条件的内容。
再一次见证微软系的魅力所在,dotNET语言的熟练,可以应用的面何等地广泛,在数据建模的领域,在TabularEditor的辅助下,又可以如虎添翼般做出许多高级的应用和自动化出来。
一般情况下,我们会先创建一堆基础的度量值如销售量、销售额、成本额等。这些函数都比较简单,都是直接求和、计数等即可。
创建完这些基础的度量值,想求同比、环比、历史、当年、当季、当月累计等指标时,因其主要是度量值的引用的不同,其他部分都相同,所以可以利用脚本来完成。如下图先选定基础度量值,再脚本视图下点击三角型运行却可。
以上代码的作用,就是用C#脚本遍历当前选择的度量值,然后根据基础度量值的名称,构造出新的度量值表达式,通过新建度量值方法进行创建新度量值,对新度量值名称及显示文件夹进行设置,最后将新度量值的属性数字类型修改为原基础度量值的格式。 同理,一个环比值又做出来了。
再来一个环比率,一样一键完成。无论多少个度量值,都不是问题。
还可以调用子脚本片段,推倒重来多少遍都不怕。
模型一大,度量值、计算列一多,必然引起模型维护的复杂繁琐,就算用了以上的批量生成的方法生成的标准化的衍生度量值,最起码还是需要做一个检查复核的动作。
在Excel催化剂插件的功能实现上,可以一键导出整个模型的关键元数据,如度量值、计算列、关系等,但一般来说导出容易导入难,导出只是读取操作,导入可要写入操作。
在TabularEditor已经内置了简单的方法调用即可。真是一山比一山高,面对更好的,肯定毫不犹豫选择它了。
观察到脚本最后用的是Output方法而不是SaveFile方法,因Output后直接弹出结果清单,复制到Excel表格中制作,比导出一个tsv文件(也是文本文件,只是字段间隔换成是Tab制表符而非逗号分隔,因DAX公式中大量逗号,不适用用csv文件导出)。
在当前情况下,导出的结果,因为DAX函数有制表符和换行符之类的存在的原因,导出来是错位的。
所以若导出Expresstion字段,还是需要做一些额外的处理,先将其复制到notepad++上,再用notepad++的查找替换功能。
替换完即可复制到Excel工作表中,已经不会再错位显示了。不过仍有一点不太完美,出来的换行符变成是文本\n了。
没有完美的工作,只有我们不断去做修补的活,此时可使用Excel催化剂的【正则替换功能】,为了这个功能,重新修正了一下,使用【换行符】来表达真正的换行操作。
执行完的效果
导入操作要求比较严格一些,首列作为标识列是不能修改的,并且不能新增操作,只能修改原来的信息,如下图修改度量值的名称(修改度量值名称是高危险操作,因度量值可能是中间度量值,其他度量值对其有引用,批量修改的方式不自动修改过来,界面修改可以自动同步)。
同时更多的场景是批量修改显示文件夹、数字格式这些,原理一样,只需保证有首列,其他想修改的内容列追加即可。
复制后将其粘贴到文本文件中如notepad++中,保存文件供调用。
或者直接使用Excel催化剂一键完成Excel选区到文本文件。按指示操作即可。
记得保存的时候是保存为utf8文件格式。
导入命令非常简单,路径换到刚刚整理好的文件名位置即可。
完成后效果如下。
在工具的Filter命令中,可以做数据模型对象的筛选操作,简单的筛选只需输入关键字即可搜索含有此关键字的所有对象名,对象名可以是表名、字段名、度量值名等一切模型的对象成员的名字。
复杂的查询,可以使用Linq语法进行模型对象其他属性的查询,非常好用和高级。
以上所分享的详尽的教程文档,可以自行查阅工具作者的github中的wiki文档。
此篇带领大家走进TabularEditor的精彩应用,使用C#脚本和TabularEditor交互,让其批量化操作的功能更强大,通过脚本的方式来做一大好处是标准化程度高,生成的数据规范且有逻辑和规律可寻,后期在模型维护方面将带来极大效率提升。
同时本篇所列出的脚本应用,全是笔者在真实项目中使用到的,非常具有应用价值。
TabularEditor更强大的部分是可以让SSAS建模工作以团队式开发来开展,还有许多精彩的应用,等待下篇再作介绍。
笔者未来聚焦在数据领域的分享,不限于Excel,会分享更多Sqlserver、dotNET、Azure、PowerBI等话题,升级数据分析的能力,欢迎继续关注。
「PowerBI」丢弃SSDT选择TabularEditor成为你的首选建模开发工具(上)https://www.jianshu.com/p/939f7e8f68d5
「PowerBI」丢弃SSDT选择TabularEditor成为你的首选建模开发工具(中) https://www.jianshu.com/p/0c61ea76d031