2017-05-04 20 views
0

現在、データを持つ2つのJSONファイルがあります。2つのJSON出力をDataweaveで1つにマージする

最初のものは、ユーザーによる操作のリストを持っています。ただし、userIDはユーザー名ではなくUID文字列です。

2番目は、対応するユーザー名を持つUID文字列のJSONリストです。このJSONをUserPayloadという名前のフロー変数に保存しました

ユーザ名を最初のリストにマージして、出力にUIDの代わりに実際のユーザ名が含まれるようにしたいとします。

ここまでは私がこれまで持っていたことですが、私のflowVarはリストなのでuserId部分は機能しません。 UserPayload FlowVar

%dw 1.0 
%output application/csv 
--- 
payload map ((payload01, indexOfPayload01) -> { 
    user: payload.01.userId, 
    actions: payload01.action, 
    FileName: payload01.payload.properties.name default "N/A", 
    userId: flowVars.UserPayload.objectName 
}) 

任意の助けいただければ幸いです。ありがとう!

+0

サンプルデータ**あなたを助けるために、より多くの人々のやる気を引き出すでしょう。 – Yevgeniy

+0

良い点が指摘されています。私はあなたの助けに感謝します。 – HarryM

答えて

4

あなたはuserIdに基づいてUserPayloadのコンテンツをフィルタリングしたりUserPayloadからの連想配列を作成することによってUserPayload flowVarから右のオブジェクトにアクセスすることができます。 UserPayload私はあなたの質問から得られたサンプルデータ以下の使用私の例については、

%dw 1.0 
%output application/json 
--- 
payload map (action, index) -> { 
    user: action.user, 
    action: action.action, 
    FileName: action.FileName, 
    userId: (flowVars.UserPayload filter $.objectId == action.user)[0].objectName 
} 

連想配列

%dw 1.0 
%output application/json 
%var users = flowVars.UserPayload groupBy $.objectId 
--- 
payload map (action, index) -> { 
    user: action.user, 
    action: action.action, 
    FileName: action.FileName, 
    userId: users[action.user][0].objectName 
} 

をフィルタリング

flowVars.UserPayload

[{ 
    "objectId": "0000-0000-0001", 
    "objectName": "first user" 
}, { 
    "objectId": "0000-0000-0002", 
    "objectName": "second user" 
}] 

ペイロード**あなたが提供する

[{ 
    "user": "0000-0000-0001", 
    "action": "some crazy action", 
    "FileName": "some-crazy-action.mov" 
}] 
+0

連想配列は私のために働いた。もう1人はそうしなかった。お手伝いありがとう! – HarryM

+0

あなたは大歓迎です – Yevgeniy

関連する問題