Alteryxの検索置換ツールと結合ツールの違いをご紹介します(パフォーマンス比較)
検索置換ツールと結合ツールは一部似たようなツールとなっており、使う目的によっては代替可能となっています。
結合ツールは2つのテーブルを結合し、結合できなかったたもの、結合できたもの、その2つの種類のデータストリームを効率的に扱うことができます。
一方、検索置換ツールは、あるテーブルに対して別のテーブルを付加していくような使い方に特化したツールです。つまりExcelで言うところのVLOOKUPの機能に非常に近いです(SQLで言うなれば、左結合のイメージ)。
結合ツールを検索置換ツール的に使う場合は、ユニオンツールと組み合わせて使います。
どちらかといえば、検索置換ツールの機能は結合ツールの機能に内包されると言うこともできるかもしれません(厳密には結合ツールのみで検索置換ツールの代替はできないのですが)。
VLOOKUP的に使うのであれば圧倒的に「検索置換ツール」をおすすめします。理由は「パフォーマンス」の差です。
今回のお題
1,000万レコードのデータに対して、Lookupテーブル(2,092レコード)の値を紐付けたいと思います。
この作業を結合ツール+ユニオンツールの場合と、検索置換ツールの場合で比較したいと思います。
なお、今回使うデータはAlteryxインストール時にサンプルとして提供される「TutorialDataAddressesAll.yxdb」です。このデータの中の「City」というフィールドから1意のレコードを抜き出ことで2,092レコードとなり、これをLookupテーブルとして使いたいと思います。
※このサンプルデータは「C:\Program Files\Alteryx\Samples\ja\SampleData」あたりにあると思います
ちなみに、上記サンプルではデータ量が少なすぎるため、1,000万行になるように(行生成+サンプリングで)調整しています。
ちなみに、置換検索ツールをVLOOKUP的に使う場合の設定はこのような感じです(キーとなるフィールドは結合ツールのように複数選択できないので、あらかじめ一つのフィールドにまとめておく必要があります)。
結果
今回はパフォーマンスプロファイリングをオンにして計測してみました。結果は以下のとおりです。
※簡易式ということで、1回しか計測はしていませんが、数回実行していてだいたいこれくらいの結果となることは確認しています
方法 | かかった時間 | 該当ツールのみの時間 |
---|---|---|
結合ツール(Join) | 27.8秒 | 19.4秒(結合、ユニオン) |
検索置換ツール(Find Replace) | 12.5秒 | 3.9秒(検索置換) |
※パフォーマンスプロファイリングを使うと、ツール単位での実行時間が表示できるため、該当ツールのみの時間も記載してみました。
比較結果として、全体でかかった時間は15秒くらいの開きとなり、だいたい2倍といったところですが、該当ツールのみで比較すれば5倍近い開きが出ています。
まとめ
VLOOKUP的にテーブルを結合したい場合は、結合ツールと比べると圧倒的に検索置換ツールが向いていることがわかりました。
パフォーマンス的には5倍程度の開きがあるため、使える場合は積極的に検索置換ツールを使っていただければと思います。
もちろん、検索置換ツールでは紐付かないものが明示的に出てくるわけではないので、うまく使いわける必要があります(結果がNullのところをフィルタで分離すれば紐付かないものだけ抜き出すことも可能ですが)。
おまけ
ちなみに、1000万行クラスになるとExcelでは扱えないため、100万行に減らしてExcelと比較してみました。
ツール | 方法 | かかった時間 |
---|---|---|
Alteryx 2019.2.7 | 結合ツール(Join) | 5.8秒 |
Alteryx 2019.2.7 | 検索置換ツール(Find Replace) | 4.4秒 |
Excel2010 | VLOOKUP関数 | 約50秒 |
100万行くらいだとAlteryxでもツールの差はそれほど感じずらいですが、Excelと比べると10倍どころの差ではありません・・・。Excelの場合は、ファイルを開く時間もさらに別途加算されますので・・・(100万行クラスだとファイルを開くのに結構待たされます)。
サンプルWFダウンロード
※Alteryx 2019.2.7.63499時点の情報です