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

如何在Power Query中通过另一表匹配值新增列?

在Power Query中通过匹配关联表为现有表新增列

需求:基于Site Name字段,用转换表(Table 1)的Code值为主数据表(Table 2)填充新列,完成后可通过该新列与其他表建立关系。

示例数据

转换表(Table 1)

Site NameCode
Los AngelesLAX
SeattleSEA
ChicagoORD

主数据表(Table 2,需新增列)

Site NameNew Col
Los Angeles
Seattle
Chicago

错误尝试代码

你之前的代码存在语法逻辑问题,比如错误引用列而非整张表、判断条件逻辑颠倒:

List.Max(Table.SelectRows(#"Table 1"[SiteName], (x) => x[Code] = #"Table 2"[SiteName]))

正确实现方法

方法1:使用Table.AddColumn结合Table.Lookup(推荐,简洁高效)

在Table 2的查询编辑器中添加自定义列,通过Table.Lookup匹配站点名称并返回对应Code:

Table.AddColumn(
    #"Table 2",
    "Code",
    (row) => Table.Lookup(#"Table 1", "Site Name", row[Site Name], "Code")
)
  • 说明:(row)代表Table 2的当前行,row[Site Name]获取当前行的站点名称,随后在Table 1中匹配对应行并返回Code值。

方法2:可视化合并查询(无需大量代码)

  1. 在Power Query编辑器选中Table 2,点击主页→合并查询→合并查询作为新列
  2. 在弹窗中:
    • 选择Table 1作为关联表
    • 分别在两张表中选中Site Name作为匹配字段
    • 连接类型选择左外部(保留Table 2所有行,匹配Table 1对应行)
  3. 确定后,点击新列标题旁的展开按钮,仅勾选Code列完成填充。

方法3:Table.AddColumn结合List.Select(灵活自定义筛选)

如果需要更复杂的筛选逻辑,可手动实现匹配:

Table.AddColumn(
    #"Table 2",
    "Code",
    (row) => 
        let
            matchedRows = Table.SelectRows(#"Table 1", each [Site Name] = row[Site Name]),
            codeValue = if Table.RowCount(matchedRows) > 0 then matchedRows{0}[Code] else null
        in
            codeValue
)

完成操作后,Table 2的新列会被正确填充Code值,后续可直接用该列与其他表建立关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:57:16