前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[PowerBI]格式化DAX最佳实践及使用Tabular Editor脚本实现落地

[PowerBI]格式化DAX最佳实践及使用Tabular Editor脚本实现落地

作者头像
Excel催化剂
发布2023-04-26 15:17:07
6690
发布2023-04-26 15:17:07
举报
文章被收录于专栏:Excel催化剂Excel催化剂

DAX格式化最近在社群里听到有人讨论,在小必老师的公号上也做了总结性推文介绍(其中也介绍了PBI催化剂的方法)。

传送门:6款Power BI和Excel Power系列代码格式化工具介绍,尤其最后一款,很好用

这里先下结论:最佳的格式化DAX是,需要什么格式化什么,不是一味地全盘格式化,而在工具层面,最好是一次提交,多个表达式一次性格式化返回,减少服务器资源浪费。

为何是需要什么格式化什么,而不是全盘格式化,笔者见解是:

1、某些过度格式化,使DAX表达式过长,需要很大位置展示所有表达式,缩进过多,只要自己阅读无障碍,就没必要格式化。

2、格式化过程中,写的一些注释会格式化后错位,这个是最不爽的,除非提交格式化完再写注释,才能避免。

3、在PBI催化剂的批量创建度量值、计算组等功能里,通常创建好的DAX表达式不需要用来阅读,它已经是完全准确的,而且就算错,也会在源头创建批量度量值时就改好(PBI催化剂为批量而生,谁用谁爽,效率奇高,同时保证最大化的准确性)。

在笔者开发的PBI催化剂里,也有格式化DAX的功能,但在面对批量性DAX格式化的场景,不是最佳的操作方式(PBI催化剂也有批量DAX格式化功能,不过使用的是循环遍历的方式,多个DAX表达式,就提交多次,对DaxFormatter接口不友好,浪费其很多的宝贵资源,并且速度慢)。

目前能够实现比较好的交互选择效果,并能一次性发起提交的,只有Tabular Editor(Bravo Pro目前貌似只能对度量值发起提交,计算列、计算表等暂未支持),但其原生功能不支持,需要写一小段脚本扩展。

得益于Tabular Editor修复了一个底层调用方法的bug(此bug是由笔者发现并提交issue让作者修复的,作出一点贡献的感觉真不错,未修复前对计算组的成员不能使用Custom Action快捷菜单)。

传送门:有人忙收割,我却一如既往地为社区贡献:为Tabular Editor更优秀贡献了一个bug的发现

现在使用Tabular Editor,可以界面层非常友好地使用Custom Action选择多个对象发起DAX格式化的操作。

上述截图是计算组的计算成员的格式化,是笔者在项目里的刚需,其他度量值、计算列等操作也类似,只要选择完需要格式化的对象,右键在Custom actions里就可以找到,具体的操作方法如下:

1、将脚本粘贴到Advanced Scripting选项卡里,并点击加号图标

详尽代码如下:

代码语言:javascript
复制
            //度量值
            var measures = Selected.Measures;
            if (measures.Count() > 0)
            {
                //Info("度量值");
                FormatDax(measures);
            }
            else
            {
                //计算列
                var calColumns = Selected.CalculatedColumns;
                if (calColumns.Count() > 0)
                {
                    //Info("计算列");
                    FormatDax(calColumns);
                }
                else
                {
                    //计算表
                    var calTables = Selected.Tables.Where(s => s.SourceType == PartitionSourceType.Calculated);
                    if (calTables.Count() > 0)
                    {
                        //Info("计算表");
                        FormatDax(calTables);
                    }
                    else
                    {
                        //计算组成员
                        var calculationItems = Selected.CalculationItems;
                        if (calculationItems.Count() > 0)
                        {
                            //Info("计算组成员");
                            FormatDax(calculationItems);
                        }
                    }
                }

            }
            Info("完成");

2、勾选需要作用的对象,让其鼠标右键Custom actions菜单生效。

上图中计算组成员对应的是CalculationItem,其他的Measure/Table/Column,对应于度量值、计算表、计算列,这些也要勾选。

完成上述两步后,就可以实现想格式化什么就格式化什么的自由效果。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel催化剂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档