M语言中的操作符说明:函数与圆括号()

与DAX语言一样,在M语言中也是使用函数名加括号内包裹参数的形式来调用函数方法获取结果。M语言中默认提供25类函数,每种类型函数下包含若干个具体的函数方法。例如,要在一个表单中添加一个新的列,可以调用Table.AddColumn()函数,括号内需要填写对应的参数并使用逗号隔开,Table.AddColumn要传入的参数包括要创建column的Table名称,新column名称,生产column中数据的方法,以及column的类型。

Table.AddColumn(table as table, newColumnName as text, columnGenerator as function,  optional columnType as nullable type) as table  

除了这些预先定义好可以直接使用的函数意外,M语言还支持自定义函数,自定义函数的格式为:自定义函数名,后面接该函数所要使用的参数,之后加=>符号,再接自改函数的计算方法。例如可以自定义一个求平均数的函数。

average = (a1,a2) => (a1+a2)/2,

这里面函数名是average,参数是a1和a2,计算方法是两个参数相加再除以2。

在创建自定义函数里面的参数时可以指定参数的类型,例如,上例中,可以指定a1和a2是数字类型number,改写为:

average = (a1 as number,a2 as number) => (a1+a2)/2

当不指定参数类型时,M语言会自动将其认定为Any类型的参数,然后根据后面定义的函数算法来判断参数代入值是否合法。例如在这个求平均数的示例中,如果传入的参数中有文本类型,则会有错误返回。

这里写图片描述

另外,M语言支持做函数的递归调用,使用@作为递归调用的标识。例如:

average = (a1 as number,a2 as number) => if (a1+a2)/2>0 then @average(a1-1,a2-1) else (a1+a2),

在M语言中运行函数需要在let声明下进行,最终要输出的结果在in声明下定义。可以讲,所有的M语言相关的代码都是始于let,终于in。而each关键字则是告知引用他的函数所要运算的范围,常用来获取一系列求值操作。

需要特殊注意的是M语言中所有的函数都是大小写敏感的。例如,当你把let拼写成Let或者LET时,Power BI就会提示你编译出错。
这里写图片描述

此处需要吐槽一下,Power BI编辑器的提示功能真的是很不准确,在大小写出错这个问题上,应该提示是let有问题,但是却高亮了其后的函数名,很影响问题的排查。这个提示功能基本只能提示code中是否少了半个括号或者丢了逗号等最基本的格式问题。希望以后微软能慢慢改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值