Power Query中自定义函数大致分成三类:

过程中函数:

在循环、迭代、递归处理中,经常会见到这样的函数,直接用()=>来定义的函数:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(1)

这样一个循环结构中,(x)=>x 1就是一个自定义函数。

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(2)

双重循环中的:(x)=>{1..3},(x,y)=>x*y都是自定义函数。

这样的过程中自定义函数的参数传递,依赖于M函数的要求,参数的数量及位置已经被外层的M函数限定。

独立函数:

直接通过高级编辑器编写的结构完整的函数,可以被其他查询引用的函数:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(3)

我们定义了两个函数,一个单个参数的,一个两个参数的:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(4)

我们来引用单个参数的函数:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(5)

又或者:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(6)

都是一样的结果。

两个参数的函数引用:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(7)

除了这样用List.Transform引用,也可以直接引用,就输出单个结果:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(8)

得到结果16。这是独立函数,可以被其他查询引用的结构完整的函数。

由过程创建的函数:

这是在一系列的操作过程结束后,如果这个过程有很强的通用性,可以做成一个独立函数来处理其他数据,那么就可以由这个处理过程来创建一个函数,最常见的是多文件合并的那个自定义函数。

我们由查询4来创建一个函数:

查询4是一个引用了双参数函数的一个查询过程,在这个查询过程右键点击创建函数:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(9)

进到高级编辑器中来添加我们的参数:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(10)

那么这个函数的功能是修改双重循环的外层循环的起始值:

我们输入9,就得到最后三行结果:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(11)

我们输入7,就得到{7,8,9}*{1,2,3}:

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(12)

这就是一个由过程创建的函数。

powerquery的m函数是什么(Query三种自定义函数的类型介绍)(13)

这样的函数会有两套的let in 过程,甚至更多。

以上就是Power Query中自定义函数相关的内容,在Power Query中很多问题都可以通过自定义函数的方式解决,比如网络抓取过程,我们可以定义多个自定义函数,抓网址、抓页码、抓内容,然后通过互相引用,得到我们想要的结果。

,