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



我正在寻找dataweave,我试图根据标题中的特定字段合并数组。

下面是输入,我试图根据shipmentId或orderId字段合并条目数组。

输入:

[
{
"orderId": 7810,
"shipmentId": "2201",
"items": [
{
"id": 2170354,
"shippedQuantity": 4
}
]
},
{
"orderId": 7810,
"shipmentId": "2201",
"items": [
{
"id": 2170355,
"shippedQuantity": 3
}
]
},
{
"orderId": 7811,
"shipmentId": "4457",
"items": [
{
"id": 2170348,
"shippedQuantity": 4
}
]
}
]

预期输出:

[
{
"orderId": 7810,
"shipmentId": "2201",
"items": [
{
"id": 2170354,
"shippedQuantity": 4
},
{
"id": 2170355,
"shippedQuantity": 3
}
]
},
{
"orderId": 7811,
"shipmentId": "4457",
"items": [
{
"id": 2170348,
"shippedQuantity": 4
}
]
}
]

Thanks in advance

您可以使用groupByorderId_shipmentId的基础上对数组进行分组以获得唯一值(或者您可以使用它们中的任何一个,如果这是您的要求)。它将为您提供一个对象,其中键作为结果orderId_shipmentId,值作为匹配项的分组数组。然后,您可以pluck这些值以获得所需的输出。

%dw 2.0
output application/json
---
payload groupBy ($.orderId ++ '_' ++ $.shipmentId)
pluck ((groupedOrders) -> {
shipmentId: groupedOrders.shipmentId[0],
orderId: groupedOrders.orderId[0],
items: flatten(groupedOrders.items)
})

最新更新