これは「他のデータフレームの列を結合する方法」のパート2です。もしJoin(結合)について良くご存知ないようでしたら、最初にパート1をご覧ください。
データを探索していると、別のデータフレームのデータをもとにデータをフィルターしたいことがあります。
こういった時は「セミ結合(Semi Join)」や「アンチ結合(Anti Join)」といったデータがフィルターされるタイプのJoin(結合)が有効です。
これらの結合タイプは、「左外部結合(Left Join)」などの結合タイプとは異なり、結合先のデータフレームから列を取得しないことに注意してください。代わりに、結合先のデータフレームのデータはフィルタリングにのみ使用されるため、「フィルタリング結合」と呼ばれます。
実際に見てみましょう。
「セミ結合(Semi Join)」は、現在のデータフレームの行のうち、結合先のデータフレーム内に一致する値を持つ行のみを保持します。
上記の例では、青の結合先データフレームにAAとUAがあるため、セミ結合(Semi Join)を実行すると、メインデータフレームのAAとUAの行のみが残ります。
「セミ結合(Semi Join)」と逆の動きをするのが、アンチ結合(Anti Join)です。結合先に一致する値がない行のみ残ります。
もし手を動かして理解を深めたいようでしたら、下記のデータをダウンロードして、以降のステップを実践してみてください。
利用するデータは以下のような米国のフライトの遅延に関るデータです。
例えば、最も頻繁に使用される上位10都市のフライト遅延データのみを表示したいとします。
これを行うために、まずはメインデータフレームから分岐したブランチのデータフレームをすばやく作成して、上位10都市のリストを作成します。
ブランンチを開始したいステップの「ブランチの作成」アイコンをクリックして、ブランチのデータフレームを作成します。
新しく作成されたブランチのデータフレームでは、2つのことを行います。最初のステップは、「集計(Summarize)」コマンドを利用して各都市のフライト数を集計することです。2番目のステップは、「Top_N」コマンドで上位10都市に絞り込むことです。
列ヘッダーメニューから「集計(Summarize)」、「カウント(行の数)」を選択します。
「グループ化」に「ORIGIN_CITY_NAME」を選択します。
これにより、各都市から出発するフライトの数が集計されます。
列ヘッダーメニューから「これだけを残す」、「上位N」を選択します。
値に「10」と入力します。
実行すると、最もフライト数が多い上位10都市のリストの完成です。
続いて、メインにデータフレームに戻ります。
「ORIGIN_CITY_NAME」の列ヘッダーメニューから「結合(列を追加する/Join)」を選択します。
すると結合ダイアログが表示されるので、「結合タイプ」に「セミ結合(Semi Join)」を選択し、結合先データフレームに先程のブランチのデータフレームを選択します。
2つのデータフレームのデータが一致するように 「ORIGIN_CITY_NAME」列が「現在」のデータフレームと「結合先データフレーム」の両方で選択します。
チャートビューに移動して、バーチャートを利用することで、上位10都市をすばやく可視化することが可能です。
「ピン」をドラッグアンドドロップして「結合」ステップの前のステップに移動すると、すべての都市を含むバーチャートが表示されます。
もう一度、上位10都市のみに絞り込んだ結合ステップに「ピン」を戻します。
今度は何らかの理由で、上位10都市以外のデータのみを表示したいとします。
そういう時には「セミ結合(Semi Join)」ステップ内のトークンボタンをクリックして、結合ダイアログを開きます。
結合タイプに「アンチ結合(Anit Join)」を選択します。
実行をすると、上位10都市以外のデータのみのチャートが表示されます。