CSV ファイルのデータの参照

この DataWeave の例では、​filter​ と ​map​ を使用して CSV ファイルのデータを参照し、電話番号の入力配列内で検出されたコールコードごとに国コードを返します。 開始する前に、DataWeave バージョン 2 (​%dw 2.0​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​%dw 1.0​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。

次の JSON ペイロードでは、電話番号の配列が DataWeave スクリプトに提供されます。

[
   "54-112724555",
   "1-6298765432"
]

Mule 変数 ​country_codes​ の値はコールコードを国コードに対応付ける CSV ファイルです。

CALLING_CODE,COUNTRY_CODE
1,US
7,RU
54,AR
20,EG
32,BE
33,FR
505,NI
506,CR
1876,JM
1905,CA
1939,PR
262262,RE
262269,YT
.,.
.,.

次の DataWeave スクリプトでは、ペイロードの各電話番号を読み取り、​filter​ 関数を使用して電話番号のコールコードに一致する Mule 変数 ​country_code​ 内でコールコードを検索します。続いて、​map​ 関数がコールコードに対応する国コードを取得して結果を JSON オブジェクトの配列に返します。

DataWeave スクリプト:
%dw 2.0
output application/json

fun lookupCountryCode(phoneNumber: String): String = do {
    var callingCode = (phoneNumber splitBy("-"))[0]
    ---
    (vars.country_code filter ((item, index) -> item.CALLING_CODE == callingCode) map ((item, index) -> item.COUNTRY_CODE))[0]
}
---
payload map ((item, index) -> { phone: item, countryCode: lookupCountryCode(item)})
サンプル出力 (JSON):
[
  {
    "phone": "54-112724555",
    "countryCode": "AR"
  },
  {
    "phone": "1-6298765432",
    "countryCode": "US"
  }
]