我正在尝试使用流变量的内容在Dataweave中动态映射列名。我想要实现的静态版本看起来像:
payload map ((payload01 , indexOfPayload01) -> {
COLUMNA: payload01.INPUTA
})
现在我需要动态的部分是INPUTA
- 我需要从在Dataweave组件之前设置的流变量派生A
。我尝试过类似的东西:
payload map ((payload01 , indexOfPayload01) -> {
COLUMNA: payload01.INPUT#flowVars['varName']
})
但我收到com.mulesoft.weave.grammar.InvalidNamespacePrefixException
错误。
这可以在Dataweave中实现吗?似乎找不到任何描述如何的相关文档。
答案 0 :(得分:0)
尝试像MEL方式一样访问flowVar:#[flowVars.varName]
,不要使用前缀payload01
答案 1 :(得分:0)
如下所示使用它。注意键周围的括号是非常重要的,因为()告诉DataWeave首先在其中执行脚本,然后使用结果作为外部表达式的值。
payload map ((payload01 , indexOfPayload01) -> {
COLUMNA: payload01[('INPUT' ++ flowVars.varName)]
})
让我知道这不起作用。
我看到您的密钥名称是COLUMNA,您也可以使用()将varName附加到密钥。
答案 2 :(得分:0)
从Dataweave中,您必须访问如下所示的flowvars或会话变量。 flowVars.varName sessionVars.varName
您可以使用各种Dataweave运算符来形成最终字段名称或值。 了解Dataweave Operators对于充分利用Dataweave组件至关重要。请通过以下链接了解Dataweave操作符。
https://docs.mulesoft.com/mule-user-guide/v/3.8/dataweave-operators