今天要讲的不是某一个函数,而是一个非常重要的思想——递归。
这部分内容非常难,所以请做好准备,看不懂也没关系,非必须掌握,有兴趣就一起研究。
在函数内部,可以调用其他函数,比如fx=(x)=>Text.From(x)&"个"
,定义了一个函数fx,调用了另一个函数Text.From
。
如果一个[......]
国内首个M语言分享博客
今天要讲的不是某一个函数,而是一个非常重要的思想——递归。
这部分内容非常难,所以请做好准备,看不懂也没关系,非必须掌握,有兴趣就一起研究。
在函数内部,可以调用其他函数,比如fx=(x)=>Text.From(x)&"个"
,定义了一个函数fx,调用了另一个函数Text.From
。
如果一个[......]
关于函数的概念,在此不多作解释。简单来说,函数就像是一个暗箱,把计算过程封装在暗箱中,再次调用函数时,只需要传入必要的参数,就能按照既定的规则返回结果。
在M语言中,函数主要有内建函数,比如Text.From
这种系统自带的;自定义函数,形如(x)=>x+1这种;以及参数函数,即函数内参数类型为fun[......]
首先不得不承认的是,PQ虽然强大,但IDE却是一个非常大的槽点。没有智能感知,没有着色高亮,所以输入代码非常容易出错,但报错提示往往还让人看不懂,反正就是无法吐槽更多。
在此整理一些常见报错提示,以便对照查阅,持续更新~
先来几个大概能看懂的:
1、Expression.Error: 无法[......]
在M语言中,标准库函数(standard library functions)约有700个。但是如果你觉得太少了,或者说不好用,那么也可以通过自定义函数来实现自己想要的效果。自定义函数的基本语法为:
函数名=(参数1,参数2,参数3...)=>表达式
先来看个例子:
let[......]
即表,这个好理解,有行有列即为table。
在excel中,要指定一个单元格我们用比如A5,而在PQ中则略有不同。每一个table都有字段名,即使你没有给字段命名,也会有默认的如"Column1""Column2"这样的命名;也有索引号,即使你没有添加索引列,也可以根据[......]
如果之前对编程语言有所了解,对关键字应该不会陌生。关键字其实就是M语言内部已经使用了的标识符,比如在M中if为条件分支语句,不需要定义本身就有含义,如果我们将一个步骤命名为if,这是不允许的。因为如果可以这么做,后面的公式中根本分不清哪些if是步骤名,哪些是判断,就乱套了。官方给出[......]
在Power Query中,顶部的菜单栏提供了非常多的按钮,我们可以方便地使用图形化界面操作,而实际上每一个功能按钮背后即是一段代码,我们所熟悉的添加列、拆分列、合并查询等等都有其对应的M语言公式。
有些新手可能不知道公式在哪,因为PQ中编辑栏默认是关闭的,需要手动开启。
在[......]
在excel中,我们经常使用如="NO."&1
得到"NO.1",但是如果在PQ中这么操作,就会发现报错了。这是因为PQ对数据类型非常严格,数字就是数字,文本就是文本,数字和文本不能放一起运算。
在PQ中数据类型比较多,如下:
如果需要对数据类型转换,则需要用到转换函数,[......]