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

如何在DataWeave 2.0中groupBy后为组内每个对象添加新键值对

解决方案

你的核心问题是groupBy后只保留了每组的第一个对象,而没有遍历组内所有对象并添加统计字段。以下是修正后的DataWeave脚本,能保留全部原对象并添加所需的聚合值:

%dw 2.0
output application/json
---
flatten(
    (payload groupBy ($.Key2 ++ '_' ++ $.Key7 ++ '_' ++ $.Key3)) pluck ((group) -> 
        group map ((item) -> 
            item ++ {
                Sum_Key6: sum(group.Key6 as Number),
                Max_Key5: max(group.Key5 as Number) as String
            }
        )
    )
)

关键修正点:

  • 遍历组内所有对象:不再只取$[0],而是用group map遍历组里的每个原始对象
  • 字段类型转换:
    • Key6是字符串类型,求和前需转为Number
    • Key5是字符串类型,取最大值前转为Number比较,之后转回String匹配期望输出格式
  • 扁平化结果:用flatten()将分组后的二维数组转为一维数组,还原原始对象的数量
  • 保留原始字段:用item ++ { ... }直接在原对象上追加新字段,避免手动重复写所有字段

执行逻辑:

  1. 先通过groupBy按Key2+Key7+Key3组合键分组
  2. 对每个分组,遍历组内的每个对象,给每个对象添加组内的Sum_Key6和Max_Key5
  3. 最后把所有分组处理后的数组合并成一个一维数组,得到期望的输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:10:55