Table.NestedJoin合并…Join(Power Query 之 M 语言)
数据源:
“销量表”和“部门表”两个查找表,每个表中都有“姓名”列
目标:
根据“姓名列”将“部门表”中对应的部门合并到“销量表”中。
操作过程:
选取“销量表”》【主页】》【合并查询】/【将查询合并为新查询】》选取“部门表”》选取匹配列》【确定】
M公式:
= Table.NestedJoin( 表1, {"表1匹配列1",...,"表1匹配列n"}, 表2, {"表2匹配列1",...,"表2匹配表n"}, "新列名", 匹配函数)
匹配函数:
JoinKind.LeftOuter / 1 / 缺省:左外部
JoinKind.RightOuter / 2:右外部
JoinKind.FullOuter /3:完全外部
JoinKind.Inner / 0:内部
JoinKind.LeftAnti / 4:左反
JoinKind.RightAnti / 5:右反
JoinSide.Left:相当于内部的效果
JoinSide.Right:相当于左外部的效果
扩展:
左外部合并查询
= Table.AddJoinColumn( 表1, {"表1匹配列1",...,"表1匹配列n"}, 表2, {"表2匹配列1",...,"表2匹配表n"}, "新列名")
模糊匹配的合并查询
= Table.FuzzyNestedJoin( 表1, {"表1匹配列1",...,"表1匹配列n"}, 表2, {"表2匹配列1",...,"表2匹配表n"}, "新列名", 匹配函数, 匹配选项)
匹配选项:[IgnoreCase=true / false, IgnoreSpace=true / false, NumberOfMatches=数字, Threshold=0到1之间的数字, TransformationTable=表名]
IgnoreCase:区分大小写
IgnoreSpace:忽略空格
NumberOfMatches:指定可为每个输入行返回的最大匹配行数
Threshold:指定两个值将按其进行匹配的相似性分数。
TransformationTable:允许根据自定义值映射来匹配记录的表
一步到位的合并查询
= Table.Join( 表1, {"表1匹配列1",...,"表1匹配列n"}, 表2, {"表2匹配列1",...,"表2匹配表n"}, 匹配函数)
各表匹配列名不重复时才可加上匹配函数
一步到位的模糊匹配合并查询
= Table.FuzzyJoin( 表1, {"表1匹配列1",...,"表1匹配列n"}, 表2, {"表2匹配列1",...,"表2匹配表n"}, 匹配函数, 匹配选项)