JOIN句を使用 - Cloud

Talend Data Shaping Languageリファレンスガイド

Version
Cloud
Language
日本語 (日本)
Product
Talend Cloud
Module
Data Shaping Language
Content
ジョブデザインと開発

JOIN句を使って、条件に基づいて2つのコレクションを結合します。

JOIN句は、FROM句またはUNNEST句の後に使用される必要があります。JOINキーワードは識別子と条件として使用する式を紹介するONキーワードに後続されます。
JOIN identifier ON expression 
条件は、ブール値を返す単純式か条件式であることが必要です。例:
FROM customers AS c
JOIN orders AS o ON c.custid == o.custid

JOIN句は、FROM句を使用で定義されたASキーワードおよびINDEXキーワードを含めます。

デフォルトでは、JOINキーワードにより内部結合が実行されますが、使用する結合のタイプを指定できます。
  • INNER JOIN句は、両方のコレクションで条件を満たしているアイテムのみを結合します。
  • LEFT OUTER JOINは、FROM句またはUNNEST句内にあるコレクションからのアイテムをすべて返し、JOIN句内にあるコレクションからの条件を満たすアイテムを結合します。
たとえば次の入力では:
{
    "customers": [
        {
            "custid": "1234",
            "name": "Jack Smith"
        },
        {
            "custid": "5678",
            "name": "Jane Smith"
        },
        {
            "custid": "9874",
            "name": "John Doe"
        }
    ],
    "orders": [
        {
            "orderid": "abc-6511",
            "custid":"1234"
        },
        {
            "orderid": "def-6872",
            "custid":"5678"
        }
    ]
}
異なる結合タイプの同じクエリーにより、異なる結果が返されます:
  • INNER JOINは順序に関連付けられた顧客のみを返します:
    FROM customers AS c
    INNER JOIN orders AS o ON c.custid == o.custid
    SELECT {
      name,
      orderid
    }
    [
       {
          "name":"Jack Smith",
          "orderid":"abc-6511"
       },
       {
          "name":"Jane Smith",
          "orderid":"def-6872"
       }
    ]
  • LEFT OUTER JOINは顧客をすべて返し、顧客に関連付けられた順序がない場合は、orderidエレメントを無視します。
    FROM customers AS c
    LEFT OUTER JOIN orders AS o ON c.custid == o.custid
    SELECT {
      name,
      orderid
    }
    [
       {
          "name":"Jack Smith",
          "orderid":"abc-6511"
       },
       {
          "name":"Jane Smith",
          "orderid":"def-6872"
       },
       {
          "name":"John Doe"
       }
    ]
注: この例では、条件で使用されるエレメントは両方のコレクションで同じ名前が付いています。相対パスに関する問題を避けるには、各コレクションのエイリアスを定義する必要があります。