【问题标题】:Mulesoft: How to map and group data with same key in mule 4 dataweave 2.0Mulesoft:如何在 mule 4 dataweave 2.0 中使用相同的键映射和分组数据
【发布时间】:2020-05-10 06:22:04
【问题描述】:

我可以用 for each 和 sum 过滤器值转换我的输入以获得输出格式(许多数据将添加到数组中)。但是每个人都花了很多时间。如何更快地将其与转换消息映射?请帮我解决一下。

我的意见:

{
  "PART_NUMBER": "501-239",
  "HUBS": [
    {
      "NAME": "SUK",
      "SUB_INVENTORIES": [
        {
          "NAME": "FG",
          "LOCATORS": [
            {
              "NAME": "FGACCESSORY"
            }
          ]
        }
      ]
    },
    {
      "NAME": "SUK",
      "SUB_INVENTORIES": [
        {
          "NAME": "FG",
          "LOCATORS": [
            {
              "NAME": "FGPB"
            }
          ]
        }
      ]
    },
    {
      "NAME": "SUK",
      "SUB_INVENTORIES": [
        {
          "NAME": "RAWWIP",
          "LOCATORS": [
            {
              "NAME": "FLOOR"
            }
          ]
        }
      ]
    },
    {
      "NAME": "SUK",
      "SUB_INVENTORIES": [
        {
          "NAME": "RAWWIP",
          "LOCATORS": [
            {
              "NAME": "VANTAGE"
            }
          ]
        }
      ]
    },
    {
      "NAME": "SUS",
      "SUB_INVENTORIES": [
        {
          "NAME": "FG",
          "LOCATORS": [
            {
              "NAME": "FGACCESSORY"
            }
          ]
        }
      ]
    },
    {
      "NAME": "SUS",
      "SUB_INVENTORIES": [
        {
          "NAME": "FG",
          "LOCATORS": [
            {
              "NAME": "FGPB"
            }
          ]
        }
      ]
    },
    {
      "NAME": "SUS",
      "SUB_INVENTORIES": [
        {
          "NAME": "RAWWIP",
          "LOCATORS": [
            {
              "NAME": "FLOOR"
            }
          ]
        }
      ]
    },
    {
      "NAME": "SUS",
      "SUB_INVENTORIES": [
        {
          "NAME": "RAWWIP",
          "LOCATORS": [
            {
              "NAME": "VANTAGE"
            }
          ]
        }
      ]
    }
  ]
}

预期输出:(我需要将所有 hub 和所有 sub_inventories 同名分组)

 {
   "PART_NUMBER": "501-239",
   "HUBS": [
     {
       "NAME": "SUK",
       "SUB_INVENTORIES": [
         {
           "NAME": "FG",
           "LOCATORS": [
             {
               "NAME": "FGACCESSORY"
             },
             {
               "NAME": "FGPB"
             }
           ]
         },
         {
           "NAME": "RAWWIP",
           "LOCATORS": [
             {
               "NAME": "FLOOR"
             },
             {
               "NAME": "VANTAGE"
             }
           ]
         }
       ]
     },
     {
       "NAME": "SUS",
       "SUB_INVENTORIES": [
         {
           "NAME": "FG",
           "LOCATORS": [
             {
               "NAME": "FGACCESSORY"
             },
             {
               "NAME": "FGPB"
             }
           ]
         },
         {
           "NAME": "RAWWIP",
           "LOCATORS": [
             {
               "NAME": "FLOOR"
             },
             {
               "NAME": "VANTAGE"
             }
           ]
         }
       ]
     }
   ]
 }

请给我一些建议!

【问题讨论】:

    标签: dataweave mulesoft


    【解决方案1】:

    试试这个:

    %dw 2.0
    output application/dw
    ---
    do {
        var hubs = payload.HUBS groupBy $.NAME
        ---
        {
            PART_NUMBER: payload.PART_NUMBER,
            HUBS: (
                hubs mapObject do {
                    var subs = flatten($.*SUB_INVENTORIES) groupBy $.NAME
                    ---
                    {($$): {
                        NAME: $$,
                        SUB_INVENTORIES: (
                            subs mapObject do {
                                var locs = flatten($.*LOCATORS)
                                ---
                                {($$): {
                                    NAME: $$,
                                    LOCATORS: locs
                                }}
                            }
                        ) pluck $
                    }}
                }
            ) pluck $
        }
    }
    

    与我所做的相比,必须有更好的方法来做到这一点——即我不喜欢将同一个表达式(大多数情况下)嵌套三次。我只是还看不到它,我在这上面花了足够的时间:)。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多