データプレップでデータを結合する
学習の目的
この単元を完了すると、次のことができるようになります。
- データセットのさまざまな結合種別について説明する。
- 粒度を保持するためにルックアップタスクと結合タスクを評価する。
複数のデータセットのリンク
提案するデータセットには、複数の関連データソースのデータを 1 つにまとめるデータ操作が必要です。前の単元では、ルックアップについて学びました。詳細を確認すべきもう 1 つの操作として、結合があります。目的の結果を得るために、内部結合、左結合、右結合、完全外部結合など、多くの結合動作があります。
次の結合の例で使用されるデータセットには、各行を一意に定義する値が含まれており、データセット間で共通の値を特定することができます。
内部結合: 商談とケースの照合
内部結合では、共通の項目に基づいて一致するレコードが選択されます。
図 4 では、内部結合は Opportunity.AccountId と Cases.AccountId 間で開始されます。両方のデータセットの最初の 2 行にある値 Account1 が一致します。それぞれのデータセットから一致行が結合結果に追加されます。
図 5 では、一致が確立され、一致行の項目が出力データセットに追加されています。商談の Opp001 の値を見てみましょう。その AccountId はケースの Case1 と Case2 の AccountId と一致するため、Opp001 は両方の行で繰り返されます。ケースの一致行はマージされず、それぞれ別々になっています。
このステップは引き続き、Opportunity.Name の Illuminations と Opportunity.Amount の $500 に対して実行されます。このプロセスは Opp002 でも繰り返され、ケースの Case1 および Case2 と一致します。また、ケースから始めて、商談の AccountID と照合するという、同じ内部結合の概念を検討することもできます。
左結合 (完全左結合): 商談からケースへの照合
左結合では、左側のデータセットからすべての行が出力され、共通の項目に基づいて、右側のデータセットから一致行が追加されます。
AccountId を使用した商談とケース間の左結合では、一致するケースレコードがあるかどうかにかかわらず、すべての商談レコードが出力されます。次に、商談レコードが AccountId でケースと照合され、一致行が追加されます。最後に、ケース内の商談が一致しないレコードが、ケースディメンション項目が「null」、ケース基準項目が「0」で出力されます。
OppID である Opp001 と Opp002 にはそれぞれ、2 つの一致するケース行 (AccountId による一致) があるため、4 行になっています。左結合では、商談レコード数が増加していることに注意してください。
右結合 (完全右結合): ケースから商談へ照合
右結合では、右側のデータセットからすべての行が出力され、共通の項目に基づいて、左側のデータセットから一致行が追加されます。
商談とケースを使用した右結合は、左結合と同様に動作しますが、ケースデータセットの観点から実行されます。
完全外部結合: 商談とケースの照合
完全外側結合では、データセット間で一致があるどうかにかかわらず、すべてのレコードが返されます。
つまり、完全外部結合では、商談とケースからすべての行が返されます。不一致行には「null」が含まれます。
ルックアップと結合の違いは?
すでに説明したように、商談からケースへのルックアップは以下のようになります。
商談から取引先への左結合を見てみましょう。
左結合後、商談の行数は結合前と同じであり、取引先からの関連項目が追加されています。最終的な結果は、商談から取引先へのルックアップと類似しています。どうして、このようになったのでしょう? 取引先データセットには、ケースにあるような繰り返しの AccountId が含まれていないため、繰り返しのレコードはありません。このような場合、ルックアップと左結合は同じ結果になると仮定できるでしょう。
すべての取引先および関連する商談項目を出力するための取引先と商談の左結合を見てみましょう。この場合、取引先行の一意性が維持できないという結果になります。
まとめ
結合は、複数のデータセットの行を組み合わせるための強力な変換ツールです。利用可能なさまざまな種別の結合とその使用方法を理解することで、ビジネスニーズを満たすデータセットを作成できるようになります。ここで肝心なのは、出力結果が意図しない結果にならないように、どの結合動作が最も適しているかを評価する必要があるということです。