Flex Gateway新着情報
Governance新着情報
Monitoring API Manager指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。
このバージョンの groupBy は、criteria 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、null 値を処理します。
次の例では、入力配列 ["a","b","c"] の項目をインデックスでグループ化します。数値インデックスが文字列として返され、配列の項目 (または値) が配列 (この場合はそれぞれに 1 つの項目を含む) として返されます。配列の項目は、名前付きパラメーター (item および index) を使用する匿名関数 (item, index) → index に基づいてグループ化されます。
["a","b","c"] groupBy $$ のように、匿名パラメーター $$ を使用して同じ結果を生成し、配列のインデックスを特定できます。
次の例では、言語項目に基づいて配列の要素をグループ化します。
グループ化条件を指定するために item.language セレクターが使用されています。このため、結果のオブジェクトでは、入力からの「language」値 ("Scala" と "Java") を使用して出力をグループ化します。また、出力の配列には各入力オブジェクトが配置されています。
次の例では、groupBy "myLabels" を使用して、"mylabels" をキーとして、選択された値の配列 (["Open New", "Zoom In", "Zoom Out", "Original View" ]) を値とするオブジェクトを返します。配列の作成にはセレクター (myVar.menu.items.*label) が使用されています。このセレクターは、"label" をキーとするすべての値を保持しますが、"id" をキーとする値を除外します。
%dw 2.0
var myVar = { menu: {
    header: "Move Items",
    items: [
        {"id": "internal"},
        {"id": "left", "label": "Move Left"},
        {"id": "right", "label": "Move Right"},
        {"id": "up", "label": "Move Up"},
        {"id": "down", "label": "Move Down"}
    ]
}}
output application/json
---
(myVar.menu.items.*label groupBy "myLabels")
入力内の要素を反復処理するために groupBy で使用する条件に基づいて、オブジェクトの要素をグループ化します。
| 名前 | 説明 | 
|---|---|
  | 
グループ化するオブジェクトを含むオブジェクト。  | 
  | 
グループ化に使用するオブジェクトの   | 
次の例では、入力オブジェクト内の各キーの値の代わりに匿名パラメーター $ を使用して、オブジェクトの配列内のオブジェクトをグループ化します。この値には DataWeave upper 関数が適用されます。出力では、この値は大文字のキーになります。{ "a" : "b", "c" : "d"} groupBy (value) → upper(value) にように、匿名関数の代わりに名前付きパラメーターを使用して、同じ例を記述することもできます。
次の例では、groupBy "costs" を使用して XML オブジェクトから JSON オブジェクトを生成します。JSON オブジェクトでは、"costs" がキーになり、XML 要素 prices の選択された値が JSON 値 ({ "price": "9.99", "price": "10.99" }) になります。