今回は、結合ツールについてです。
左結合を複数結合ツールで楽に行う方法
例えば、販売データとマスタデータがあるとします。
販売データ:
マスタデータ:
たいてい、左結合(Left Join)を行う場合、結合ツールとユニオンツールを組み合わせて行うと思います。
ただ、R入力に余計なものがないとわかっている場合、いちいちユニオンツール配置するのがめんどくさいですよね・・・。
そのような場合には、複数結合ツールが使えます。つまり以下のようなワークフローになります。
複数結合ツールは、基本的に完全外部結合(Outer Join)もしくは内部結合(Inner Join)しかできません。デフォルトでは、完全外部結合(Outer Join)になっています。そのため、R入力に余計なデータがある場合(左入力からのデータでヒットしないデータがある場合)は余計なデータが混入してしまいます。
そのような場合は、フィルタで省く必要があります。
フィルタは、L入力側のキー列として指定したフィールドで判定を行えばオッケーです(今回で言えば、「items」で紐づけを行っているので、「items」のNull判定となります)。ですが、これだと結合+ユニオンでいいのでは?と思ってしまいますね・・・(せっかく楽したはずなのに楽になっていない・・・)。
つまり、R入力側のデータに余計なものがある場合は、フィルターツールが必要になるため、素直に結合とユニオンを使った方が良いです。速度的には、
複数結合のみ > 結合+ユニオン > 複数結合+フィルター
となります。実際のワークフローでは、R入力の不要なデータがあるかどうか不明な場面も多いかと思うので、結局結合+ユニオンというパターンが多いのではないかと思います。
※AMPエンジンオン(エンジン互換モードオフ)で実施しています
意外と、フィルターツールで時間がかかるんですね・・・。
なお、簡易な検証しかしていないので、実際のデータで検証していただければと思います。
サンプルワークフローダウンロード
次回
次回はデータ理解についてとなります。
コメント