如何在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是字符串类型,求和前需转为NumberKey5是字符串类型,取最大值前转为Number比较,之后转回String匹配期望输出格式
- 扁平化结果:用
flatten()将分组后的二维数组转为一维数组,还原原始对象的数量 - 保留原始字段:用
item ++ { ... }直接在原对象上追加新字段,避免手动重复写所有字段
执行逻辑:
- 先通过
groupBy按Key2+Key7+Key3组合键分组 - 对每个分组,遍历组内的每个对象,给每个对象添加组内的
Sum_Key6和Max_Key5 - 最后把所有分组处理后的数组合并成一个一维数组,得到期望的输出
内容的提问来源于stack exchange,提问作者user12277274
相关产品推荐
相关产品推荐

