Power BI—-M函数*

Power BI—-M函数*M 函数是 PQ 处理数据的内核 相对复杂些 对于初学者 这作为了解 确保能看懂就行 m 函数

大家好,欢迎来到IT知识分享网。

  通过前面的学习,我们已经知道,BI前期的数据处理都是PQ完成的,但是PQ没有EXCEL中的撤销指令,那我们出错怎么搞呢?没错就是通过应用步骤,如下图:

在这里插入图片描述

  • 撤销:点击步骤前面的X号,就可以删除改操作(需要注意的是,当删除中间步骤时,它会影响后续的操作甚至出错,所以一般不建议删除中间步骤
  • 修改:当不需要撤销,只需要调整时,点击步骤后面的齿轮,就可修改相应的操作

  看了这么多,你可能好奇这个是怎么实现的,没错!就是今天的内容————M函数。

认识M函数

  就像Excel有自己函数、BI有自己的函数一样,PQ也有自己的函数即M函数,其实在我们使用的PQ的过程中就可以看到每一步操作的M函数,如下图:

在这里插入图片描述
  当然,认识M函数不能一句句看,所有要打开它的编辑器,如何打开呢?看下图:
点击主页选项卡,点击高级编辑器,然后就可以看到该数据所有的M函数了。
在这里插入图片描述
  
在这里插入图片描述




M函数的语法结构和数据结构

1.M函数的基本规范

  • M函数对大小写敏感,每一个字母必须按函数规范书写,第一个字母都是大写
  • 表用Table、行用Record,列用List
  • 行标用大括号{},比如取第一行的内容:=表{0} //PQ的第一行从0开始
  • 列标用中括号[],比如取自定义列的内容:=表[自定义]
  • 行列同时取:取第一行自定义列的内容:=表{0][自定义]

2.M函数的语法结构

步骤通常格式:步骤名称 = 函数名称(上一步步骤名称:操作)

3.示例讲解

  • 通过上面高级编辑器窗口,我们看到,所有的步骤放置在 let in 的框架中,let之后是操作步骤,in之后是输出的步骤名
  • Python.Execute(代码):获取数据源,这里用的python脚本;Folder.Files(路径)是文件夹获取
  • 源{[Name=“draw_data”]}[Value]:提取上一步骤(名字是源)的draw_data行和Value列
  • 更改的类型 = Table.TransformColumnTypes(draw_data1,{
    {“分组”, type text}, …}):更改数据类型,其中更改的类型是步骤名,Table.TransformColumnTypes是函数,draw_data1上一步骤名,{“分组”, type text}分组列设置text格式
  • 已添加条件列 = Table.AddColumn(更改的类型1, “大部”, each if [分组] = “成都1组” then…):给更改的类型1这个步骤添加了大部列,列根据分组列条件判断生成,并给这一步起名已添加条件列。
  • in 重排序的列:in之后是输出,跟最后结果的步骤名即可

注意:

  • 所有步骤在let之后,每个步骤逗号隔开,最后一步不用逗号
  • 步骤名不能重复
  • in 之后可以跟任何你需要的步骤名,但不能有逗号

常用M函数

list函数:多用于分组聚合

函数 说明
List.Sum() 对列表求和
List.Max() 对列表求最大值
List.Min() 对列表求最小值
List.Count() 对列表计数,和 Excel 的 count 函数一致

Text 类函数:多用于字符串操作

函数 说明
Text.Start() 提取字符串前 N 个字符,类似 Excel 中的LEFT
Text.End() 提取字符串后 N 个字符,类似 Excel 的RIGHT
Text.Contain() 查找指定字符串,类似 Excel 中的 FIND 函数
Text.Select() 提取指定的字符或者字符列表
Text.Remove() 删除指定字符或者字符列表

类型转化函数:多用于格式转换

函数 说明
Date.ToText 将日期格式数据转换成文本
Time.ToText 将时间格式数据转换成文本
Number.ToText 将数值格式数据转换成文本

条件判断函数:多用于多条件处理

函数 说明
if then else then 如果怎么样,否则怎么样
try otherwise

学习建议

  M函数很强大,我们没法直接点击实现的操作,理论上都可以通过编写M函数实现,但同时,M函数也是复杂的,对于不是做这个专业的,个人建议没有必要一开始就去精通它,个人建议:

  • 知道在PQ哪里可以找到M函数编辑
  • 了解一些常用的函数
  • 知道M函数的语法结构
  • 能看懂生成的M函数

  前期在达成了上述的要求,后续慢慢精进自己的知识与水平。


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/140789.html

(0)
上一篇 2025-05-24 15:10
下一篇 2025-05-24 15:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信