outerJoin

outerJoin<L <: Object, R <: Object>(left: Array<L>, right: Array<R>, leftCriteria: (leftValue: L) -> String, rightCriteria: (rightValue: R) -> String): Array<{ l?: L, r?: R }>

オブジェクトの 2 つの配列を、指定された ​ID​ 条件で結合します。

outerJoin​ は、すべての ​left​ 項目を含む配列を返し、存在する ​right​ 項目を ID によってマージします。また、​left​ に存在しない ​right​ 項目も返します。

DataWeave バージョン 2.2.0 で導入されました。

パラメーター

名前 説明

left

オブジェクトの左側配列。

right

オブジェクトの右側配列。

leftCriteria

左のコレクションの ID を抽出するために使用する条件。

rightCriteria

右のコレクションの ID を抽出するために使用する条件。

次の例は、結合の動作を示しています。出力には、入力の ​user.id​ と ​product.ownerId​ の値が一致するオブジェクトと、​user.id​ または ​product.ownerId​ の値に一致しないオブジェクトが含まれます。

ソース

%dw 2.0
import * from dw::core::Arrays
var users = [{id: "1", name:"Mariano"},{id: "2", name:"Leandro"},{id: "3", name:"Julian"},{id: "5", name:"Julian"}]
var products = [{ownerId: "1", name:"DataWeave"},{ownerId: "1", name:"BAT"}, {ownerId: "3", name:"DataSense"}, {ownerId: "4", name:"SmartConnectors"}]
output application/json
---
outerJoin(users, products, (user) -> user.id, (product) -> product.ownerId)

出力

[
  {
    "l": {
      "id": "1",
      "name": "Mariano"
    },
    "r": {
      "ownerId": "1",
      "name": "DataWeave"
    }
  },
  {
    "l": {
      "id": "1",
      "name": "Mariano"
    },
    "r": {
      "ownerId": "1",
      "name": "BAT"
    }
  },
  {
    "l": {
      "id": "2",
      "name": "Leandro"
    }
  },
  {
    "l": {
      "id": "3",
      "name": "Julian"
    },
    "r": {
      "ownerId": "3",
      "name": "DataSense"
    }
  },
  {
    "l": {
      "id": "5",
      "name": "Julian"
    }
  },
  {
    "r": {
      "ownerId": "4",
      "name": "SmartConnectors"
    }
  }
]