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

Power Query中用映射表替换多分支if语句及默认值处理

用映射表替代Power Query嵌套IF实现货币列映射并处理默认值

步骤1:创建货币映射表

你可以直接在Power Query中手动创建映射表,或者用M代码生成,后续修改维护都很方便:

  • 手动创建:点击「开始」→「输入数据」,输入两列数据(Type和Currency),示例数据如下:
    TypeCurrency
    1EUR
    2USD
    3GBP
    4NOK
  • M代码创建(适合批量定义):
    CurrencyMapping = #table(
        {"Type", "Currency"},
        {
            {1, "EUR"},
            {2, "USD"},
            {3, "GBP"},
            {4, "NOK"}
            // 后续新增直接加行即可
        }
    )
    

步骤2:合并原数据表与映射表

在原数据表的查询编辑器中:

  1. 点击「合并查询」→「合并查询作为新查询」(或直接合并到当前查询)
  2. 合并键选择两边表的Type列,合并类型选择左外部连接(确保原表所有行都保留,未匹配到映射的Type会显示null)

步骤3:处理默认值(替代原else分支)

合并完成后:

  1. 展开合并后的映射表列,只保留Currency字段
  2. 将Currency列中的null值替换为"other",对应M代码示例:
    // 假设原数据表为Source,映射表为CurrencyMapping
    #"Merged Queries" = Table.NestedJoin(Source, {"Type"}, CurrencyMapping, {"Type"}, "CurrencyMapping", JoinKind.LeftOuter),
    #"Expanded CurrencyMapping" = Table.ExpandTableColumn(#"Merged Queries", "CurrencyMapping", {"Currency"}, {"Currency"}),
    #"Replaced Default Value" = Table.ReplaceValue(#"Expanded CurrencyMapping", null, "other", Replacer.ReplaceValue, {"Currency"})
    

后续维护

以后新增Type与货币的对应关系,直接修改映射表即可,无需改动原数据处理的代码,大幅降低维护成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:22:14