首页 > excel高级函数_PowerQuery 进阶之 M 函数学习

excel高级函数_PowerQuery 进阶之 M 函数学习

草色新雨中, 松声晚窗里。

fa2e484239ee587b27dac1023f87a87d.png之前我们学习 Power Query 都是用鼠标就完成了很多复杂的操作。虽然 PowerQuery 已经将大部分常用功能内置成到功能区。基本能完成我们大部分的报表自动化功能。但是总有些复杂的或者个性化的问题是开发团队没有预先想到的,这时我们就需要学习 M 语言。721d4f22912f2a6c25d90d7e26eb8411.png一、M 语言在哪里?M语言的函数公式有三个地方可以进行查看和编写。自定义列我们上一篇文中已经开始接触到 M语言,新建自定义列时使用了 M 语言的语法和一些 M 函数。我们在自定义列的对话框中需要编写 M语言公式。8f82afce452d366000e4ff0fa4bbfbd0.png除了上一篇文中讲到的将两列相加,以为我们还可以使用以下语法对两列进行常规的运算a55514df31dd7814922cb1be57063ec3.png可以看到常规的四则运算符在 Excel 与 PQ 中是共用的,但是公式书写有所区别。PQ 中以列名称作为参数进行运算,而且列名以中括号 [ ] 包围。公式编辑栏当我们完成新建自定义列,以后可以在 PQ 的公式编辑栏里面看到该步骤对应的 M函数。57896ff1d3c8c3096749ecabb98db19d.png新建列使用了 Table.AddColumn 函数,而我们在自定义列对话框中设置设置的列名和输入的公式,其实就对应了该函数的第一(新列名)和第三个(列生成方式)参数。Table.AddColumn 的语法如下:
Table.AddColumn(table as table, newColumnName as text, columnGenerator as function, optional columnType as nullable type) as table
高级编辑器接触过 VBA 自动化的都知道,Excel 提供了宏录制功能。而宏录制下来的代码就是 VBA 代码。M 函数也有类似的功能。在 PQ 界面上的所有操作都被录制成 M函数记录成代码在视图的高级编辑器中。「视图」>「高级编辑器」10ceedde8e496ec0bed22965a7c5fd0f.png二、M语言基础及常用函数PowerQuery 的 M 函数和 Excel 函数公式有很大的不同,以下 3 点是大部人都很容易混淆的。
  • M 函数大小写敏感,Excel 对大小写不敏感。

  • PQ 行号以 0 为基数,Excel 行号以 1 为基数。

  • PQ 对数据类型严格要求,Excel 中数据转换是隐式的。

第一个不同点在 PQ 还没有函数智能填充功能(IntelliSense)时尤其让人头疼,最新版的 PQ查询编辑器提供了函数自动填充功能,实现了和 Excel 一样方便的函数输入体验。9a944e2b0b0df1134a6cb39277c0f1c3.pngPQ 和 Excel 中最大的不同是,你看到的每一个单元格里面不仅仅只能存储一个特定类型的值,而是可以储存二进制文件、表、记录、列表等 PQ 对象。也正是这种特性,让 PQ 的功能更强大。当然也因此带来了一定的学习难度。
  • 表在 PQ 中显示为 Table,这种数据类型中包含了一整个表的内容

  • 表名称和一行内容称为Record,用中括号[]表示,比如= [Name="Ken Puls", Country="Canada“]

  • 表的一列称为 List,用大括号表示{},比如 = {"Puls,Ken","Escobar,Miguel"}

M 函数和 Excel 函数比起来用法和书写也有很大的区别。M 函数一般会包含两个部分,第一部分通常表示函数所在的类别,第二部分通常表示函数的功能。比如我们之前学过的 Excel.Workbook(),同样的函数还有 Csv.Document()、Web.Page()等。常用M函数List 类函数List.Sum 对列表求和List.Max 对列表求最大值List.Min 对列表求最小值List.Count 对列表计数,和 Excel 的 count 函数一致Text 类函数:Text.Start 类似 Excel 中的LEFT,提取字符串前 N 个字符 Text.End 类似 Excel 的RIGHT ,提取字符串后 N 个字符     Text.Contain 类似 Excel 中的 FIND 函数,查找指定字符串Text.Select 用来提取指定的字符或者字符列表Text.Remove 删除指定字符或者字符列表类型转化函数Date.ToText  将日期格式数据转换成文本Time.ToText  将时间格式数据转换成文本Number.ToText 将数值格式数据转换成文本条件判断if else thentry otherwise三、M函数学习手册M函数学习网站在添加自定义列的对话框下方有一行蓝色的字「了解 Power Query 公式」,这其实是一个网页链接打开以后可以知道微软官方 Power Query M 函数文档。114855673b3026efcbce76a7308ebebd.png打开链接以后我们可以看到所有的 M 函数列表,并且对每个函数的语法和参数都进行了很好的解释说明。这是我们学习 M 函数的一个好地方。b4027ca4c79e9a7652b53bf1616aad62.pngM函数列表另一种查看M函数列表的方法是新建一个空查询,在公式编辑栏中输入 =#shared,按下回车。cfe2da1fd45fefc6acb9e66ac4258744.png新建空查询方法这时就能看到所有的 M 函数列表了、点击想要查看的函数,在下方就可以看到关于该函数的语法和参数注释了。
ca824ea3a3ab1820aafe7fb47a732c80.png

使用 PowerQuery 的添加列功能丰富数据

c7800802b25058ad14f04051ee60ee4d.png

对比 Excel 轻松学会 PowerQuery 的逆透视与分组依据功能

18cb3a38261a142bed452fa42911a84a.png

一秒合并多个表格数据,你也能快速学会

更多相关:

  • 前言从2020年3月份开始,计划写一系列文档--《小白从零开始学编程》,记录自己从0开始学习的一些东西。第一个系列:python,计划从安装、环境搭建、基本语法、到利用Django和Flask两个当前最热的web框架完成一个小的项目第二个系列:可能会选择Go语言,也可能会选择Vue.js。具体情况待定,拭目以待吧。。。基本概念表达式表...

  • 1.1函数1.1.1什么是函数函数就是程序实现模块化的基本单元,一般实现某一功能的集合。函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能,进行一系列的逻辑运算return 返回值:函数的返回值能表示函数的运行结果或运行状态。1.1.2函数的作用函数是组织好的,可重复使用的,用来...

  • 原标题:基于Python建立深度神经网络!你学会了嘛?图1 神经网络构造的例子(符号说明:上标[l]表示与第l层;上标(i)表示第i个例子;下标i表示矢量第i项)单层神经网络图2 单层神经网络示例神经元模型是先计算一个线性函数(z=Wx+b),接着再计算一个激活函数。一般来说,神经元模型的输出值是a=g(Wx+b),其中g是激活函数(...

  • 在学习MySQL的时候你会发现,它有非常多的函数,在学习的时候没有侧重。小编刚开始学习的时候也会有这个感觉。不过,经过一段时间的学习之后,小编发现尽管函数有很多,但是常用的却只有那几个。今天小编就把常用的函数汇总一下,为大家能够能好的学习MySQL中的函数。MySQL常使用的函数大概有四类。时间函数、数学函数、字符函数、控制函数。让我...

  • 接着上次的→→EXCEL利用贝塞尔函数模拟天线3D方向图一、用EXCEL尝试绘制成类似下面极坐标的方向图还是先从2D入手把X轴扩展到XY平面,先尝试用20×20个点来试一下利用下面的代码批量单变量求解计算偏轴角度φSub 极坐标()Application.ScreenUpdating = FalseDim m, nFor m =...