distinctBy

DataWeave 2.2 は Mule 4.2 と互換性があり、Mule 4.2 にバンドルされています。 このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポート​が終了しました。

このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。

標準サポートが適用されている最新バージョンの Mule 4 にアップグレード​することをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。

distinctBy(Array<T>, (item: T, index: Number) -> Any): Array<T>

配列を反復処理し、一意の要素を配列に返します。DataWeave では、指定したラムダを一意性の条件として適用した結果が使用されます。

このバージョンの ​distinctBy​ 項目は、配列内の一意の値を検索します。その他のバージョンは、オブジェクトで動作し、null 値を処理します。

パラメーター

名前 説明

items

評価する配列。

criteria

配列から ​item​ または ​index​ を選択するために使用する条件。

次の例では、重複する数値を含む配列を入力し、その入力からの一意の数値を含む配列を返します。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​[0, 1, 2, 3, 3, 2, 1, 4] distinctBy $​)。

ソース

%dw 2.0
output application/json
---
[0, 1, 2, 3, 3, 2, 1, 4] distinctBy (value) -> { "unique" : value }

出力

[ 0, 1, 2, 3, 4]

次の例では、配列から ​"Kurt Cagle"​ の重複を削除します。

ソース

%dw 2.0
output application/json
var record =  {
  "title": "XQuery Kick Start",
  "author": [
    "James McGovern",
    "Per Bothner",
    "Kurt Cagle",
    "James Linn",
    "Kurt Cagle",
    "Kurt Cagle",
    "Kurt Cagle",
    "Vaidyanathan Nagarajan"
  ],
  "year":"2000"
}
---
{
    "book" : {
      "title" : record.title,
      "year" : record.year,
      "authors" : record.author distinctBy $
    }
}

出力

{
  "book": {
    "title": "XQuery Kick Start",
    "year": "2000",
    "authors": [
      "James McGovern",
      "Per Bothner",
      "Kurt Cagle",
      "James Linn",
      "Vaidyanathan Nagarajan"
    ]
  }
}

distinctBy(Null, (item: Nothing, index: Nothing) -> Any): Null

distinctBy​ を null 値に使用できるようにするヘルパー関数。

distinctBy(​{ (K)?: V }, (value: V, key: K) -> Any): Object

オブジェクトから重複するキー-値ペアを削除します。

パラメーター

名前 説明

object

キー-値ペアを削除する元のオブジェクト。

criteria

削除するキー-値ペアを識別するために使用する ​key​ (キー) および/または ​value​ (値)。

次の例では、重複するキー-値ペアを含むオブジェクトを入力し、その入力のキー-値ペアを含むオブジェクトを返します。キー (​a​ と ​A​) は大文字と小文字を区別して処理されませんが、値 (​b​ と ​B​) は大文字と小文字を区別して処理されます。値の代わりに匿名パラメーターを使用して同じ式を記述することができます (​{a : "b", a : "b", A : "b", a : "B"} distinctBy $​)。

ソース

%dw 2.0
output application/json
---
{a : "b", a : "b", A : "b", a : "B"} distinctBy (value) -> { "unique" : value }

出力

{ "a": "b", "a": "B" }

次の例では、​<book/>​ から重複 (​<author>James McGovern</author>​) を削除します。

ソース

%dw 2.0
output application/xml
---
{
   book : {
     title : payload.book.title,
     authors: payload.book.&author distinctBy $
   }
}

入力

<book>
  <title> "XQuery Kick Start"</title>
  <author>James Linn</author>
  <author>Per Bothner</author>
  <author>James McGovern</author>
  <author>James McGovern</author>
  <author>James McGovern</author>
</book>

出力

<book>
  <title> "XQuery Kick Start"</title>
  <authors>
      <author>James Linn</author>
      <author>Per Bothner</author>
      <author>James McGovern</author>
  </authors>
</book>