複数データを結合して利用しよう!- 今日からはじめるAlteryx再入門アドベントカレンダー

2020.12.04

こんにちは、ソリューション部・新納(にいの)です。アドベントカレンダー企画は毎年自転車操業なので毎年ヒイヒイ言っています。ヒイ……ヒイ……

当エントリは2020年アドベントカレンダー『今日からはじめるAlteryx再入門』の04日目のエントリです。

このアドベントカレンダーの企画は、Developers.IOにてAlteryxの情報をお届けしてきたメンバーによるAlteryxを1から学べるシリーズになっています。Alteryx触ってみたい!という方の入門記事として、Alteryx使っているけど改めて基礎から学びたい!という方の再入門記事としてご活用いただければ幸いです。

4日目の今日は「複数データを結合して利用しよう!」をお届けします。

データを結合したくなる時ってこんな時

売り上げデータはAmazon Redshiftに入っているけど、商品マスタはPostgreSQLに格納されているんだよね…

同じデータベースの違うテーブルに利用したいデータが入ってる…

このように、分析対象となるデータは組織内やデータソース内のいろんなところに散らばっているというケースが多いと思います。Alteryxはデータブレンディングも得意とするところで、多種多様なデータソースとの連携が可能なところも強みです。対応データソースは以下ドキュメントよりご参照ください。

Alteryxであればノンコーディングでデータ同士の結合も可能です。本エントリでAlteryxでの結合処理を学んでいきましょう。

ちなみに、「結合するどころか、データが散らばりすぎててどこに何があるのかわからないよ!」というお悩みにはデータカタログ製品Alteryx Connectが役立ってくれます。本アドベントカレンダーでは12/24に公開予定ですが、待ちきれないよ!という方は以下もあわせてご参照ください。

結合の種類とAlteryxでの実現方法

行方向にデータを結合する

例のように、同じ属性のデータを行方向に結合したいケースがあるかと思います。私が奈良県出身なので使用するサンプルデータには極力奈良を推していきたいですね。

それはさておき、このようなケースではユニオン(Union)ツールを使用します。

ユニオンツールは複数のデータストリームを行方向に結合するツールです。以下の3つの設定内容が選択可能です。

  • 名前による自動設定:項目名に基づいて結合
  • 位置による自動設定:項目の位置に基づいて結合
  • 手動でフィールドを設定:結合する位置を手動で設定

参考情報

列方向への結合

列方向へデータを結合する場合は、二つのデータソースに共通するキーをもとにレコードを結合します。SQLを触ったことがある方ならお馴染みですが、結合にもいろいろ種類があるので以下の例でご説明します。

キーが一致するデータのみを取得(内部結合)

SQLでいうとことろのINNER JOINです。結合ツールのJ(ジョイン)アンカーの出力に相当します。

左側のキーがすべて残る(左外部結合)

LEFT OUTER JOINです。結合ツールのJ(ジョイン)アンカーとL(レフト)アンカーをユニオンツールでさらに結合します。

右側のキーがすべて残る(右外部結合)

RIGHT OUTER JOINです。今度は結合ツールのJアンカーとR(ライト)アンカーをユニオンツールでさらに結合します。

左右両方のキーがすべて残る(完全外部結合)

FULL OUTER JOINです。結合ツールすべてのデータ出力をユニオンツールで結合させます。

参考情報:

組み合わせて結合(デカルト結合)

画像のように、各レコードごとにセグメントを追加したいなどといった列・行両方向へのデータ結合のケースです。例として、奈良県の地域ごとに年代のセグメントを結合します。

Alteryxではフィールド付加ツール(Append Fields tool)を使用します。

T(ターゲット)アンカーには大きいデータストリームを、S(ソース)アンカーにはターゲットストリームに追加するデータストリームを接続するだけです。

参考情報:

まとめ

種類別にAlteryxでデータを結合する方法をご紹介しました。先日、SQLを書く機会があったのですが、「あれ、どうやって結合したら期待通りのデータが取れるんだっけ…」と悩んで思わずAlteryxを開き、ツールを並べてSQL文を閃くというシーンがありました。Alteryxでの処理の組み立て方が頭に入っているとSQLを記述するときにも役立ちますし、結合は基本の処理でもありますのでしっかり押さえておきましょう!

明日は「複数行・複数列の計算」をご紹介予定です。お楽しみに!