【问题标题】:For each inside map Dataweave对于每个内部地图 Dataweave
【发布时间】:2018-06-01 01:57:03
【问题描述】:

我正在尝试对 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"
                }
            ]
        }
    ]
}

结果集基于存储订单号和行号的数据库表。

【问题讨论】:

    标签: mule dataweave mule-esb


    【解决方案1】:

    您必须使用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 分别订购了带有订单号和行号的订单和行项目

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      使用 map 和 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 $.OrderNum
      

      【讨论】:

        猜你喜欢
        • 2018-05-20
        • 1970-01-01
        • 2016-08-18
        • 2020-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-16
        • 1970-01-01
        相关资源
        最近更新 更多