DataWeave の例

例は、データ抽出および変換の一般的なアプローチを示しています。 開始する前に、DataWeave 2.0 (%dw 2.0​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave 1.0 (%dw 1.0​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクタを使用できます。

説明

データの抽出

Mule メッセージなどのデータソースの値を抽出する一般的なセレクタ式を示します。

XML 要素の選択

単一値の DataWeave セレクタ (​.​) を使用して、XML 要素からデータを抽出します。

デフォルト値の設定

デフォルト値を設定する一般的な方法を示します。

リーダーとライターの設定プロパティの設定

application/csv​ などのデータ形式の読み取りおよび書き込みを行うための設定を使用および変更する方法を示します。

XML から JSON への変換

セレクタを使用して、基本的な形式変換を実行します。関数は使用しません。

データのマップ

map​ を使用して、JSON 配列の項目を再編成します。​as​ を使用して、String (文字列) を Number (数値) に強制変換します。

配列のマップとフラット化

flatMap​ を使用して配列内のオブジェクトをマップし、結果の配列をフラット化します。

オブジェクトのマップ

mapObject​ を使用して、各オブジェクトのキーと値を調べ、すべてのキーを大文字に設定します。

オブジェクト要素の配列としてのマップ

複数値セレクタを使用して、オブジェクトの「book」という名前のキーを選択し、配列として返します。次に、​map​ を使用して、これによって作成される配列を反復処理します。

Excel (XLSX) ファイルのデータの参照

filter​ を使用して、特定の値を含む行を返します。

DataWeave を使用した Java メソッドのコール

Mule プロジェクトの Java クラスから Java メソッドをコールします。

キーの名前の変更

JSON オブジェクトの一部のキーの名前を変更し、出力の他のキーの名前はすべてそのままにします。​mapObject​、​if​、​as​、​and​ を使用します。

存在する項目の出力

map​ で ​if​ を使用して、出力に項目を含めるかどうかを決定します。これを使用して、機密データが含まれる項目を除外することもできます。

型に応じた形式

mapObject​ を使用して、対応する値の型に応じてオブジェクトのキーに変更を適用します。​if​ および ​else if​ ステートメントに応じて、​camelize​、​capitalize​、​pluralize​ を使用します。

項目の再グループ化

groupBy​、​mapObject​、​map​ を使用して、JSON および XML 項目を再編成します。

複数の配列要素のグループ化

それぞれの一致する値で一連のタプルが形成されるように、​zip​ を使用して類似する配列のペアを再編成します。

上位要素の取得

groupBy​ および ​map​ を使用して、テストのスコアに応じて一連の候補を並び替え、上位の候補のみを選択できるように配列を分割します。

項目の値の変更

一部のキーの値をアスタリスク (​****`​) に変更して、機密データをマスクします。​mapObject​、​if​、​else​ を使用します。

出力からの項目の除外

不要な要素を出力から除外する方法を示します。​-​ (削除) および ​mapObject​ 関数を使用します。

定数ディレクティブの使用

ヘッダーで一連の定数文字列および数値を定義し、これらを使用して入力を絞り込んだり、URL に連結したりします。​map​、​if​、​++​ を使用して、文字列を連結します。

カスタム追加関数の定義

accumulator​ 関数を使用して合計および小計を取得する関数を定義します。また、数値の加算、減算、乗算も実行します。

フラット化された配列要素

flatten​、オブジェクトコンストラクタ括弧 (​{}​)、およびセレクタを使用して、サブ配列と配列内でネストされている要素をフラット化します。 連結演算子 (​++​) を使用して、フラット化する前に配列を組み合わせます。また、​..*​ 子孫セレクタをキーに対して使用して、フラット化されたリストから値を選択します。

リスト内のデータをフラット化する関数の定義

reduce​、​map​、​if​、​splitBy​ を使用して、リストの項目を変更し、条件付きで出力します。

正規表現の使用

いくつかの DataWeave 関数の引数での正規表現の使用法を示します。

自己終了 XML タグの出力

inlineCloseOn="empty"​ を使用して、空のタグを閉じます (例: <element2/>​)。

XML タグへの属性の挿入

@(key:value)​ 構文を使用して、XML 属性を作成します。

指定した XML 属性の削除

特定の XML 属性の要素とそのすべての子を再帰的にチェックし、​-​ を使用して削除する関数を定義します。. また、(型を照合するために) ​mapObject​、​if​、​is​ も使用します。

XML 属性を渡す

XML 属性を入力元ペイロードから出力 XML に渡します。動的属性式 ​@dynamicAttributes​ を使用して、入力から属性を動的に選択することで、新しい出力タグの属性が作成されます。

XML 名前空間を含める

複数の XML 名前空間を定義し、各タグでそれらを参照します。

指定したキー-値ペアを含むオブジェクトの削除

オブジェクトの配列から一連のキー-値ペアを含むすべてのオブジェクトを削除します。​contains​ で ​filter​ を使用します。

複数の入力の参照

ペイロード、メッセージ属性、変数のデータを参照します。次に、​map​、​filter​、乗算を使用してこれらを処理します。

個別のオブジェクトの項目のマージ

1 つの Mule イベントから複数の個別のペイロードに到達するデータを参照します。一意の識別子に基づいて出力を絞り込みます。​map​、​using​、​as​、​filter​ 関数を使用します。

定数ディレクティブの使用

DataWeave ヘッダーで定数ディレクティブから URL をビルドする ​var​ を定義します (文字列の連結には ​++​ を使用)。

日付の解析

競合する日付形式を 1 つの共通形式に正規化する関数を定義します。​mapObject​、​replace​、​as​ を使用して、データ型を強制変換します。

日付の加算と減算

日時に関連するさまざまな型を組み合わせて複数の算術演算を実行します。

タイムゾーンの変更

タイムゾーン ID と共に ​>>​ を使用してタイムゾーンを変更し、使用可能なタイムゾーン ID のリストを提供します。

日付と時刻の書式設定

uuuu/MM/dd​ などの書式設定文字を使用して、日付と時刻の形式を変更します。カスタム DataWeave 型を使用して、日時形式を作成します。

関数を使用したリストの条件付き削減

一連の要素を 1 つの項目に削減する関数を定義します。その後、特定の項目に値がある場合にのみこの関数をコールします。​map​、​reduce​、​splitBy​、​if​、​++​ を使用して、配列に追加します。

定義に基づいた動的なマップ

変数で設定された定義に応じてペイロードを変換します。​map​ および ​default​ を使用して、変数で定義されたロジックを適用する関数を定義します。

関数を引数として渡す

2 つの入力 (適用する関数と関数を適用する要素) を受け入れる関数を定義します。この関数は、要素の子にも再帰的に適用されます。​mapObject​、​lower​、​is​、​if/else​ を使用します。

スクリプトの出力 MIME タイプの変更

特定の形式の出力の MIME タイプをカスタマイズする方法 (​application/problem+json​ MIME タイプの JSON 出力の例を含む) を示します。

Was this article helpful?

💙 Thanks for your feedback!