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

Power Query条件合并:为FirstAPI添加newCol列的技术问询

Power Query M语言解决方案:生成newCol列

问题分析

你需要在FirstAPI中新增newCol列,规则是优先使用自身的policyTypeName,当该值为null时,通过policyTypeId匹配SecondAPI中的对应policyTypeName。原代码的问题在于语法不符合M语言规范,无法正确从SecondAPI中提取单个匹配值。

解决方案

方案1:通过查询合并实现(可视化操作,易上手)

  1. 打开FirstAPI查询,点击主页→合并查询→合并查询(直接合并到当前查询)
  2. 合并配置:
    • 左表选择FirstAPI,选中policyTypeId列
    • 右表选择SecondAPI,选中policyTypeId列
    • 连接类型选左外部(保留左表所有行,匹配右表对应行)
  3. 点击确定后,新列会显示匹配的SecondAPI行记录,点击列标题右侧的展开按钮,仅勾选policyTypeName,将展开后的列命名为matched_policyTypeName
  4. 添加自定义列newCol,输入公式:
    if [policyTypeName] <> null then [policyTypeName] else [matched_policyTypeName]
    
  5. 可按需删除matched_policyTypeName列

方案2:直接编写M语言自定义列(一步到位)

利用List.Single和List.Select提取唯一匹配值(因SecondAPI是一一映射,所以只会有一个匹配结果),公式如下:

if [policyTypeName] <> null 
then [policyTypeName]
else List.Single(List.Select(SecondAPI, (row) => row[policyTypeId] = [policyTypeId])[policyTypeName])

若你的Power Query版本支持Lookup函数,可使用更简洁的写法:

if [policyTypeName] <> null 
then [policyTypeName]
else Lookup(SecondAPI, "policyTypeId", [policyTypeId], "policyTypeName")

验证结果

应用上述任一方案后,FirstAPI的newCol列会得到期望结果:

  • abcd → Global
  • pqrs → Americas
  • pqws → Global

内容的提问来源于stack exchange,提问作者fireball.1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:05:30