转载自微信

前言:
查询增强版(Power Query)是Excel Power BI组件中用于数据导入、数据整合以及数据处理的插件工具。适用于Excel 2010以上版本,在Excel 2010以及Excel 2013中需要下载插件安装加载后使用,在Excel 2016版本中Power Query被内置在数据选项卡的获取和转换工具集中。在Power Query帮助下,Excel不再受限于数据的行数限制,可以快速关联并整合多种来自不同数据源的数据信息,可以像数据库一样对表结构数据进行加工整理。Power Query令Excel从制表工具华丽变身为数据综合处理平台…

晦涩难懂的IT语言到此为止,说点好懂的就是使用Power Query可以帮助各位表哥表姐早干完活儿早回家、可以帮助大家在团队中脱颖而出升职加薪。未来你说你不懂Power Query,可能在“表圈”就混不下去了。

在众多Power Query的使用者中也是存在鄙视链的:

本系列文章主要向大家系统介绍鄙视链中上边两层关于M函数的内容。至于Power Query的基本操作相关内容,还请大家通过度娘或是报名我的Excel BI相关课程了解学习(在秒懂Club公众号内输入“课程”关键字便可了解我的现有课程)。

正文:
M函数是Power Query专用的函数语法,使用M函数可以帮助我们自由灵活地完成数据导入、整合、加工处理等任务工作。Power Query的界面操作只能发挥其全部能力的20%,剩余80%的能力都要通过M函数来实现。
M函数在使用方法上与Excel的基本函数功能完全不同,M函数更像是一门专用于数据处理的编程语言,学习M函数首先我们要了解它的基本表达式、数据类型以及数据结构。下边就着重为大家介绍这三方面内容。
※大家可以在Power Query的查询编辑器内新建空查询,并在视图选项卡内的高级编辑器中复制案例代码了解每个案例代码的执行结果。


※ //符号为M语句的注释符
M函数基本表达式:
let…in…结构:
let用于封装计算结果,并为计算结果命名。
in用于显示结果

例:
let
Source = Text.Proper(“hello world”)
in
Source

解说:通过let语句将Text.Proper(“helloworld”)函数的计算结果封装到名叫Source的变量中,再通过in语句显示Source变量的内容“hello world”。


M函数基本变量:


自定义函数:
函数名 = (参数1,参数2,参数3……) =>函数运算表达式
※通过调用函数得到的函数返回值称为函数值

例:
let
MyFunction = (parameter1, parameter2) =>(parameter1 + parameter2) / 2
Final = MyFunction(2,4)
in
Final

解说:以上代码执行结果为3,先在let中创建名为MyFunction的自定义函数,函数有parameter1和parameter2两个参数,函数的运算表达式为(parameter1 + parameter2) / 2,之后在let中使用2与4两个参数调用MyFunction函数,MyFunction函数将运算结果返回给变量Final,最后在in中显示Final变量的内容3。


结构化数值:

  • 1.列表(List):

列表是扩在花括号中的一组数据,列表中每个数据都有属于自己的序号以便自己能够被检索到,列表中的数据序号从0开始按照排列顺序依次整数递增,大列表内还可以嵌套子列表、记录等。花括号除了用来括起列表内的所有数据还用来指定列表内数据的序号,通过指定数据序号可以从列表内找到并获取所需的数据值。


  • 2.记录(Record):

记录用来定义字段和给字段赋值,一个字段由字段名以及字段内的值组成,字段名是唯一的文本值,是字段的标识符。字段名可以不用引号引用,字段名有两种表达形式:

记录中的内容写在[]括号内,[]括号同样用于在记录中取特定字段的值。

例1:定义字以及显示记录内所有内容
let Source =
[
OrderID = 1,
#“CustomerID” = 1,
Item = “Fishing rod”,
Price = 100.00
]
in Source

例2:定义字以及显示记录内[Item]字段的值
let Source =
[
OrderID = 1,
#“CustomerID” = 1,
Item = “Fishing rod”,
Price = 100.00
]
in Source[#“CustomerID”] //equals 1


  • 3.表(Table):

表是由行列数据构成的,可以使用隐式或显示方式定义字段(列)的数据类型。使用#table建表时,可以使用列表或者记录来定义列名,并使用嵌套列表来定义表中的数据,嵌套列表的大列表内包含所有定义单行用的子列表,而每个子列表则用来定义一行数据。花括号{}可以用来索引查找指定行的数据。

例1:隐式字段表
let
Source = #table(
{“OrderID”, “CustomerID”, “Item”,“Price”},
{
{1, 1, “Fishing rod”, 100.00},
{2, 1, “1 lb. worms”, 5.00}
}
)
in Source
例2:显示字段表
let
Source= #table(
type table [OrderID = number, CustomerID = number, Item = text, Price = number],
{
{1, 1, “Fishing rod”,100.00},
{2, 1, “1 lb. worms”, 5.00}
}
)
in Source
例3:建表后取表中第一行数据
let
Source = #table(
type table [OrderID = number, CustomerID = number, Item = text, Price =number],
{
{1, 1, “Fishing rod”, 100.00},
{2, 1, “1 lb. worms”, 5.00}
}
)
in Source{1}


其他数据结构案例:
数据结构中可以包含任意M值,以下为一些案例:
例1:复合数据结构的列表
let
Source =
{
1, //数值
“Bob”, //文本
DateTime.ToText(DateTime.LocalNow(), “yyyy-MM-dd”), //函数值
[OrderID = 1, CustomerID = 1, Item = “Fishing rod”, Price =100.0] //记录
}
in Source
例2:包含子列表的记录
let
Source = [CustomerID = 1, Name = “Bob”, Phone =“123-4567”, Orders =
{
[OrderID = 1, CustomerID = 1, Item = “Fishing rod”, Price =100.0],
[OrderID = 2, CustomerID = 1, Item = “1 lb. worms”, Price =5.0]
}
]
in Source


if表达式:
if表达式通过对逻辑条件进行判断来对两个表达式进行选择。
例:
if 2 > 1 then
2 + 2
else
1 + 1

解说在上述案例中,因为判断条件2>1的逻辑值为真,所以执行第一个表达式2+2,所以执行结果为4,如果判断条件改为2<1,则其判断条件的逻辑值为假,所以会执行第二个表达式1+1,此时的执行结果为2.

Power Query|M函数:数据类型及数据结构相关推荐

  1. Power Query M函数_我常用的玩法

    跟据日期字段,为表格增加年. 月.日3个字段 = Table.FromRows(List.Transform(Table.ToRows(ZCESRSET_Table),each _ & [a= ...

  2. BI神器Power Query(11)-- PQ M函数快速查询

    Power Query M 函数超过700个,基本上不太可能完全记住全部的函数的使用方法,大家可以通过微软在线帮助(Power Query M 函数参考)查询函数的含义和使用方法. 其实在Power ...

  3. Power Query 系列 (13) - 自定义函数

    本篇博客介绍 Power Query 自定义函数的技巧,在 PQ 中计算个税. 以工资类所得应交个税为例,最新的个税起征点为 5000 并按下表的级次进行缴税(假设没有其它扣除项). 对照税率表,我们 ...

  4. Power Query 系列 (11) - 函数基础

    函数是 Power Query (PQ) 解决问题的核心.之前的博客文章我多层刻意在完成查询的步骤之后显示高级编辑器中 M 语言代码,想必大家已经对 M 的函数有了初步印象,尽管不一定很关注.本篇介绍 ...

  5. desc excel 公式_Excel小技巧之Power Pivot Generate函数、高级DAX函数与常用筛选器函数...

    一.使用Generate函数创建信息叠加表 [目标:将姓名与月份组合,生成每个月份均有对应姓名对应的表格][基本思路:pivot中创建度量值,利用DAX函数创建链接回表后在EXCEL释放]       ...

  6. BI神器Power Query(12)-- PQ创建时间维度表(1)

    Power Query支持数据模型,可以将多种数据添加到数据模型,然后建立关联关系并进行后续分析.有些时候会使用类似于数据仓库星形模型的方式进行关联,这里常用的两类表为维度表和事实表.维度表是维度属性 ...

  7. python数据类型与数据结构--内置数据类型

    学习目标:将python所涉及的数据类型.数据结构弄清楚 python作为面向对象编程语言.那么代表数据的对象都有哪些呢? 在这里我把他们分为内置数据类型,文件数据类型,第三方常用数据结构和自定义的数 ...

  8. power query 向下填充_Power Query 系列 (12) - Power Query 结构化列应用案例

    本篇数据处理来自一个实际处理数据的简化.下图中,假设左边是一个直观的 BOM 结构展示,数据在 Excel 中存储格式如中间部分所示:第一列为物料编码的级别,第二列为物料编码.数据处理任务:需要在 E ...

  9. Power Query 系列 (12) - Power Query 结构化列应用案例

    本篇数据处理来自一个实际处理数据的简化.下图中,假设左边是一个直观的 BOM 结构展示,数据在 Excel 中存储格式如中间部分所示:第一列为物料编码的级别,第二列为物料编码.数据处理任务:需要在 E ...

最新文章

  1. java 并发包学习_Java学习笔记—多线程(java.util.concurrent并发包概括,转载)
  2. Docker Swarm服务发现和负载均衡原理
  3. 【小练习03】CSS-表格(table)--天气预报
  4. 线段树练习——区间合并
  5. 使用 FocusScopeNode 在 TextFormFields 之间轻松移动焦点
  6. bzoj 3173 最长上升子序列
  7. 如何在SharePoint 2010项目中引用UserProfiles.dll
  8. 总结G1垃圾收集器面试题
  9. i5700 预,链接
  10. java 微服务源码_Redkale 1.9.4 Java 分布式微服务框架
  11. Spring boot 2.x + Thymeleaf 公共部分抽取
  12. lighttools用透镜旋转手动创建菲尼尔透镜
  13. 笔记本输字母p出现仅计算机,电脑打不了字只有字母怎么办?最简单的解决方法...
  14. Center7.8服务器配置Tor服务和obfs4
  15. 五、ELK设置用户密码登陆
  16. 驾驭你的“职场布朗运动”---转载
  17. css图片背景之雪碧图的使用
  18. mongodb异常恢复 --repair
  19. sql是什么mysql是什么_sql是什么意思
  20. 基于游戏付费数据,对战数据分析

热门文章

  1. 跨平台应用开发进阶(四十五)uni-app集成企微客服实战
  2. @Before和@After的区别
  3. python结巴分词 能分英文吗_NLTK(一):英文分词分句
  4. USB转换芯片(用来做鼠标键盘)
  5. Mux VLAN 原理
  6. 长春初一学生数学补习班哪家好/麦田1对1补习费用
  7. python编程做联机游戏大全单机_手把手教你将单机游戏改造成对战网游(附详细教程)...
  8. 前程无忧引入最新版情境领导SLX课程
  9. 红酒的色香味怎么产生的
  10. macbook pro能搜索到wifi,但是连接不上