Значение сопоставления только в DataWeave 2.0 / Mule 4 - PullRequest
2 голосов
/ 23 февраля 2020

Я немного ладья ie в Муле 4 и пытаюсь понять, как отобразить только значение из массива. Мой массив:

[
  {
    "ssn": "999999991",
    "contributionCode": "1",
    "amt": -100.000000
  },
  {
    "ssn": "999999991",
    "contributionCode": "2",
    "amt": 1200.000000
  }
]

Что мне нужно сделать, это отфильтровать массив по contribCode и ssn и вернуть только значение суммы. Я пробовал это и его варианты, но я получаю только ошибки:

vars.sumAmounts filter ($.ssn == '999999991' and $.contributionCode == '1' ) map -> ({$.amt})

Таким образом, вывод, который я пытаюсь получить из вышеупомянутого, будет только -100.000000. Извините заранее, если это кажется базовым c вопросом, но чья-либо помощь будет очень признательна.

Ответы [ 2 ]

3 голосов
/ 24 февраля 2020

@ Tek_Datt вот два способа, которыми вы можете сделать это, и все зависит от того, будете ли вы делать это снова и снова.

Этот метод использует ваш подход поиска с помощью функции filter:

%dw 2.0
output application/dw
var data = [
  {
    "ssn": "999999991",
    "contributionCode": "1",
    "amt": -100.000000
  },
  {
    "ssn": "999999991",
    "contributionCode": "2",
    "amt": 1200.000000
  }
]
---
(data filter ($.ssn == "999999991" and $.contributionCode ~= 1)).amt[0]

Этот следующий более эффективен, если вы хотите запустить несколько таких поисков для преобразования:

%dw 2.0
output application/dw
var data = [
  {
    "ssn": "999999991",
    "contributionCode": "1",
    "amt": -100.000000
  },
  {
    "ssn": "999999991",
    "contributionCode": "2",
    "amt": 1200.000000
  }
] groupBy ($.ssn ++ "_" ++ $.contributionCode)
---
data["999999991_1"].amt[0]

Выберите тот, который вам нравится.

0 голосов
/ 05 апреля 2020

% dw 2.0 выходное приложение / json var data = [{"ssn": "999999991", "contribCode": "1", "amt": -100.000000}, {"ssn": "999999991", "contribCode ":" 2 "," amt ": 1200.000000}

]

(фильтр данных ($ .ssn == '999999991' и $ .contributionCode == '1')) [0 ] .amt

...