Создание результирующего массива с уникальными значениями в dataweave - PullRequest
0 голосов
/ 02 мая 2019

Необходимо эффективно сравнить два массива и создать третий массив со значениями, которые есть только во втором массиве, используя преобразование Dataweave в муле.Я хотел использовать отрицание содержит ключевое слово в муле.Но это давало ошибки.Надеюсь, что я могу использовать фильтр и содержит для фильтрации значений.

arr1 =[
    {
       "leadId": 127,
       "playerId": 334353
    },
     {
       "leadId": 128,
       "playerId": 334354
     },
     {

      "leadId": 123,
       "playerId": 43456
     }
     {

      "leadId": 122,
       "playerId": 43458
     }



arr2 =[
    {
       "leadId": 127,
       "name": "James"
    },
     {
       "leadId": 129,
       "name": "Joseph"
     },
     {

      "leadId": 120,
       "name": "Samuel"
     },
    {

      "leadId": 122,
       "name": "Gabriel",
     }


Need resulting array as

arr3 = [
    {
       "leadId": 129,
       "name": Joseph
    },
     {
       "leadId": 120,
       "name": Samuel
     }


  ]

1 Ответ

1 голос
/ 02 мая 2019

ОБНОВЛЕНО - Включая DataWeave 1 и 2

Я не уверен, как именно хранятся ваши массивы (в полезной нагрузке или других переменных и т. Д.), Но приведенный ниже скрипт должен датьвам достаточно, чтобы продолжить.Сравнение выполняется только на основе leadId.

Преобразование действительно работает как для DW1, так и для DW2, вам просто нужно изменить заголовок.

Mule 3 и DW1

%dw 1.0
%output application/json
---
payload.array2 filter (not (payload.array1.leadId contains $.leadId))

Мул 4 и DW2

%dw 2.0
output application/json
---
payload.array2 filter (not (payload.array1.leadId contains $.leadId))

Вход

{
    "array1": [
        {
            "leadId": 127,
            "playerId": 334353
        },
        {
            "leadId": 128,
            "playerId": 334354
        },
        {
            "leadId": 123,
            "playerId": 43456
        },
        {
            "leadId": 122,
            "playerId": 43458
        }
    ],
    "array2": [
        {
            "leadId": 127,
            "name": "James"
        },
        {
            "leadId": 129,
            "name": "Joseph"
        },
        {
            "leadId": 120,
            "name": "Samuel"
        },
        {
            "leadId": 122,
            "name": "Gabriel"
        }
    ]
}

Выход

[
  {
    "leadId": 129,
    "name": "Joseph"
  },
  {
    "leadId": 120,
    "name": "Samuel"
  }
]
...