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

MuleSoft DataWeave按uniqueID聚合同字段错误信息方案咨询

DataWeave 按uniqueID分组拼接同字段错误信息实现方案

先给出符合业务场景的模拟输入示例,方便对照逻辑验证:

[
  {
    "uniqueID": "REQ001",
    "result": "failure",
    "Base Rate": "数值不能小于0",
    "Closing Cost": "格式不合法"
  },
  {
    "uniqueID": "REQ001",
    "result": "failure",
    "Base Rate": "超出当前业务允许范围",
    "Loan Term": "期限不符合准入要求"
  },
  {
    "uniqueID": "REQ002",
    "result": "success",
    "Base Rate": "5.2%"
  },
  {
    "uniqueID": "REQ002",
    "result": "failure",
    "Closing Cost": "未上传凭证"
  }
]

对应模拟输入的预期输出效果:

[
  {
    "uniqueID": "REQ001",
    "Base Rate": "数值不能小于0|超出当前业务允许范围",
    "Closing Cost": "格式不合法",
    "Loan Term": "期限不符合准入要求"
  },
  {
    "uniqueID": "REQ002",
    "Closing Cost": "未上传凭证"
  }
]

实现代码(DataWeave 2.0 优化写法)

%dw 2.0
output application/json
---
// 过滤失败记录+按uniqueID分组
payload filter ($.result == "failure") groupBy $.uniqueID 
mapObject ((groupItems, groupId) -> {
    uniqueID: groupId,
    // 拉平所有业务字段、按字段名分组拼接
    (flatten(groupItems pluck $ -- ["uniqueID", "result"])
    groupBy $$ mapObject ((values, field) -> (field): values joinBy "|"))
})
// 转为目标数组格式
pluck $

逻辑说明

  • 全程适配动态字段场景,不需要提前硬编码Base Rate/Closing Cost等字段名,新增业务字段自动适配
  • 自动过滤所有result不为failure的记录,不参与后续计算
  • 同uniqueID下同名字段的错误信息自动按出现顺序用|拼接,不会生成重复字段
  • 兼容分组内单条/多条错误记录的场景,单条记录不会生成多余拼接符号

可选优化

如果需要过滤同字段下的空错误信息,可以在joinBy之前加过滤逻辑,修改对应行即可:

groupBy $$ mapObject ((values, field) -> (field): (values filter $ != "") joinBy "|"))

内容的提问来源于stack exchange,提问作者Mule-Newbie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:24:04