結合In-DBツールで結合ツールと同じアウトプットを得る方法をご紹介します
「結合In-DB」ツールは内部的にはSQLで動作するためアウトプットもSQLの結果と同等となっており、「結合」ツールとは出力結果が異なり、SQLに慣れていないユーザーとしては非常に違和感があると思います。今回は、結合ツールと同じように使えるような手法について説明します。
結合ツールのおさらい
Alteryxの結合ツールは、左入力(L入力)、右入力(R入力)から来たデータについて、キーフィールドに基づいてデータを紐付けるツールです(本記事はIn-DBツールのお話が主題となりますので、結合In-DBではできない「レコードポジションで結合」するオプションは忘れてください)。アウトプットは3つあり、L出力、J出力、R出力となっています。それぞれ以下の通りとなります。
出力 | 説明 |
---|---|
L出力 | キーフィールドが紐付かなかったL入力から来たデータ(下図の青色) |
J出力 | キーフィールドが紐付いたデータ(下図のオレンジ色) |
R出力 | キーフィールドが紐付かなかったR入力から来たデータ(下図の緑色) |
つまり、ベン図にすると、以下のようになります。
しかし、これはExcelのVLOOKUPや、SQLの結合とは異なります。例えば、SQLでの結合は、左結合、右結合、内部結合、外部結合という言い方となり、実はSQLの結合(内部結合)に該当するのはJ出力です。左結合や右結合、外部結合に該当するものはAlteryxの結合ツールにはありません。
SQLと結合ツールのアウトプットの違い
もう少し違いを見ていきましょう。SQLの結合は以下のようになります。
出力 | 説明 |
---|---|
内部結合 | キーフィールドが紐付いたデータ |
外部結合 | すべてのデータ(キーフィールドで紐付いたデータ+キーフィールドが紐付かなかったL入力から来たデータ+キーフィールドが紐付かなかったR入力から来たデータ) |
左結合 | キーフィールドで紐付いたデータ+キーフィールドが紐付かなかったL入力から来たデータ |
右結合 | キーフィールドで紐付いたデータ+キーフィールドが紐付かなかったR入力から来たデータ |
つまり、ベン図にすると、以下のようになります。
内部結合。
外部結合(完全な外部結合)。
左結合(左外部結合)。
右結合(右外部結合)。
つまりこれを得るには以下のようにユニオンツールと組み合わせます。
左結合。
右結合。
外部結合。
結合In-DBツールについて
結合In-DBツールでは、基本的にSQLと同じ出力を得ることができます。
そのため、以下のようにSQLと同様、出力はいずれか1つを選択する必要があります。
しかしよくよく考えると、Alteryxの結合ツールとは異なり、出力が1つしかありませんし、そもそも結合ツールのL出力とR出力と同等の出力は得ることができません。
結合In-DBで結合ツールのアウトプットを得る方法
Alteryxの結合ツールに慣れてしまうと、通常のSQLとは異なる考え方が頭に浮かぶようになってきます。ここで、In-DBを使わざるをえない状況になると、In-DB結合ツールは結合ツールの動きとは異なるため少し発想の転換が必要です。
Alteyrxの結合ツールのL出力、R出力を得る方法の答えとしては、結合In-DBは完全な外部結合で出力し、その後フィルターIn-DBを用い、キー項目でNullだけ抜き出します。このとき、L入力、R入力のうち例えばR側のキー項目がNullであればL側にしかないデータを抽出可能です。つまり、以下のようになります。
出力 | 説明 |
---|---|
L出力 | R出力のキーフィールドがNullである |
R出力 | L出力のキーフィールドがNullである |
それではサンプルで見てみましょう。
結合In-DBツールでL出力を得る設定
結合In-DBツールでR出力を得る設定
サンプルワークフローダウンロード
サンプルワークフローは、In-DBツールを使用しているため、データベース接続部分だけ書き換える必要があります。
L出力を得る_ブログ用Sample fa-download
※Alteryx Version 2021.2.1時点での情報です