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

Excel Power Query按ID列表连接两表执行Table.NestedJoin报错求助

报错原因

Table.NestedJoin做表连接时,要求两侧指定的连接键数据类型、值层级完全匹配。你的代码报错核心原因是连接键类型不匹配:

  • Table2的List of ids字段存储的是列表(List)类型值,单个单元格内包含多个ID
  • Table1的ID字段存储的是标量单值(数字/文本等单个值)
    拿列表类型的列和单值类型的列做连接匹配,Power Query无法对齐匹配逻辑,直接触发报错。
正确关联步骤
  • 第一步:先展开Table2中的ID列表,把每行存储的多个ID拆分为独立行,让连接键变为单值。使用Table.ExpandListColumn函数实现:
#"展开ID列" = Table.ExpandListColumn(#"Table2", "List of ids")
  • 第二步:校验两表连接键的数据类型,将展开后的List of ids列和Table1的ID列转为完全一致的类型(比如统一为文本、或统一为整数),类型不一致时用Table.TransformColumnTypes做转换即可。
  • 第三步:执行左外连接操作,此时两侧连接键都是同类型单值,可正常匹配。完整参考M代码:
let
    读取Table2 = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    展开ID列表 = Table.ExpandListColumn(读取Table2, "List of ids"),
    // 类型不匹配时取消下一行注释,按需修改目标类型
    // 统一ID类型 = Table.TransformColumnTypes(展开ID列表,{{"List of ids", type text}}),
    左外连接 = Table.NestedJoin(展开ID列表,{"List of ids"},Table1,{"ID"},"匹配结果",JoinKind.LeftOuter),
    展开匹配字段 = Table.ExpandTableColumn(左外连接, "匹配结果", {"Name"}, {"匹配到的Name"})
in
    展开匹配字段

如果需要保留Table2原始的行结构(不拆分ID为多行),可以在完成匹配后,按Field、Field2两个原表字段分组,将匹配到的Name值聚合为列表,即可还原为原表每行对应多条匹配结果的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:43:13