数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数

摘要:
用户定义函数的参数不需要每次手动输入。您还可以调用其他数据,例如将上述序列转换为表,然后添加用户定义的列=mylist。用户定义列的每行数据是从1到第一列的序列。从这里,您还可以看到用户定义的函数mylist可以用作其他标准M函数。但是,在某个步骤中使用的用户定义函数只能由查询使用,而之前生成的用户定义的函数mylist可以由文件中的所有查询使用。

https://zhuanlan.zhihu.com/p/64415763

使用Power Query进行复杂一些的数据处理,离不开M函数,目前已经有超过700个函数了,基本上各式各样的数据处理需求都可以使用M函数实现,如果你觉得这些还不够,或者使用起来不是很方便,也可以在PQ中自定义函数。

 

自定义函数的语法

 

如果在M编辑器中看到这个符号: => ,就是有自定义函数在里面,自定义函数的基本语法是:

 

函数名=(参数1,参数2,参数3……)=>表达式

 

函数名可以任意写,只要和M语言里的关键字不要重复就行,参数至少有1个,放在括号中,如果有多个参数,以逗号分隔,=>后面就是自定义函数的表达式。

 

为了保证结果的准确性,可以预先限定参数的数据类型,假如有两个参数a和b,限制为数值型,可以这样写:

 

函数名=(a as number,b as number)=>表达式

 

当然不限制也是可以的,不限制就是可以为任意类型。

参数还可以是可选的,在参数前加上optional就可以了,比如有两个参数,第一个参数a,第二个参数b是可选参数,自定义函数这样写:

 

函数名=(a,optional b)=>表达式

 

这样只要输入参数a,无论是否输入参数b都可以调用这个自定义函数了。

 

自定义函数示例

 

我们先在Power Query编辑器中创建一个简单的自定义函数,新建一个空查询,在编辑器重输入:= (x)=>{1..x},确定后出现参数调用窗口,

 

数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数第1张

 

这个自定义函数只有一个参数x,生成从1到x的序列,指定为自定义函数后,左边的空查询类型就变成了fx,名称可以根据自定义函数的含义进行重命名,这里把函数名改成mylist。

 

参数x输入10,点击"调用":

 

数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数第2张

 

就生成了从1到10到一个序列。

自定义函数的参数不是每次都要手动输入进去,同样可以调用其他数据,比如将上面的这个序列转化为表,然后添加一个自定义列=mylist([Column1])

 

数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数第3张

 

 

这个自定义列的每一行数据,就是从1到第一列数据的序列,

 

数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数第4张

 

 

从这里也可以看出,自定义函数mylist可以和其他标准的M函数一样使用。

 

自定义函数也并不是一定要提前定义好,还可以在需要的时候随时自定义,并立即使用,还是上面的这张表,需要对第一列累计求和,即计算从第一行到当前行的合计数。

 

添加自定义列,公式可以这样写:

 

累计=List.Sum(Table.SelectRows(转换为表,(x)=>x[Column1]<=[Column1])[Column1])

 

 

数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数第5张

 

 

然后就生成一列累计数,和预想的一致,

 

 

数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数第6张

 

 

其中(x)=>x[Column1]<=[Column1]就是一个自定义函数,该自定义函数作为Table.SelectRows的条件返回小于等于当前行的所有行,然后对筛选出的这些行的[Column1]列,使用List.Sum来求和。

不过这种在某个步骤中使用的自定义函数,只能供该查询使用,而前面生成的自定义函数mylist,可以供该文件内的所有查询使用。

其实前面的文章中也使用过自定义函数,比如使用M生成日期表就使用了自定义函数,

 

数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数第7张

 

可以点击图片查看该文,了解利用自定义函数制作日期表的用法。

通过以上的介绍,基本可以对自定义函数有个初步的了解,其实自定义函数的用法很广泛,以后在进行复杂的数据处理时还会经常用到它。

免责声明:文章转载自《数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用PowerDesign15反向生成数据库Cesium数据可视化-仓储调度系统可视化部分(附github源码)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Grafana数据可视化

1.1 Grafana简介 1.1.1 Grafana是什么? 一个类似Kibana的东西,也是对后端的数据进行实时展示,那么Grafana和Kibana有什么区别?在我看来区别不大,不过在大家的日常使用中Kibana是跟着Logstash、ElasticSearch等组件一起使用做日志展示、索引、分析的,造成了一种假象就是Kibana就只有这种用...

Python之Numpy:二元函数绘制/三维数据可视化/3D

意义 在机器学习任务中选择计算模型或者学习数学时,可视化有助于研究函数值的变化趋势(观察收敛、分布、几何形状等),带来直观的感受。 源码 # 绘制二元函数 # 参考文献 # + python画二元函数的图像(3D) https://blog.csdn.net/your_answer/article/details/79135076 f...

太炫酷了|对全国大学数据进行可视化分析,看完后发现.....

大家好,我是阿辰。 今天带大家来看一下全国所有大学的数据信息(包括专本科,覆盖全国),一共是获取到了全国31个省份,共2769所大学。先预览一下数据: 这里字段主要是包括了(省份、大学、类型、公或民办、本会专科、985、211、双一流、城市、隶属于、地址) 本文除了讲解怎么获取数据外,还将对这些数据进行可视化展示分析。 PS: 下面将一大把可视化动图袭来...

利用django框架,手把手教你搭建数据可视化系统(一)

如何使用django去构建数据可视化的 web,可视化的结果可以呈现在web上。 使用django的MTV模型搭建网站 基础铺垫—MTV模型 Created with Raphaël 2.1.0Request服务器(Djangoweb)Response 首先,要搞清楚我们去访问服务器,服务器返回信息的行为。 1)Request向服务器(Djangoweb)...

Qt编写的项目作品6-可视化大屏电子看板系统

一、功能特点 整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件。 子控件包括饼图+圆环图+曲线图+柱状图+柱状分组图+横向柱状图+横向柱状分组图+合格率控件+百分比控件+进度控件+设备状态面板+表格数据+地图控件(包括动态闪烁点+迁徙图等)+视频控件+其他控件等。 二级界面可以自由拖动悬浮,支持最小化最大化关闭,响应双击...

利用NBI可视化+influxDB时序数据库构建物联网大数据分析平台

什么是时序数据库        先来介绍什么是时序数据。时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。 时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。        ...