如何在 mule4 datawave2.0 中增加 mapobject 内的变量值(我不想使用索引)?我的代码:
"Employees":{(inputData.*Employees.*Employee map{
"Employee": ($) mapObject(v,k) -> {
---Increment variable value here
(k):updateReferenceId(v,($$)+1,v)
}
})}
您可以在 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 } )
这将创建一个具有三个不同关键性能指标的数据结构:
像 DataWeave 之类的函数式语言一样,您不能增加变量。您可以改为从表达式返回一个递增的值。例如,您可以执行一个递归函数,返回其输入加一。假设变量在 DataWeave 中是不可变的。
您应该首先尝试考虑您要解决什么问题,为什么您真的需要增加该变量以及为什么 mapObject() 的索引不适合该需要。