2016-04-27 8 views
0

私は、フロー変数の内容を使って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で達成できますか?どのように関連するドキュメントを見つけることができないようです。

答えて

0

で接頭辞scroll down toパソコンへ転送します。 ()はDataWeaveに最初にスクリプトを実行させ、その結果を外部式の値として使用するため、非常に重要なキーの前後の括弧に注意してください。

payload map ((payload01 , indexOfPayload01) -> { 
    COLUMNA: payload01[('INPUT' ++ flowVars.varName)] 
}) 

私はそれが動作しないことを教えてください。

あなたのキー名がCOLUMNAであることがわかります。()を使ってvarNameをkeyに追加することもできます。

+0

これはうまくいきました - ありがとう!小さな修正を加えなければならなかったので、マッピングの最後に ')'が使われていません。私はそれを次のように変更しました: 'COLUMNA:payload01 [( 'INPUT' ++ flowVars.varName)] ' – danw

+0

ああ、そうです。最初は[]のすべての内容を括弧で囲みましたが、後でそれを削除する必要はなく、最後を忘れていなければなりませんでした。答えを訂正しました。それはうまくいった! –

0

だけMELの方法のようにflowVarにアクセスしてください:#[flowVars.varName]は、以下のようにそれを使用しpayload01

+0

これは動作しません - 私は何をしようとしているが、列にマップされ 'INPUTA'は、私のインバウンドペイロードから、問題は' A'部分が状況に応じて変更される可能性があることです異なるDataweave変圧器の負荷を書き込むのではなく、変数に基づいてルーティングすることは、マッピングが動的である単一の変圧器を作ることを好むでしょう。私はマップする必要があります。 'payload01.INPUT [動的テキストはここから - 変数から]' – danw

0

Dataweaveから、以下に示すように、flowvarsまたはセッション変数にアクセスする必要があります。 flowVars.varName sessionVars.varName

さまざまなDatawave演算子を使用して、最終的なフィールド名または値を作成できます。 Datawaveのコンポーネントを最大限に活用するためには、Datawave Operatorsを理解することが不可欠です。 Datawaveのオペレータを理解するには、以下のリンクを参照してください。

https://docs.mulesoft.com/mule-user-guide/v/3.8/dataweave-operators

関連する問題