M语言Records深度合并:超越VLOOKUP的多层嵌套匹配
在Power Query中使用Record工具和List.Accumulate实现多条件、多层级的数据合并,解决一对多关联和字段映射的复杂场景。 · 难度:入门 · +10XP
M语言Records深度合并:超越VLOOKUP的多层嵌套匹配
普通查询合并只能处理平面表。本教程教授如何将多个条件编码为嵌套Record,然后使用Table.TransformColumns配合Record.SelectFields实现动态字段映射。重点讲解Record.Combine、Record.Merge的差异,以及使用List.Accumulate构建多层IF逻辑。案例:订单表根据国家+产品类别+会员等级三个维度匹配不同折扣率表。最后演示如何将结果写回Excel模型。
let
Source = Excel.CurrentWorkbook(){[Name="Orders"]}[Content],
DiscountMap = [
US = [Electronics = 0.1, Clothing = 0.15],
EU = [Electronics = 0.2, Clothing = 0.25]
],
AddDiscount = Table.AddColumn(Source, "Discount", each
Record.FieldOrDefault(
Record.FieldOrDefault(DiscountMap, [Country], []),
[Category],
0
)
)
in
AddDiscount