Amazon RedshiftのMac OS X向けGUIツールとして『Intellij IDEA Ultimate Edition』のDatabase Toolsを使う

2015.06.14

Amazon Redshiftを開発や日々の業務でお使いの皆さん、GUIツールには何を使っているでしょうか?私は当エントリでもご紹介しているように、この『Intellij IDEA Ultimate Edition』のDatabase Toolsというものを普段使っています。

intellij-idea-database-tools

Database Tools、利用出来るのは"Ultimate Edition"のみ

Intellij IDEAには『Community Edition』と『Ultimate Edition』の2つのエディションがあるのですが、Database Toolsが使えるのは後者のUltimate Editionのみとなります。

intellij-idea-database-tools_00_00

intellij-idea-database-tools_00_01

ちなみにUltimate Edition、個人利用の場合はライセンス料金が新規購入で$199、更新で$99掛かります。(2015年06月時点)

intellij-idea-database-tools_00_02

商用ライセンスの場合は新規購入$499、更新$299掛かります。(2015年06月時点)

intellij-idea-database-tools_28

メニュー遷移・接続確認

ひとまず適当なプロジェクトを作成しておきます。

intellij-idea-database-tools_07

関連機能は、メニューの[View]→[Tool Windows]→[Database]で遷移可能です。

intellij-idea-database-tools_08

[View]の[Tool Buttons]を選択しておくと、タブ表示がされるようになります。

intellij-idea-database-tools_09

メニューの[+]印から[Data Source]→[PostgreSQL]を選択し、

intellij-idea-database-tools_10

必要事項を入力。一番最初の状態だとPostgreSQLのドライバが無いので、[Download]のリンクをクリックしてドライバを入れておきます。

intellij-idea-database-tools_11

接続テスト実施。[Test Connection]を押下して以下の様にメッセージが出てればOKです。

intellij-idea-database-tools_12

また、併せて以下の設定も必要に応じた内容で設定しておいてください。

intellij-idea-database-tools_13

接続後のスキーマ、テーブルの一覧。このような感じで表示されます。

intellij-idea-database-tools_14

Database Toolsが良いと思う幾つかのポイントのご紹介

試しに、以下のSQL文を幾つか用意してみます。(存在してた場合)DROP TABLEでテーブル削除、CREATE TABLEでテーブル作成、COPY文でS3に上げているデータの投入を行う、というようなSQLをツール上で実行する事を想定しています。エラーがあった時に内容を確認するためのSELECT文も用意しています。

DROP TABLE public.orders;
CREATE TABLE public.orders (
  order_id INT NOT NULL,
  order_date DATE NOT NULL,
  priority VARCHAR(12) NOT NULL,
  quantity SMALLINT NOT NULL,
  sales DOUBLE PRECISION,
  discount_rate DOUBLE PRECISION,
  ship_mode VARCHAR(20) NOT NULL,
  profit INT NOT NULL,
  unit_price INT NOT NULL,
  ad_expenses INT NOT NULL,
  shipping_cost INT NOT NULL,
  customer_name VARCHAR(50) NOT NULL,
  prefecture VARCHAR(12) NOT NULL,
  city VARCHAR(20) NOT NULL,
  area VARCHAR(12) NOT NULL,
  shop_name VARCHAR(20) NOT NULL,
  customer_segment VARCHAR(30) NOT NULL,
  product_category VARCHAR(30) NOT NULL,
  product_sub_category VARCHAR(100) NOT NULL,
  product_id VARCHAR(10) NOT NULL,
  product_name VARCHAR(100) NOT NULL,
  product_description VARCHAR(200) NOT NULL,
  product_container VARCHAR(100) NOT NULL,
  base_margin DOUBLE PRECISION,
  supplier VARCHAR(30) NOT NULL,
  deliver_date DATE NOT NULL,
  ship_date DATE NOT NULL,
  PRIMARY KEY (order_id)
)
  distkey(order_id)
  sortkey(order_id,order_date);


COPY public.orders FROM 's3://xxxxxxxxxxxxxxxxxxxx/superstore-orders-utf8.csv'
CREDENTIALS 'aws_access_key_id=XXXXXXXXXX;aws_secret_access_key=YYYYYYYYYY'
IGNOREHEADER 1
CSV
DATEFORMAT 'YYYY/MM/DD';


SELECT * FROM stl_load_errors ORDER BY starttime DESC LIMIT 10;

スキーマも個別に切り替えられるようですね。

intellij-idea-database-tools_21

補完もこのように効きます。

intellij-idea-database-tools_22

SQLエディタのアイコンをクリックすると、

intellij-idea-database-tools_23

以下の様に細かい設定も可能となります。

intellij-idea-database-tools_24

で、個人的に一番嬉しい機能というか内容としては『複数のSQLをスムーズに実行出来る状況が整っている』点です。

以下はCOPY文にカーソルを合わせていますが、Database Toolsではカーソルを合わせたSQL文が背景色ハイライトされ、

intellij-idea-database-tools_25

[Command]+[Enter]、もしくは以下のように右クリックメニューでそのSQLのみ、実行する事が出来るのです。複数SQL文を選択していれば(下記ではDROP TABLE文、CREATE TABLE文をまとめて選択しています)、2つまとめて実行しています。

intellij-idea-database-tools_26

これが出来る事で、例えば上記の一連のSQL文を使ってデータの検証、テーブル定義の調整を行う場合、非常にスムーズな流れで『テーブル作成→データ投入→(エラーの場合)エラー内容を確認→テーブル再作成...』のようにトライアンドエラーのフローを回す事が可能となります。構成構築初期の段階でこのサイクルを効率良く回せるのはだいぶ助かる事と思います。(実際自分もだいぶこれで助けられました)

SQLはファイルの形としても保存/認識/実行させる事が可能です。プロジェクトとしてSQLを管理・活用する場合であればこの形で実行出来る事も嬉しいのではないかと思います。勿論、Intellij IDEAの機能としてGitやMercurial等のDVCS(分散型バージョン管理システム)とも連携していますので、これらのSQLファイルを適切な形でバージョン管理させる事も可能です。

intellij-idea-database-tools_27

あと、Redshiftで扱うSQLについても、普段使いする限りでは大体問題なく実行可能だと思います。UNLOAD処理についてはエディタが上手く認識してくれない程度でしょうか。その他については特に使用に際して不便さを感じる事はありません。自分の場合は大枠でIntellij IDEA Database Toolsを使い、利用出来ないコマンドや状況の時にはpsqlコマンドを併用しています。

まとめ

以上、Intellij IDEA Ultimate EditionのDatabase Toolsに関するご紹介でした。Redshift対応を謳ったGUIツールについては、以前下記のエントリで幾つかご紹介して来ましたがなかなか良いのが厳しいところです。無償・Mac版ともなると更に選択肢が狭まってしまうのが悩ましいところ。

Intellij IDEA Ultimate Editionは有償となるのでなかなか手が伸び辛い部分もあるかと思いますが、ご紹介した部分があるだけでも『買い』だと個人的には思っています。Amazon Redshiftでガシガシ環境を構築するようなユーザーの方が居ましたら、GUIツールの選択肢の1つとしてこのツールを入れてみてはいかがでしょうか。こちらからは以上です。