

# データセットの結合
<a name="transforms-configure-join"></a>

*結合* 変換を使用すると、2 つのデータセットを 1 つに結合できます。比較する各データセットのスキーマのキー名を指定します。出力 `DynamicFrame` には、キーが結合条件を満たす行が含まれます。結合条件を満たす各データセットの行は、いずれかのデータセット内で見つかったすべての列を含む出力 `DynamicFrame` の単一の行に結合されます。

**Join (結合) 変換ノードをジョブ図に追加するには**

1. 使用可能なデータソースが 1 つしかない場合は、新しいデータソースノードをジョブ図に追加する必要があります。

1. 結合するソースノードを 1 つ選択します。リソースパネルを開いて、**[Join]** を選択し、ジョブ図に新しい変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。

1. [**Node properties**] (ノードのプロパティ) タブの、見出し [**Node parents**] (ノードの親) の下で、結合の入力を提供するデータセットが 2 つ存在するように親ノードを追加します。親ノードは、データソースノードまたは変換ノードです。
**注記**  
結合すると、親ノードを 2 つだけ持つことができます。

1. [**Transform**] (変換) タブを選択します。

   競合するキー名があることを示すメッセージが表示された場合は、次のいずれかの操作を行います。
   + [**Resolve it**] (解決する) を選択して、*ApplyMapping* 変換ノードをジョブ図に自動的に追加します。ApplyMapping ノードにより、他のデータセットのキーと同じ名前を持つデータセット内のキーにプレフィックスが追加されます。例えば、デフォルト値 **right** を使用している場合、左側のデータセットと同じキー名を持つ右側のデータセットのキー名は `(right)key name` に変更されます。
   + ジョブ図に変換ノードを早期に手動で追加して、競合するキーを削除するか、名前を変更できます。

1. [**Join type**] (結合タイプ) のリストで、結合のタイプを選択します。
   + **Inner join** (内部結合): 結合条件に基づくすべての一致に対して、両方のデータセットの列を含む行を返します。結合条件を満たさない行は返されません。
   + **Left join** (左結合): 左側のデータセットのすべての行と、結合条件を満たす右側のデータセットの行の結合です。
   + **Right join** (右結合): 右側のデータセットのすべての行と、結合条件を満たす左側のデータセットの行の結合です。
   + **Outer join** (外部結合): 両方のデータセットのすべての行の結合です。
   + **Left semi join** (左半結合): 右側のデータセットで結合条件に基づく一致がある、左側のデータセットのすべての行の結合です。
   + **Left anti join** (左反結合): 右側のデータセットで結合条件に基づく一致がない、左側のデータセットのすべての行の結合です。

1. [**Transform**] (変換) タブで、見出し [**Join conditions**] (結合条件) の下にある、[**Add condition**] (条件の追加)を選択します。比較する各データセットからプロパティキーを選択します。比較演算子の左側にあるプロパティキーを左側のデータセット、右側にあるプロパティキーを右側のデータセットと呼びます。

   より複雑な結合条件の場合、[**Add condition**] (条件の追加) を複数回クリックして、他の一致するキーを追加できます。誤って条件を追加した場合は、削除アイコン (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/delete-icon-black.png)) をクリックして削除できます。

1. (オプション) 変換ノードのプロパティを設定した後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データ用に変更されたスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

結合出力スキーマの例では、次のプロパティキーを持つ 2 つのデータセット間の結合を検討します。

```
Left: {id, dept, hire_date, salary, employment_status}
Right: {id, first_name, last_name, hire_date, title}
```

結合は、`=` 比較演算子を使用して、`id` および `hire_date` キーで一致するように設定されます。

両方のデータセットに `id` および `hire_date` キーが含まれているため、[**Resolve it**] (解決する) を選択して、右側のデータセットのキーにプレフィックス **right** が自動で追加されるようにします。

出力スキーマのキーは次のようになります。

```
{id, dept, hire_date, salary, employment_status, 
(right)id, first_name, last_name, (right)hire_date, title}
```