学习DAX,我希望你早一点看到这篇文章_DAX这是一篇旧文,重新找出来发一下,因为不少人问如何对代码进行换行和缩进,并且还有更多的人是压根没有想过这个问题,就那么一堆代码发过来,问我为什么出错了?我希望你从一开始就能养成格式代码的好习惯,至于为什么以及怎么做,请看这篇文章吧。

 


 

为什么要进行格式化?

 

DAX 是一种函数式语言,正如我们已经学习的或者看到的,DAX 代码中总有一些函数带有几个参数,而参数还可以是其他函数所构成,参数的数量以及嵌套的层数决定了 DAX 代码的复杂度,再加上上下文,更使DAX的理解难上加难。使用 PowerBI 进行数据分析时,有三层嵌套的 DAX 代码很常见,四层及以上的嵌套也经常需要用到,如果将所有的代码写在一行上,不做任何格式化的处理,将导致难以理解,比如下面这个代码,你知道是什么意思吗?

Productlist=VAR weekno=MAX('table'[week]) VAR t1=SUMMARIZE(FILTER('table','table'[week]=weekno),'table'[product],"客户数量",DISTINCTCOUNT('table'[customer])) RETURN CALCULATETABLE(VALUES('table'[product]),FILTER(t1,[客户数量]>1))

 

如果是自己刚写完,可能还能理解,但之后你再回头看或者想修改也会是一头雾水,对他人来说将更是灾难。但如果上述代码变成这样,是不是就容易理解了:

Productlist =
VAR weekno =
    MAX ( 'table'[week] )
VAR t1 =
    SUMMARIZE (
        FILTER (
            'table',
            'table'[week] = weekno
        ),
        'table'[product],
        "客户数量", DISTINCTCOUNT ( 'table'[customer] )
    )
RETURN
    CALCULATETABLE (
        VALUES ( 'table'[product] ),
        FILTER (
            t1,
            [客户数量] > 1
        )
    )

 

看起来虽然更长,但结构清晰,逻辑分明,结合数据模型很容易知道这个代码是干什么用的。因此,按一定的格式编写 DAX 代码十分必要,上一篇文章中(如何快速理解一个复杂的DAX?),我也将格式化作为理解DAX的第一步。

 

那么什么是规范的 DAX 代码格式呢?

 

DAX 格式化规则

 

其实并没有官方的统一标准,只是为了可读性和沟通交流的方便,有一些约定的习惯和规则。代码的可读性主要取决于换行和缩进规则,

 

1.如果函数只有一个参数,则和函数放在同一行2.如果函数具有2个或更多参数,则将每一个参数都另起一行3.如果函数及其参数写在多行上:   3.1左括号"("与函数在同一行   3.2参数是新行,从该函数对齐位开始缩进4字符   3.3右括号")"与函数开头对齐   3.4分隔两个参数的逗号位于前一个参数的同一行   3.5如果必须将表达式拆分为更多行,则运算符作为新行中的首字符

 

通过以上规则,很容易就能分辨出 DAX 代码中每一个函数的参数、起止位置,嵌套的层数等。(如果编写的DAX代码非常简单,虽然有嵌套,但一行都能轻易写完,那就不要考虑上述规则了)

 

除了换行和缩进,在其他编写细节上也有一定的规则,比如函数名都用大写字母、等号之后留个空格等,这些对整体的代码可读性影响不大,不再介绍。

 

PowerBI DAX编辑快捷键

 

在 PowerBI Desktop 中的 DAX 编辑框中,对于换行和缩进都有对应的快捷键,并且缩进正是按照以上规则,每次缩进4个字符。

 

缩进的快捷键如下:

 

向右缩进:Ctrl + ]向左缩进:Ctrl + [

 

换行的快捷键如下:

 

换行后缩进:Shift + Enter换行后不缩进:Alt + Enter

 

关于 DAX 格式化的一般规则和快捷键总结如下图,

 

学习DAX,我希望你早一点看到这篇文章_DAX_02

 

 

推荐两个快速格式化的工具

 

如果你对上述规则感到困惑,或者你拿到别人写的一长串 DAX 代码不想从头开始格式化,那么有这个神奇的网站,帮你进行快速格式化:www.daxformatter.com/raw/

 

上述的 DAX 格式规则也是该网站推荐采用的,用起来十分方便,打开网站后,直接把代码粘贴到编辑框中,

 

学习DAX,我希望你早一点看到这篇文章_DAX_03

 

点击 FORMAT 按钮,一键格式 DAX 代码,

 

学习DAX,我希望你早一点看到这篇文章_DAX_04

 

在这个网站上你还可以学习到更详细的DAX格式规则,强烈推荐你上去看看。除了这个网站,还有之前介绍过的DAX Studio,也可以快速格式化,参考:DAX Studio:你迟早会用到的几个功能以上介绍的只是 DAX 格式的一般规则,并不是强制这样使用,你也可以编写个人风格的 DAX,不过无论是什么风格,请保证DAX代码的可读性。