Reputation: 199
I need to remove groupBy field and its value from actual data after performing groupBy Operation in DWL 2.0.
For Example
I have payload with json array like:
[
{
"empId": 1,
"empName": "James",
"deptName": "Sales"
},
{
"empId": 2,
"empName": "ABC",
"deptName": "Marketing"
},
{
"empId": 3,
"empName": "BCD",
"deptName": "Account"
},
{
"empId": 4,
"empName": "EFG",
"deptName": "Sales"
},
{
"empId": 5,
"empName": "HIJK",
"deptName": "Account"
},
{
"empId": 6,
"empName": "LMN",
"deptName": "Sales"
},
{
"empId": 7,
"empName": "OPQR",
"deptName": "Marketing"
}
]
On this added transformation to perform groupBy -->
<ee:transform doc:name="Transform Message">
<ee:message>
<ee:set-payload>
<![CDATA[%dw 2.0
output
application/json
---
(payload groupBy (item) -> item.customerId)
]]></ee:set-payload>
</ee:message>
</ee:transform>
And Result of this transformation is -->
{
"Sales": [
{
"empId": 1,
"empName": "James",
"deptName": "Sales"
},
{
"empId": 4,
"empName": "EFG",
"deptName": "Sales"
},
{
"empId": 6,
"empName": "LMN",
"deptName": "Sales"
}
],
"Marketing": [
{
"empId": 2,
"empName": "ABC",
"deptName": "Marketing"
},
{
"empId": 7,
"empName": "OPQR",
"deptName": "Marketing"
}
],
"Account": [
{
"empId": 3,
"empName": "BCD",
"deptName": "Account"
},
{
"empId": 5,
"empName": "HIJK",
"deptName": "Account"
}
]
}
But when you look at the result depetName tag is no longer needed in actual data json. i want to remove this element from data json and wanted final result like -->
{
"Sales": [
{
"empId": 1,
"empName": "James"
},
{
"empId": 4,
"empName": "EFG"
},
{
"empId": 6,
"empName": "LMN"
}
],
"Marketing": [
{
"empId": 2,
"empName": "ABC"
},
{
"empId": 7,
"empName": "OPQR"
}
],
"Account": [
{
"empId": 3,
"empName": "BCD"
},
{
"empId": 5,
"empName": "HIJK"
}
]
}
Could any one help me out to resolve this issue?
Upvotes: 0
Views: 464
Reputation: 5059
You can use the mapObject function to remap the result of the groupBy and then map the value group result and remove the field in each object
output application/json
---
payload groupBy ((item) -> item.deptName)
mapObject ((value, key, index) ->
{
(key): value map ((item, index) -> item - "deptName")
})
Upvotes: 1