Tableau Desktopから色々なデータソースに繋いでみる(Amazon Redshift on VPC編)
目次
- はじめに
- 環境構築
- Amazon Redshift環境準備
- Amazon Redshiftクラスタ作成
- PostgreSQLクライアントツール接続確認
- 解析データの投入
- Tableau Desktop経由で接続確認
- まとめ
はじめに
- 高速なデータ分析とわかりやすいビジネスダッシュボードを実現するビジネスインテリジェンス(BI)ソフトウェア | タブローソフトウェア
- Amazon Redshift (ペタバイト級の データウェアハウス サービス) | アマゾン ウェブ サービス(AWS 日本語)
- Amazon Redshift
以下エントリではAWS環境内のMySQLにTableau Desktopからの接続を試みるエントリを詳解しましたが、その第2弾としてVPC環境に構築したRedshiftにTableau Desktopからの接続を試みる内容を当エントリで詳しく見て行きたいと思います。
環境構築
事前準備はMySQL編と同様のものを用います。今回の作業を行う前にMySQL編で環境を構築していた場合はそのままの環境が使えます。作成していない場合はAWSにログイン後、以下のリンクを押下してCloudFormationでVPC&各種ネットワーク環境を構築してください。
Tableau接続デモ用構成(VPC&各種ネットワーク構成)起動
Amazon Redshift環境準備
上記CloudFormationで作成したVPCのVPCID及びサブネット情報を控えておきます。
管理コンソールからRedshiftを選択、まずはサブネットグループを準備しましょう。[Subnet Group]を選択。
[Create Cluster Subnet Group]押下。
VPC及びサブネット情報を選択し、クラスタサブネットグループを作成します。
また、ポート:5439を有効にしているセキュリティグループも対応するVPCに紐付ける形で作成しておきます。
Amazon Redshiftクラスタ作成
[Launch Cluster]をクリック。
クラスタ作成に必要な情報を入力して行きます。まずは[クラスタ詳細]から。この辺りは適宜任意の値を設定しておいてください。設定値は後で接続に使うので控えておく事。
次いで[ノード設定]。こちらもどーんとでっかく行ってみたい所ですが検証用ですし、お財布にもどーんと響いてきてしまうのでここはSingleノードで。
[追加設定]の項では、サブネットグループやセキュリティグループの設定を行います。
- Choose VPC:作成を行いたいVPCを指定。
- Cluster Subnet Group:VPCを指定する事で、先程上記過程で作成したサブネットグループが指定出来る様になりますのでそれを選択。
- Publicly Accessible:Yesに設定。ここは重要。
- Availability Zone:作成したVPC内の任意のAZを指定。
- VPC Security Group:先程作成したRedshift用のセキュリティグループと、VPCのデフォルトセキュリティグループを併せて設定。
内容を確認後、[Launch Cluster]起動。
このサイズですと10分程起動に掛かるでしょうか。ステータスがavailableになった事を確認して接続確認作業に移ります。(接続確認には主に赤枠線内の情報を用います)
PostgreSQLクライアントツール接続確認
RedshiftはPostgreSQLのインタフェースを有してますので、接続確認もPostgreSQLが接続可能なツールで行います。詳しい設定内容は以下エントリをご参照ください。
- Amazon Redshiftを始めてみよう(入門ガイド翻訳&実践:前編) | Developers.IO
- Amazon Redshiftを始めてみよう(入門ガイド翻訳&実践:後編) | Developers.IO
繋がりました!
解析データの投入
投入するデータについては、以下エントリで用いたCSVファイルがそのまま使えますので流用したいと思います。S3バケットにファイルをアップロードし、Publicアクセス出来るようにしておきます。
Redshiftクラスタにログインし、以下のテーブル作成を実施。
DROP TABLE medals; CREATE TABLE medals ( athlete VARCHAR(100) not null distkey, age DECIMAL(2), country VARCHAR(100), year DECIMAL(4), ceremony_date DATE sortkey, sport VARCHAR(100), gold_medals DECIMAL(2), silver_medals DECIMAL(2), bronze_medals DECIMAL(2), total_medals DECIMAL(2) );
COPYコマンドを使い、Amazon S3バケット上にあるデータをロードします。
copy medals from 's3://cm-tableau-aws/OlympicAthletesMedals.csv' CREDENTIALS 'aws_access_key_id=XXXXXXXXXXXXXXXXXXXX;aws_secret_access_key=YYYYYYYYYYYYYYYYYYYYYYYYYYYYY' delimiter ',' dateformat 'YYYY/MM/DD';
上記例では1発目のロードに50秒近く掛かっていますが、これが2回目以降になると3秒程で済むように。
Tableau Desktop経由で接続確認
Tableau Desktopを起動、Amazon Redshiftを接続先に指定し、各種設定値に値を設定します。先のクライアントツールではJDBC URLを設定しましたが、こちらの場合はサーバ名にはEndpoint URLを設定するのでそこは注意。
ライブで接続します。
無事繋がりました!
データを元にこんな図も作ってみます。
まとめ
と言うわけで、RDS(MySQL)編に続きRedshift on VPC編でもTableau Desktopから繋いでみました。こちらのケース(Tableau to Redshift)は昨今良くありそうなケースでもあると思われるので、その辺りのイメージがこのエントリで掴めたのであれば幸いです。