Dataweave中的动态映射
我试图使用流变量的内容在Dataweave中动态地映射列名。什么我想要实现静态版本看起来是这样的:Dataweave中的动态映射
payload map ((payload01 , indexOfPayload01) -> {
COLUMNA: payload01.INPUTA
})
现在,我需要是动态的部分是INPUTA
- 我需要A
必须从之前设定流量变量派生Dataweave组件。我试过类似的东西:
payload map ((payload01 , indexOfPayload01) -> {
COLUMNA: payload01.INPUT#flowVars['varName']
})
但我得到一个com.mulesoft.weave.grammar.InvalidNamespacePrefixException
错误。
这是可能实现Dataweave?似乎无法找到任何相关文档描述如何。
使用它像下面。请注意围绕键的括号,这非常重要,因为()会告知DataWeave首先在其中执行脚本,然后将结果用作外部表达式的值。
payload map ((payload01 , indexOfPayload01) -> {
COLUMNA: payload01[('INPUT' ++ flowVars.varName)]
})
让我知道,这是行不通的。
我看到您的密钥名称是COLUMNA,您还可以使用()将varName附加到密钥。
尝试访问flowVar就像MEL方式:#[flowVars.varName]
,DONOT前缀payload01
这不工作 - 我想要做的是映射到一个列,'INPUTA',从我入站负载的问题是,'A'部分可能会改变取决于环境,所以不是写一个不同的Dataweave变换器的负载和基于变量的路由,我更愿意在映射是动态的情况下创建一个变压器。我需要映射到...'payload01.INPUT [动态文本在这里 - 从变量]' – danw
从Dataweave中,您必须访问下面给出的流程或会话变量。 flowVars.varName sessionVars.varName
您可以使用各种Dataweave操作符来形成最终的字段名称或值。了解Dataweave运算符对于充分利用Dataweave组件至关重要。请通过以下链接了解Dataweave操作员。
https://docs.mulesoft.com/mule-user-guide/v/3.8/dataweave-operators
这工作 - 非常感谢!必须稍作修改,在映射结尾处有一个未使用的')'。我将它改为:'COLUMNA:payload01 [('INPUT'++ flowVars.varName)]' – danw
哦,是的。最初,我将所有[]的内容包裹在括号中,但之后将其删除,因为它不需要,必须忘记最后一个。更正了答案。很高兴工作! –