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

Mule 4 DataWeave按serviceType分组转换数据的技术问询

Mule 4 DataWeave 按serviceType分组并计算汇总值的正确实现

示例输入

[
  {
    "serviceType": "A",
    "amount": 100,
    "date": "2024-01-01"
  },
  {
    "serviceType": "A",
    "amount": 200,
    "date": "2024-01-02"
  },
  {
    "serviceType": "B",
    "amount": 150,
    "date": "2024-01-03"
  }
]

正确DataWeave代码

%dw 2.0
output application/json
---
payload groupBy ((item, index) -> item.serviceType) 
mapObject ((value, key, index) -> {
    (key): {
        totalAmount: sum(value.amount),
        history: value
    }
})

示例输出

{
  "A": {
    "totalAmount": 300,
    "history": [
      {
        "serviceType": "A",
        "amount": 100,
        "date": "2024-01-01"
      },
      {
        "serviceType": "A",
        "amount": 200,
        "date": "2024-01-02"
      }
    ]
  },
  "B": {
    "totalAmount": 150,
    "history": [
      {
        "serviceType": "B",
        "amount": 150,
        "date": "2024-01-03"
      }
    ]
  }
}

代码说明

  1. 分组操作:通过groupBy将原数组按serviceType字段分组,得到一个键为serviceType、值为对应同类型记录数组的临时对象。
  2. 结构重构:用mapObject遍历每个分组,对每个分组做两项处理:
    • 计算该组的汇总值(示例中为amount字段的总和,可根据实际需求替换为其他字段或计算逻辑)
    • 将分组内的原始记录存入history数组
  3. 动态键名:使用(key)语法保留原serviceType作为输出对象的键名,确保结构符合需求。

常见错误排查

  • 仅使用groupBy未做后续转换:直接返回分组结果只会得到键值对形式的分组数组,无法生成包含汇总值的目标结构。
  • 汇总计算路径错误:需使用分组后的value对象访问组内字段(如value.amount),而非原payload。
  • 结构映射错误:未用mapObject遍历分组对象,导致无法为每个分组生成包含汇总和历史记录的嵌套结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:57:25