基本的なDataWeave式を確認する
はじめに
DataWeave式について確認する機会があったため、確認した結果をまとめた。
目次
下記の内容の動作を確認する。
- XMLデータを作成する
- GroupBy関数を利用する
- 関数を定義する
- 日付や数字の表示形式を設定する
- SetPayloadで設定されたXMLの型を確認する
- lookup関数でサブフローを呼び出す
- スクリプト(.dwl)をインポートする
実際に確認
DataWeaveの動作を確認する便利ツールの紹介
DataWeaveを学習するツールが、Muleから公式に提供されているため利用する。
Mule公式ツール:DataWeave Playground
簡単に試せるようにサンプルデータを残す。
[{
"lastname": "Kawaguchi",
"firstname": "Masaki",
"language": "Japaniese",
"age": 25,
"sales": 200
},
{
"lastname": "Sasaki",
"firstname": "Makoto",
"language": "English",
"age": 25,
"sales": 300
},
{
"lastname": "Yamamoto",
"firstname": "Ryouta",
"language": "Japaniese",
"age": 25,
"sales": 500
},
{
"lastname": "Sakamoto",
"firstname": "Yuuichi",
"language": "Chinese",
"age": 25,
"sales": 500
}]
1.XMLデータを作成する
属性の指定は、名前の隣に@(…)で定義する。
%dw 2.0
output application/xml
---
{
"user" @("lastname": payload.lastname,
"firstname": payload.firstname) : payload.sales
}

2.GroupBy関数を利用する
GroupBy関数の定義は以下の通り。
languageでグループバイ指定している。
%dw 2.0
output application/dw
---
payload groupBy (item) -> item.language

3.関数を定義する
DataWeaveの関数の定義は以下の通り。
DataWeaveの場合、関数の定義はfun、内容は=で定義する。
%dw 2.0
output application/json
fun toUpper(aString) = upper(aString)
---
payload map (item, index) -> (
{
"lastname": toUpper(item.lastname)
}
)

4.日付や数字の表示形式を設定する
日付や数字の表示形式の指定方法は以下の通り。
%dw 2.0
output application/json
---
{
date: now() as String {format: 'yyyy-MM-dd'},
currency: 1.54 as String {format: '0.##'}
}

3.SetPayloadで設定されたXMLの型を確認する
SetPayloadにXMLをハードコーディングした場合、文字列として扱われる。
XMLで扱いたい場合は、read関数を利用する必要がある。





5.Lookup関数でサブフローを呼び出す
lookup関数を使って、サブフローの実行結果を取得することができる。


サブフローは、Lookup関数で参照できないので注意が必要。

6.スクリプト(.dwl)をインポートする
別ファイルにDataWeaveの関数を定義して、コンポーネントのDataWeave式で呼び出すことができる。

型指定は、変数:型の順に定義する。
%dw 2.0
fun greeting(name: String) = "Hi! " ++ name
%dw 2.0
//import modules::customDWScript
import greeting from modules::customDWScript
output application/json
---
//customDWScript::greeting("Masaki!!")
greeting("Masaki!!")






