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

Power Query合并MB51与YS23表产生大量冗余行,如何解决?

解决Power Query合并MB51与YS23表后行数暴增的问题

问题核心是两张表存在重复的Sales Document值,导致多对多合并产生笛卡尔积——比如MB51中同一销售文档有3行,YS23中对应文档有5行,合并后会生成3×5=15行重复匹配结果,最终行数失控。以下是具体解决步骤:

1. 先清理MB51表,去除冗余重复行

根据你的需求(匹配组装产品BOM),MB51的重复行大多是同一销售订单的物料移动记录,只需保留每个Sales Document对应的核心信息:

  • 打开MB51的Power Query编辑器,选中Sales Document列,点击开始>删除重复项(如果每个销售文档对应唯一组装产品)。
  • 若同一销售文档下有多个组装产品,先筛选出组装产品的物料编码,再对Sales Document+组装产品编码组合执行删除重复项操作。

2. 整理YS23表的BOM数据,消除重复条目

YS23的重复行通常是同一BOM条目的重复导出,需先整理:

  • 打开YS23的Power Query编辑器,选中Sales Document、Material、Material Description三列,点击开始>删除重复项,保留每个销售文档下唯一的BOM组件条目。
  • 若需要将同一销售文档的所有BOM组件合并为一行(方便后续查看),可使用转换>分组依据:
    • 分组依据选择Sales Document,新列名设为BOM组件列表,操作选择所有行;
    • 添加自定义列,用公式Text.Combine(List.Transform([BOM组件列表], each [Material] & " - " & [Material Description]), ", ")将组件合并为逗号分隔的文本。

3. 重新执行合并操作

  • 使用清理后的MB51和YS23表,基于Sales Document列执行左外部合并(保留MB51所有行,匹配YS23对应行)。
  • 展开合并列时:若YS23是去重后的单一条目,直接展开Material和Material Description;若已分组合并,则展开BOM组件列表列。

4. 特殊场景处理(需保留MB51原始所有行)

如果必须保留MB51的每一行物料移动记录,可先给MB51添加唯一索引列:

  • 点击添加列>索引列,生成唯一标识;
  • 合并YS23去重后的表,此时每个MB51行只会匹配到YS23中对应的唯一BOM条目,不会产生笛卡尔积。

额外校验点

合并前检查Sales Document列的格式一致性:用转换>修整去除前后空格,统一设置为文本类型,避免因格式差异导致的错误匹配或匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:22:45