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

如何在DataWeave 2.0中按两个字段执行groupBy分组?

在DataWeave 2.0中按customer和orderid双字段分组并转换结构

输入数据

[
    {
        "item": 621,
        "orderid": "ON22",
        "qty": 45.0,
        "customer": "813",
        "date": "1988-08-13"
    },
    {
        "item": 63,
        "orderid": "ON22",
        "qty": 7,
        "customer": "813",
        "date": "2001-08-13"
    },
    {
        "item": 54,
        "orderid": "AD546",
        "qty": 9,
        "customer": "813",
        "date": "2014-08-13"
    },
    {
        "item": 611,
        "orderid": "ON222723-JH",
        "qty": 78.0,
        "customer": "890",
        "date": "1990-05-11"
    }
]

期望输出

[
   {
      "customer":"890",
       "orderid":"ON222723-JH",
      "data":[
         {
            "item":611,
            "qty":78.0,
            "date":"1990-05-11"
         }
      ]
   },
   {
      "customer":"813",
        "orderid":"ON22",
      "data":[
         {
            "item":621,
            "qty":45.0,
            "date":"1988-08-13"
         },
         {
            "item": 63,
            "qty": 7,
            "date": "2001-08-13"
         }
      ]
   },
   {
      "customer":"813",
       "orderid":"AD546",
      "data":[
         {
            "item": 54,
            "qty": 9,
            "date": "2014-08-13"
         }
      ]
   }
]

解决方案

使用DataWeave 2.0的groupBy函数实现双字段分组,再通过pluck和map转换为目标结构:

%dw 2.0
output application/json
---
payload groupBy ((item) -> { customer: item.customer, orderid: item.orderid }) 
    pluck ((value, key) -> {
        customer: key.customer,
        orderid: key.orderid,
        data: value map ((item) -> item - "customer" - "orderid")
    })

代码说明

  1. 分组逻辑:用customer和orderid组合成对象作为分组键,将原始数组按此键分组为键值对集合;
  2. 结构转换:
    • pluck提取所有分组的键与对应数据;
    • 从分组键中取出customer和orderid作为顶层字段;
    • 对分组内的每条数据,移除customer和orderid字段后,组成data数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:25:28