%dw 2.0
output application/json
---
payload[0] map (bookListing) -> using (id = bookListing.bookId) {
bookId: id,
title: bookListing.title,
price: bookListing.price as Number,
(payload[1] filter ($.*bookId contains id) map (bookAuthor) -> {
author:bookAuthor.author
})
}
Merge Multiple Payloads
|
DataWeave 2.1 is compatible with Mule 4.1. Standard Support for Mule 4.1 ended on November 2, 2020, and this version of Mule will reach its End of Life on November 2, 2022, when Extended Support ends. Deployments of new applications to CloudHub that use this version of Mule are no longer allowed. Only in-place updates to applications are permitted. MuleSoft recommends that you upgrade to the latest version of Mule 4 that is in Standard Support so that your applications run with the latest fixes and security enhancements. |
This DataWeave example deals with an input that contains a collection of collections. The first payload index payload[0] lists price by book, and the second payload[1] lists authors by book, where each book can be identified by a unique bookId key. This transformation merges both payload array elements into one, matching their keys, where one book may have several authors.
| Note that this is not the same as having as an input a single payload that consists of an array. Here, payload is an array of arrays. |
It uses these functions:
-
mapgoes through the elements of the first payload element (payload[0]). While on each element, a secondmapfunction goes through the elements of the second payload (payload[1]) that match the filter criteria. -
usingdefines a shorter alias within the scope of the mainmapfunction. -
filterlimits the scope of the secondmapfunction to only objects that share the samebookIdas is currently being processed by the firstmapfunction. In that way, only relevant authors for each are listed in the output.
[
{ "bookId":"101",
"title":"world history",
"price":"19.99"
},
{
"bookId":"202",
"title":"the great outdoors",
"price":"15.99"
}
]
[
{
"bookId":"101",
"author":"john doe"
},
{
"bookId":"202",
"author":"jane doe"
}
]
[
{
"bookId": "101",
"title": "world history",
"year": "2017",
"isbn": "11111",
"price": "19.99",
"author": "john doe"
},
{
"bookId": "202",
"title": "the great outdoors",
"year": "2016",
"isbn": "22222",
"price": "15.99",
"author": "jane doe"
}
]



