仅在DataWeave 2.0 / Mule 4中映射值

问题描述 投票:0回答:1

我对Mule 4还是有点菜鸟,一直在试图弄清楚如何仅映射数组中的值。我的数组是:

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

我需要做的是通过贡献代码和ssn过滤数组,并仅返回金额值。我已经尝试过了它及其变种,但我只得到错误:

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

所以我想从上面获得的输出仅为-100.000000。预先抱歉,如果这似乎是一个基本问题,但是非常感谢任何人的帮助。

dataweave mule4
1个回答
0
投票

@ 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]

选择您喜欢的一个。

© www.soinside.com 2019 - 2024. All rights reserved.