使用DAX进行计算分析时,我们经常会用到变量VAR,关于它的介绍可参考:
学会VAR,你就离掌握DAX更近了一步
关于VAR,我犯了一个错误
那么在M中有没有类似VAR定义变量的做法呢?
其实也是有的,它就是let in表达式。
如果你打开过PowerQuery的高级编辑器,对它们肯定不陌生,里面的代码都是以let开头、以in表达式结束的。
语法非常简单:
let
变量列表
in
结果表达式
比如:
let
x=2,
y=x*3,
z=2*x+y
in
z
结果是10.
平时在PQ建自定义列的时候,也可以通过变量的方式来分步骤实现,比如前面介绍的计算上一个订单日期的例子,当时用DAX的变量是这样写的:
这种计算除了前面用PowerQuery一步写出来,也可以用let定义变量的方式,分步骤实现:
let
a=[产品名称],
b=[订单日期],
c=List.Max(
Table.SelectRows(
更改的类型,
(x)=>x[产品名称]=a and x[订单日期]<b
)[订单日期]
)
in
c
结果是完全一样的。
以上就是PowerQuery中变量的用法,功能与VAR一样,只是一个是在M环境中使用,一个在DAX环境中使用。
在具体写法的细节上,有下列区别:
VAR定义变量,每定义一个变量,就要写一个VAR;而let 只需写一次,就可以定义多个变量VAR返回结果用的是RETURN;let返回结果表达式用的是in;VAR 定义变量后可以直接换行,不需要写逗号,而let定义的变量结尾都要写个逗号,再定义下一个变量(最后一个变量不需要写逗号),这其实也是DAX和M基本语法的区别。