Table.NestedJoin合并…Join(Power Query 之 M 语言)

数据源:

  “销量表”和“部门表”两个查找表,每个表中都有“姓名”列

目标:

  根据“姓名列”将“部门表”中对应的部门合并到“销量表”中。

操作过程:

  选取“销量表”》【主页】》【合并查询】/【将查询合并为新查询】》选取“部门表”》选取匹配列》【确定】

   

   展开Table.Expand…

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"}, 匹配函数, 匹配选项) 

posted @ 2021-11-27 19:40  熬肥妖  阅读(3089)  评论(0编辑  收藏  举报