我如何在函数mapobject datawave 2.0中增加变量值?

时间:2019-12-02 18:58:23

标签: dataweave mulesoft mule4

如何在mule4 datawave2.0中的mapobject(我不想使用索引)中增加变量值? 我的代码:


"Employees":{(inputData.*Employees.*Employee map{

  "Employee": ($) mapObject(v,k) -> {
 ---Increment variable value here
    (k):updateReferenceId(v,($$)+1,v)

  }

})}

2 个答案:

答案 0 :(得分:1)

您可以在reduce操作的累加器中递增值,然后可以将其添加到输出的结构化数据计划中。 MuleSoft DataWeave培训课程中有一些示例

  

flightsInput reduce ( ( flight, acc={ american: {price: 0, count: 0}, delta: {price: 0, count: 0}, united: {price: 0, count: 0} } ) -> flight.airlineName match { case american if(lower(american) contains "amer") -> acc - "american" ++ american: { price: acc.american.price + flight.price, count: acc."american".count + 1 } case delta if(lower(delta) contains "del") -> acc - "delta" ++ delta: { price: acc.delta.price + flight.price, count: acc."delta".count + 1 } case united if(lower(united) contains "uni") -> acc - "united" ++ united: { price: acc.united.price + flight.price, count: acc."united".count + 1 } else -> acc } )

这将创建具有三个不同关键绩效指标的数据结构:

enter image description here

答案 1 :(得分:0)

像DataWeave,you can not increment a variable这样的功能语言中的常规用法。您可以改为从表达式返回增量值。例如,您可以执行一个递归函数,使其返回的输入增量为1。只需假设变量在DataWeave中是不变的。

您首先应该考虑要解决什么问题,为什么您真的需要增加该变量以及为什么mapObject()的索引不适合该需求。