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

Power Query自定义聚合:基于条件取Rate最大值生成NewRate

Power Query 自定义聚合实现方案

需求说明

  • 按ID分组处理数据:
    • 当同一ID下存在Saving为yes的记录时,该ID所有记录的NewRate取该分组内Rate的最大值
    • 当同一ID下无Saving为yes的记录时,NewRate直接使用原记录的Rate值
  • 额外限制:每个ID最多仅存在一条Saving为yes的记录

修正后的代码

你原代码中Record.FromList的用法有误,以下是可直接运行的正确代码:

= Table.Group(#"Changed Type4", {"ID"}, {
    {"GroupedData", (t) => 
        let
            hasSavingYes = List.Contains(t[Saving], "yes"),
            maxRate = List.Max(t[Rate]),
            // 根据条件生成NewRate列
            addNewRate = Table.AddColumn(t, "NewRate", each if hasSavingYes then maxRate else [Rate])
        in
            addNewRate
    }
})
// 最后替换previousStepName为上一步的查询名,展开分组后的结果
= Table.ExpandTableColumn(previousStepName, "GroupedData", {"Saving", "Rate", "NewRate"})

代码解释

  1. 分组逻辑:按ID分组,对每个分组表t执行自定义处理
  2. 条件判断:用List.Contains(t[Saving], "yes")快速判断当前分组是否存在目标记录
  3. 预计算最大值:提前算出分组内Rate的最大值maxRate,避免重复计算损耗性能
  4. 添加新列:在分组表内直接插入NewRate列,根据条件赋值
  5. 展开结果:将分组后的嵌套表展开,得到平级的最终数据结构

示例展示

输入数据

IDSavingRate
1no5
1yes7
2no3
2no4
3yes6

预期结果

IDSavingRateNewRate
1no57
1yes77
2no33
2no44
3yes66

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:35:00