數據源:
“銷量表”和“部門表”兩個查找表,每個表中都有“姓名”列
目標:
根據“姓名列”將“部門表”中對應的部門合並到“銷量表”中。
操作過程:
選取“銷量表”》【主頁】》【合並查詢】/【將查詢合並為新查詢】》選取“部門表”》選取匹配列》【確定】
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"}, 匹配函數, 匹配選項)