Power Query中如何连接两表并保留所有匹配与不匹配的ID及对应值?
在Power Query中实现保留所有ID并取有效Col2值的表连接
直接按下面的步骤操作就能得到你要的结果:
步骤1:执行全外连接
- 先在Power Query编辑器里加载好Table A和Table B
- 点开始选项卡 → 合并查询 → 合并查询作为新查询
- 左表选Table A,右表选Table B,两个表都选ID列当连接键,连接类型选全外连接(所有行),点确定
步骤2:合并Col2列,提取有效值
- 合并后会多出一列带Table B数据的列(默认叫Table B),点列右侧的展开按钮,只勾Col 2,取消“使用原始列名作为前缀”,确定
- 这时会有两列Col2(比如Col2和Col2.1),添加自定义列,公式写:
if [Col 2] <> null then [Col 2] else [Col 2.1] - 把这个自定义列重命名成Col 2,删掉原来的两列Col2
步骤3:清理重复行(可选)
- 全外连接后ID1-3可能会各留一行,直接点ID列 → 开始选项卡 → 删除重复项,确保每个ID只保留一行
如果习惯用M代码直接写,也可以用这段:
let SourceA = Table.FromRecords({ [ID=1, Col2="A"], [ID=2, Col2="B"], [ID=3, Col2="C"] }), SourceB = Table.FromRecords({ [ID=1, Col2=null], [ID=2, Col2=null], [ID=3, Col2=null], [ID=4, Col2="D"], [ID=5, Col2="E"] }), FullJoin = Table.FullOuterJoin(SourceA, "ID", SourceB, "ID"), MergeCol2 = Table.AddColumn(FullJoin, "Col 2", each if [Col2] <> null then [Col2] else [Col2.1]), CleanTable = Table.Distinct(Table.SelectColumns(MergeCol2, {"ID", "Col 2"})) in CleanTable
内容的提问来源于stack exchange,提问作者plast1cd0nk3y
相关产品推荐
相关产品推荐

