[Alteryx]Output Dataツールを使用したRedshiftへのデータロードを比較する

2017.06.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、yokatsukiです。

本エントリは、以前の投稿の続きです。

上記エントリではRedshiftへのデータ出力にOutput Dataツールからバルクロード(Redshift Bulk...)機能を使いましたが、その他の設定について比較検討してみます。

検証環境と設定

検証に使用した環境は以前の投稿と同じですが、念のため下記示します。

環境

  • MacBook Pro (Retina, 13-inch, Early 2015)
  • macOS Sierra 10.12.5
  • Windows 10 Pro 64bit on WMware Fusion 8.5.7
  • Alteryx Designer x64 11.0.6.28907
  • Amazon Redshift ODBC Driver x64 1.3.1.1000
  • Amazon Redshift 1.0.1351
    • dc1.large 2nodes

入出力データ

入力

出力

  • Redshiftテーブル "cm_yokatsuki.orders"
  • ODBCデータソース名 "Alteryx test"(以下情報含む)
    • Redshiftクラスタエンドポイント名
    • 接続ポート番号
    • データベース名
    • ログインユーザ名/パスワード
    • データ転送ルール(1行毎か丸ごとか、等)

Output Dataツールの設定

Input Dataツールでファイルを読み込む設定までは以前の投稿と同じです。今回はOutput Dataツールにおいて、Redshift Bulk...の設定とは別の、汎用的なODBC接続設定を使用します。

Input Dataに続く形でOutput Dataツールを配置し、今回はODBC...を選択します。

alteryx-compare-difference-in-output-data-function-01

ODBC接続情報は、設定済みのAlteryx testを流用します。

alteryx-compare-difference-in-output-data-function-02

テーブル名は、以前と同じcm_yokatsuki.ordersとします。

alteryx-compare-difference-in-output-data-function-03

設定ができました。出力のRedshiftテーブルに対する設定は、バルクロードと同じようです。テーブルの自動作成、プライマリキーの設定、分散キーの設定項目が確認できます。

alteryx-compare-difference-in-output-data-function-04

ワークフローの実行

設定したワークフローを実行します。進行状況を表すメーターが表示されるのですが、やたら遅いです…。

alteryx-compare-difference-in-output-data-function-05

AWS管理コンソールから、Redshiftへ実行されているクエリの状況を確認すると、おびただしい数のINSERT文が発行されています。

alteryx-compare-difference-in-output-data-function-07

バルクロードの際には30秒程で終わった処理が、待てども待てどもなかなか終わりません。

alteryx-compare-difference-in-output-data-function-08

結局、ロード完了まで30分程掛かってしまいました。

alteryx-compare-difference-in-output-data-function-09

まとめ

同じOutput Dataツールを用いて、設定の違いによる挙動の違いを確認しました。

汎用的なODBCを使用したデータ出力は、内部的に1接続でINSERT文をひたすら繰り返し実行することがわかりました。Redshiftをロード対象とした場合は、AWSのドキュメント記載の通り、ロード性能が上がらない、という結果となりました。

Redshiftへのロードをする際には汎用ODBC出力は避け、バルクロードを選ぶということで覚えておきましょう。それでは、また。