You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI如何通过Power Query拼接合并3张表实现目标效果

Power Query 实现3张表错位并排拼接方案

你需要的拼接效果参考如下,和默认「追加查询」的纵向同列堆叠逻辑不同,本质是按行位置对齐、多表列横向并联合并:
concatenate table example and result

具体操作步骤

  • 给3张源表统一加索引列
    进入Power Query编辑器后,分别选中Code1、Code2、Code3三张表,每张表依次操作:点击顶部「添加列」选项卡 > 选择「索引列」> 统一设置为从0开始,保证三张表索引的起始值、步长完全一致。
  • 通过索引列做全外连接合并
    选中Code1表,点击顶部「主页」选项卡的「合并查询」:在弹窗中先点选Code1的索引列,再下拉选中Code2表、点选Code2的索引列,联接种类选择「完全外部(两者中的所有行)」后确认。此时会生成一列存储Code2匹配行的Table值,点击列头的展开图标,取消勾选索引列,按需选择是否保留原始列名前缀,确认展开即可得到Code1+Code2的合并结果。
    重复上述合并操作,将Code3表也通过索引列的完全外部联接合并到当前表中,展开Code3除索引外的所有业务列。
  • 清理冗余字段
    合并完成后,选中来自Code2、Code3的冗余索引列,右键删除即可;如果不需要索引做后续计算,也可以把初始的索引列一并删除,最终得到的就是和示例一致的目标表。

可直接复用的M代码

如果需要快速实现,可以新建空白查询,打开高级编辑器粘贴以下代码,替换为你实际的表名即可:

let
    // 读取三张源表,可替换为自己的实际表名
    T1 = Table.AddIndexColumn(Code1, "idx", 0, 1, Int64.Type),
    T2 = Table.AddIndexColumn(Code2, "idx", 0, 1, Int64.Type),
    T3 = Table.AddIndexColumn(Code3, "idx", 0, 1, Int64.Type),
    // 合并前两张表
    Merge12 = Table.NestedJoin(T1, {"idx"}, T2, {"idx"}, "T2_Cols", JoinKind.FullOuter),
    Expand12 = Table.ExpandTableColumn(Merge12, "T2_Cols", List.Difference(Table.ColumnNames(T2), {"idx"})),
    // 合并第三张表
    MergeAll = Table.NestedJoin(Expand12, {"idx"}, T3, {"idx"}, "T3_Cols", JoinKind.FullOuter),
    ExpandAll = Table.ExpandTableColumn(MergeAll, "T3_Cols", List.Difference(Table.ColumnNames(T3), {"idx"})),
    // 清理冗余索引列
    Result = Table.RemoveColumns(ExpandAll, {"idx"})
in
    Result

提示:如果三张表存在重名列,展开列时建议给列名加表名前缀,避免重名报错。比如展开Code2列时,可将列名列表做一层转换,给所有列名前加上Code2_前缀即可。

内容的提问来源于stack exchange,提问作者Tan Saint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:24:33