乐于分享
好东西不私藏

EXCEL|Power Query应用之深化

EXCEL|Power Query应用之深化
深化可以理解为通过位置信息查找结构化数据中的值。这里的值可以是原生数据,也可以是结构化数据。在M语言中,用于深化数据的操作符是"{}"和"[]"."{}"用于按位置返回值,位置索引从0开始。"[]"用于按字段名(列名)返回值。
对列表的深化,一般通过位置实现;对记录的深化则通过字段名实现。对于列表中的第一个和最后一个成员可以通过List.First()和List.Last()函数获取。以下为示例。
={1..10}{3}//深化列表中第3个成员,返回值为4
=[工号=0002,性别="男",年龄=23][年龄] //深化记录中年龄字段,返回值23
=List.First({1..10})  //深化列表中第一个成员,返回值为1
对表的深化可以分成3种情况,深化表的某一列可以用[列名]实现;深化表 某一行可以通过{位置索引}来实现,如果要深化到单元格中的具体数据,则需要结合以上2个方法实现。示例如下。
=表{2} //深化表的第3行,返回值为记录。
=表[年龄]  //深化表的年龄列,返回值为列表
=表[年龄]{2}  //深化表的年龄列的第3行的值。
因为表的行索引都是从0开始的,所以深化表中的第n行的表达式为:表{n-1}.
以下咱们通过一个案例来巩固下深化功能的使用:
如下图所示,我们从左图的价格表为右图的产品表的每个产品匹配价格。
首先,将价格表和产品表分别导入到Power Query编辑器,选择产品表,然后添加自定义列,在“自定义列公式”文本框中输入公式=价格表{[产品=_[产品]]}[价格],如下图所示:
这个公式,在产品表里引用了价格表的数据。花括号用来深化表的行,该行需要满足指定的条件,花括号里的"[产品=_[产品]]"就是筛选条件,可以理解为其作用为从价格表里筛选出与所在单元格的产品名称匹配的行(记录)。使用方括号定位价格列,然后返回相应产品的价格。
深化的功能,在定位值的时候,我们用的还是很多的。希望大家多多练习,能熟练掌握。