我试图对Dataweave中的数据库结果集中的每一个进行一次操作,但是无法达到这个结果。
输入有效载荷:
{
"x_orders_cursor": [{
"LINE_QTY": 1,
"ORDER_NUMBER": 11820490,
"ORDERED_ITEM": "PAT1M",
"LINE_UOM": "PC"
}, {
"LINE_QTY": 5000,
"ORDER_NUMBER": 11820542,
"ORDERED_ITEM": "ACC62-A-D",
"LINE_NUMBER": 1,
"LINE_UOM": "PC"
}, {
"LINE_QTY": 2000,
"ORDER_NUMBER": 11820542,
"ORDERED_ITEM": "ACC62-A-D",
"LINE_NUMBER": 2,
"LINE_UOM": "PC"
}]
}预期有效载荷:
{
"Orders": [
{
"OrderNum": "11820490",
"Lines": [
{
"LineNum": 1,
"ProductNum": "PAT1M",
"TxnQty": 1,
"TxnQtyUOM": "PC"
}
]
},
{
"OrderNum": "11820542",
"Lines": [
{
"LineNum": 1,
"ProductNum": "ACC62-A-D",
"TxnQty": 1000,
"TxnQtyUOM": "PC"
},
{
"LineNum": 2,
"ProductNum": "ACC62-A-D",
"TxnQty": 2000,
"TxnQtyUOM": "PC"
}
]
}
]
}结果集基于存储订单号和行号的数据库表。
发布于 2017-12-19 03:11:54
您必须使用groupBy从相同的顺序对行号进行分组,然后映射它。请参阅以下代码
%dw 1.0
%output application/json
---
Orders : payload.x_orders_cursor groupBy $.ORDER_NUMBER map {
"OrderNum": $.ORDER_NUMBER[0],
"Lines": $ map (LineDetails,index) ->{
"LineNum": LineDetails.LINE_NUMBER default 1,
"ProductNum": LineDetails.ORDERED_ITEM,
"TxnQty": LineDetails.LINE_QTY,
"TxnQtyUOM": LineDetails.LINE_UOM
} orderBy $.LineNum
} orderBy $.OrderNum我使用orderBy来订购订单和行项目,分别有订单号和行号
希望这能有所帮助。
发布于 2018-03-07 12:28:32
使用映射和groupby操作符来完成此操作。应该在以下线上
payload groupBy $.ORDER_NUMBER map {
OrderNum: $.ORDER_NUMBER[0],
Lines": $ map (val,index) -> {
LineNum: val.LINE_NUMBER default 1,
ProductNum: val.ORDERED_ITEM,
TxnQty: val.LINE_QTY,
TxnQtyUOM: val.LINE_UOM
} orderBy $.LineNum
} orderBy $.OrderNumhttps://stackoverflow.com/questions/47873297
复制相似问题