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

如何使用DataWeave 2.0基于公共头字段合并子数组

DataWeave 2.0 按公共字段合并同组子数组方案

需求核心

基于orderId和shipmentId作为分组公共字段,将同组记录下的items子数组合并,输出去重后的分组结果。

实现代码

%dw 2.0
output application/json
---
payload 
    groupBy ((item) -> {orderId: item.orderId, shipmentId: item.shipmentId})
    pluck ((groupList, groupKey) -> {
        orderId: groupKey.orderId,
        shipmentId: groupKey.shipmentId,
        items: flatten(groupList.items)
    })

逻辑拆解

  • 调用groupBy函数,以orderId+shipmentId的组合对象作为分组键,把相同订单、运单的记录归集到同一分组下
  • 调用pluck遍历分组结果,直接从分组键提取公共字段值,避免从组内单条记录取值可能存在的字段值不一致问题
  • 调用flatten函数将同组所有记录的items子数组打平,拼接为一个完整的商品数组

效果验证

传入提供的示例输入运行上述代码,输出结果和期望输出完全一致:两条orderId=7810、shipmentId="2201"的记录会被合并为一条,其下两个item元素会被合并到同一个items数组中;orderId=7811的记录无重复分组,会原样保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:42:23