Power Query中自定义函数大致分成三类:
- 过程中函数:数据处理过程中定义的函数,非独立函数,没有let in过程
- 独立函数:单独定义的函数,有let in过程
- 由过程创建的函数:有处理的过程创建函数,通常有两套的let In过程
在循环、迭代、递归处理中,经常会见到这样的函数,直接用()=>来定义的函数:
这样一个循环结构中,(x)=>x 1就是一个自定义函数。
双重循环中的:(x)=>{1..3},(x,y)=>x*y都是自定义函数。
这样的过程中自定义函数的参数传递,依赖于M函数的要求,参数的数量及位置已经被外层的M函数限定。
独立函数:直接通过高级编辑器编写的结构完整的函数,可以被其他查询引用的函数:
我们定义了两个函数,一个单个参数的,一个两个参数的:
我们来引用单个参数的函数:
又或者:
都是一样的结果。
两个参数的函数引用:
除了这样用List.Transform引用,也可以直接引用,就输出单个结果:
得到结果16。这是独立函数,可以被其他查询引用的结构完整的函数。
由过程创建的函数:这是在一系列的操作过程结束后,如果这个过程有很强的通用性,可以做成一个独立函数来处理其他数据,那么就可以由这个处理过程来创建一个函数,最常见的是多文件合并的那个自定义函数。
我们由查询4来创建一个函数:
查询4是一个引用了双参数函数的一个查询过程,在这个查询过程右键点击创建函数:
进到高级编辑器中来添加我们的参数:
那么这个函数的功能是修改双重循环的外层循环的起始值:
我们输入9,就得到最后三行结果:
我们输入7,就得到{7,8,9}*{1,2,3}:
这就是一个由过程创建的函数。
这样的函数会有两套的let in 过程,甚至更多。
以上就是Power Query中自定义函数相关的内容,在Power Query中很多问题都可以通过自定义函数的方式解决,比如网络抓取过程,我们可以定义多个自定义函数,抓网址、抓页码、抓内容,然后通过互相引用,得到我们想要的结果。
,