工場長のブログ

日々思ったことを書いてます。

ExcelでRedshift

ExcelってODBC扱えるよね、ということを思い出したのでExcelからRedshiftに接続してみたメモ。
あんまり難しいこと考えずにDWHをカジュアルに使おうぜ、という気持ち。基本的には下記のブログを参照してやってみた。

http://pgsqldeepdive.blogspot.jp/2013/04/excelpostgresqlodbc.html

ぼくの環境はWindows7(64bit) + Excel2010(32bit)

手順の概要

  • PostgreSQL用のODBCドライバのインストール
  • ODBCデータソースの設定
  • Excelで外部データソースに接続
  • ピボットテーブルのデータソースにRedshiftを使ってみる

PosggreSQL用のODBCドライバのインストール

http://www.postgresql.org/ftp/odbc/versions/msi/ からドライバをダウンロード。RedshiftはPostgreSQL8.xだけど、ひとまず最新の9.2のドライバでトライ。ダウンロードしたのはpsqlodbc_09_02_0200.zipというファイル。Excelが64bitの場合は末尾に64bitという文字列が入ったファイルを使うのが正解らしい。

ODBCデータソースの設定

32bit版ドライバの設定は若干めんどくさくて、

C:\Windows\SysWOW64\odbcad32.exe

というファイルを直接起動して実施する必要がある。ちなみに64bit版だと"コントロールパネル -> システムとセキュリティ -> 管理ツール"と進み、"データソース(ODBC)"から同じ手順を辿れるとのこと。

まずはRedshiftのエンドポイントを確認する必要があるが、見方としては下記のような感じ。
f:id:imai-factory:20131104104320p:plain

そして上記で確認したエンドポイントなどを下記のようにODBCドライバに設定する。
f:id:imai-factory:20131104110021p:plain

ODBCの設定は以上!
Redshiftに対してクライアントからIPリーチャブルであり、セキュリティグループが開放されている必要があるので注意。

Excelで外部データソースに接続

  • まずはテーブルをまるっと取り込んでみる。

f:id:imai-factory:20131104102910p:plain

  • データソースはODBCを選択

f:id:imai-factory:20131104102916p:plain

  • 先ほど作ったRedshiftの設定を選択

f:id:imai-factory:20131104103351p:plain

  • テーブル名を選択。あらかじめ下記のようなテーブルを作っておいた
mydb=# \d+ excel
                                 Table "public.excel"
 Column |           Type           | Modifiers | Storage  | Stats target | Description
--------+--------------------------+-----------+----------+--------------+-------------
 id     | integer                  | not null  | plain    |              |
 data   | character varying(65535) |           | extended |              |

f:id:imai-factory:20131104103359p:plain

  • あとはスプレッドシートのどこにテーブルを配置するかを決めれば下記のようにデータ読み込み完了!

f:id:imai-factory:20131104103404p:plain
f:id:imai-factory:20131104103409p:plain

ピボットテーブルのデータソースにRedshiftを使ってみる

  • 非常に簡単。下記のようにピボットテーブル作成時に、外部データソースを選択。

f:id:imai-factory:20131104104648p:plain

  • 先ほど作成した接続を選択

f:id:imai-factory:20131104104655p:plain

  • そしたらこんな感じに利用可能!

f:id:imai-factory:20131104104700p:plain

まとめ

以上のようにRedshiftはPostgreSQLドライバで簡単に接続/利用できる。
今回はあくまで接続テストのために数行しかデータが入っていないテーブルで試験していたので問題にならなかったけど、データが大量にあってクエリに時間がかかったり、レスポンスの転送量が増えてきたりするとなかなか利用がセンシティブになってくると思う。そのへんは、Access使ったりPower Pivot使ったほうがいいケースというのが多くなると思うんだけど、そのあたりはまた今度。