Power Query中用映射表替换多分支if语句及默认值处理
用映射表替代Power Query嵌套IF实现货币列映射并处理默认值
步骤1:创建货币映射表
你可以直接在Power Query中手动创建映射表,或者用M代码生成,后续修改维护都很方便:
- 手动创建:点击「开始」→「输入数据」,输入两列数据(
Type和Currency),示例数据如下:Type Currency 1 EUR 2 USD 3 GBP 4 NOK - M代码创建(适合批量定义):
CurrencyMapping = #table( {"Type", "Currency"}, { {1, "EUR"}, {2, "USD"}, {3, "GBP"}, {4, "NOK"} // 后续新增直接加行即可 } )
步骤2:合并原数据表与映射表
在原数据表的查询编辑器中:
- 点击「合并查询」→「合并查询作为新查询」(或直接合并到当前查询)
- 合并键选择两边表的
Type列,合并类型选择左外部连接(确保原表所有行都保留,未匹配到映射的Type会显示null)
步骤3:处理默认值(替代原else分支)
合并完成后:
- 展开合并后的映射表列,只保留
Currency字段 - 将
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
相关产品推荐
相关产品推荐

