【2020/7/3】补充:该项目可能会改为以代码开源的形式共享,可关注:项目​d-bi.gitee.io

以下是原文:

“DAX & M批量格式化工具”

作为Power BI报表开发者,DAX代码的可读性十分重要,几年前SQLBI推出了一个免费web服务:daxformatter,它允许你粘贴你的DAX代码到输入框,一键助你完成代码的换行与缩进,提升代码可读性,最近,PQ里的M语言也有了类似的服务—Power Query Formatter, 利用这些工具,可以帮你无需手工操作就能完成换行缩进,提升你的报表开发效率。不过,这些工具的美中不足是不能一次性格式化多个公式,即使可以,一个个粘贴公式也是不方便的,因此,我开发了一个小工具—“DAX & M批量格式化工具”,它可以帮你一次性格式化你的PBIX文件内的所有DAX公式,包括所有表的度量值以及计算列。工具截图如下:

(注: 同时也可以帮你格式化所有表的M语句, 这里需要说明的是,该格式化工具的原理是通过向daxformatter以及powerqueryformatter网站发送POST请求并返回格式化的结果写入PBIX中的配置文件以完成全部代码格式化,但由于powerqueryformatter网站处于测试状态,接口还存在问题,因此格式化M语句功能暂不可用)

该工具对于那些大型Power BI报表项目的作用十分明显,因为你可能会有上百个DAX度量值以及计算列等等,一个个的格式化将是十分耗时且效率低下的,而通过该工具,仅需1分钟即可完成报表文件中全部DAX的格式化,使你把更多精力专注于更重要的环节:模型设计和效率优化。

如何使用

第一次使用,需要多一个小步骤,打开Power BI Desktop, 打开选项:

基于作者本人的Desktop版本(2020年5月),此时需要在预览功能处勾选如下功能,然后重启Power BI Desktop:

接下来是工具的使用方法,以如下文件为例:

这是其中的Sales表的其中一个计算列:

以及部分度量值:

还有很多其他计算列和度量值存在不同的表,此处不一一列举。现在关闭PBIX文件(推荐另存为PBIT格式,此处另存为PBIT命名为formatterTemp),修改文件的后缀为ZIP,解压文件,你会看到一个名为DataModelSchema的文件,我们的所有DAX以及M代码等等都在此文件中定义,因此工具的任务是通过程序修改该文件以达到一次性格式化目的。现在,右键复制该文件的路径:

打开“DAX & M批量格式化工具”后将路径粘贴到输入框,然后点击“执行”,等待几秒钟后会提示“已完成”:

现在文件夹里的DataModelSchema已是修改好的文件了,最后重新打开zip文件,将更新后的DataModelSchema拖入覆盖即可:

最后,只需将文件ZIP后缀改回PBIT或PBIX,打开文件即可发现所有的DAX代码均已成功格式化!如图:

获取该工具

由于该工具的M格式化部分尚有未完成部分,因此暂时不会发布,感兴趣的读者可以点赞+收藏此文,并在评论区留下邮箱,后期完成会第一时间将工具安装包发送到您邮箱(注:该工具属于公益性质,不会收费,但也不会保证任何时效性,并且日后是否继续开发以及优化改进,增添新功能等等,还取决于社区及读者对该工具的需求程度及反馈数量)

dax和m的区别_一分钟格式化所有DAX及M语句相关推荐

  1. dax和m的区别_动态股票K线图----从M语言到DAX表达式

    偶然见别人画的股票K线图,不禁见猎心喜,也来模仿一番.原图是不能动的,一动MACD移动平滑趋势线就没有了.这是微软excel的一个缺陷. 所以我想了一个办法弥补这个缺陷.由于手头没有数据,开始实施网抓 ...

  2. 公有云私有云的区别_一分钟秒懂公有云、私有云、混合云的区别?

    公有云.私有云.混合云有什么区别?在讲这几个的区别前,可以先说下经常被一起谈起的云计算. 什么是云计算? 我们可以先理解云计算中的"云"是什么意思,通俗的理解,这里的"云 ...

  3. 机器人编程与python语言的区别_一分钟看懂“机器人编程”和“少儿编程”的区别!...

    随着编程学习全球化的趋势,国内编程学习热潮日盛,越来越多的家长开始让孩子接触学习编程. 然而在挑选学习课程的过程中,机器人编程和少儿编程是最让家长头疼的问题之一. 因为两者的名称都有"编程& ...

  4. 单模光纤和多模光纤的区别_一分钟了解光纤、单模光纤、多模光纤

    光纤的基本结构 光纤裸纤一般分为三层:纤芯.包层和涂覆层. 光纤纤芯和包层是由不同折射率的玻璃组成,中心为高折射率玻璃纤芯(掺锗二氧化硅),中间为低折射率硅玻璃包层(纯二氧化硅).光以一特定的入射角度 ...

  5. dax和m的区别_德国股票指数DAX, MDAX与TecDAX的区别是什么?

    展开全部 DAX是德国股市三十只主要股票进行加权计算得出的指e68a8462616964757a686964616f31333366303232数.指数行情:网页链接 MDAX覆盖更多的股票.指数行情 ...

  6. 时间序列 线性回归 区别_时间序列分析的完整介绍(带R)::线性过程I

    时间序列 线性回归 区别 In the last tutorial , we saw how we could express the probabilistic form of the best l ...

  7. zoho邮箱收费和免费区别_您需要了解有关适用于ios和android的新zoho vault移动应用程序的所有信息...

    zoho邮箱收费和免费区别 The secret phrase is the true standard of computerized validation and access. Any run ...

  8. 两个质数互质是_两个质数一定是互质数_互质数和质数的区别_分解质因数的方法_互为质数和互质数...

    宜城教育资源网www.ychedu.com两个质数一定是互质数_互质数和质数的区别_分解质因数的方法_互为质数和互质数质数,互质数,分解质因数,合数一个数只有1和它本身两个约数,这样的数叫做质数.一个 ...

  9. CIF、DCIF、D1区别_昂首阔步_百度空间

    CIF.DCIF.D1区别_昂首阔步_百度空间 CIF.DCIF.D1区别 关于视频监控分辨率CIF.DCIF.D1格式的介绍 什么是D1? 做闭路电视监控系统这一行久了,大家都以为D1是硬盘录像机显 ...

最新文章

  1. springboot项目实例_Springboot项目的接口防刷(实例)
  2. java 变量与常量_详解Java变量与常量
  3. 查询语句索引不能使用的一些情况
  4. 网速测量、流量监控软件 Bandwidth Meter Pro
  5. 拜读了《婆媳关系好坏取决于老公》一文,看似有道理,细读感觉其实应该不是那么回事...
  6. VSCode 报错 Parsing error: x-invalid-end-tag
  7. 关于windows消息机制的猜想
  8. c语言中日期间的天数怎么计算,关于计算两个日期间天数的代码,大家来看看...
  9. 数据库面试题 常考的概念
  10. java面向对象编程的三大基本特性--封装,继承,多态
  11. android简易双屏支持【转】
  12. Java如何简单实现一个定时器
  13. java如何使用while_java中的while(true)语句的用法是什么
  14. Javascript 清空input type=file 的值方法
  15. java可选参数_Java可选
  16. 虚拟机服务器安装iis报错,Windows2008R2安装iis和iis下搭建web服务器(9.18 第七天)...
  17. IAR (10.10.1) 安装与破解教程
  18. 使用阿里云Maven仓库
  19. 华为P40与周冬雨排列
  20. linux看视频装哪个软件,Ubuntu安装视频播放软件 SMPlayer 14.9.0.7042

热门文章

  1. 定期修改网管服务器和,2013武鸣县气象局机房安全管理制度
  2. Redis模糊查询及批量删除key
  3. Linux 网络模拟工具
  4. 线性回归模型的局限性和注意点
  5. android JSON解析数据-解析天气预报
  6. 大数据是如何进行分析的
  7. 原生简单实现滑动解锁,和滑动拼图解锁
  8. isql连接sybase_sybase_isql命令
  9. JS中定义全局配置文件
  10. Linux中的Plist -- 降序优先排序的双向链表