Tableau Desktopから色々なデータソースに繋いでみる(Amazon Redshift on VPC編)

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

目次

 

はじめに

以下エントリではAWS環境内のMySQLにTableau Desktopからの接続を試みるエントリを詳解しましたが、その第2弾としてVPC環境に構築したRedshiftにTableau Desktopからの接続を試みる内容を当エントリで詳しく見て行きたいと思います。

 

環境構築

redshift-cluster-on-vpc33

事前準備はMySQL編と同様のものを用います。今回の作業を行う前にMySQL編で環境を構築していた場合はそのままの環境が使えます。作成していない場合はAWSにログイン後、以下のリンクを押下してCloudFormationでVPC&各種ネットワーク環境を構築してください。

Tableau接続デモ用構成(VPC&各種ネットワーク構成)起動

 

Amazon Redshift環境準備

上記CloudFormationで作成したVPCのVPCID及びサブネット情報を控えておきます。

管理コンソールからRedshiftを選択、まずはサブネットグループを準備しましょう。[Subnet Group]を選択。

redshift-cluster-on-vpc01

[Create Cluster Subnet Group]押下。

redshift-cluster-on-vpc02

VPC及びサブネット情報を選択し、クラスタサブネットグループを作成します。

redshift-cluster-on-vpc03

また、ポート:5439を有効にしているセキュリティグループも対応するVPCに紐付ける形で作成しておきます。

redshift-cluster-on-vpc04

 

Amazon Redshiftクラスタ作成

[Launch Cluster]をクリック。

redshift-cluster-on-vpc05

クラスタ作成に必要な情報を入力して行きます。まずは[クラスタ詳細]から。この辺りは適宜任意の値を設定しておいてください。設定値は後で接続に使うので控えておく事。

redshift-cluster-on-vpc06

次いで[ノード設定]。こちらもどーんとでっかく行ってみたい所ですが検証用ですし、お財布にもどーんと響いてきてしまうのでここはSingleノードで。

redshift-cluster-on-vpc07

[追加設定]の項では、サブネットグループやセキュリティグループの設定を行います。

  • Choose VPC:作成を行いたいVPCを指定。
  • Cluster Subnet Group:VPCを指定する事で、先程上記過程で作成したサブネットグループが指定出来る様になりますのでそれを選択。
  • Publicly AccessibleYesに設定。ここは重要。
  • Availability Zone:作成したVPC内の任意のAZを指定。
  • VPC Security Group:先程作成したRedshift用のセキュリティグループと、VPCのデフォルトセキュリティグループを併せて設定。

redshift-cluster-on-vpc09

内容を確認後、[Launch Cluster]起動。

redshift-cluster-on-vpc10

このサイズですと10分程起動に掛かるでしょうか。ステータスがavailableになった事を確認して接続確認作業に移ります。(接続確認には主に赤枠線内の情報を用います)

redshift-cluster-on-vpc11

redshift-cluster-on-vpc12

 

PostgreSQLクライアントツール接続確認

RedshiftはPostgreSQLのインタフェースを有してますので、接続確認もPostgreSQLが接続可能なツールで行います。詳しい設定内容は以下エントリをご参照ください。

redshift-cluster-on-vpc21

繋がりました!

redshift-cluster-on-vpc22

 

解析データの投入

投入するデータについては、以下エントリで用いたCSVファイルがそのまま使えますので流用したいと思います。S3バケットにファイルをアップロードし、Publicアクセス出来るようにしておきます。

redshift-cluster-on-vpc23

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)
);

redshift-cluster-on-vpc30

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';

redshift-cluster-on-vpc25

上記例では1発目のロードに50秒近く掛かっていますが、これが2回目以降になると3秒程で済むように。

redshift-cluster-on-vpc26

 

Tableau Desktop経由で接続確認

Tableau Desktopを起動、Amazon Redshiftを接続先に指定し、各種設定値に値を設定します。先のクライアントツールではJDBC URLを設定しましたが、こちらの場合はサーバ名にはEndpoint URLを設定するのでそこは注意。

redshift-cluster-on-vpc27

ライブで接続します。

redshift-cluster-on-vpc28

無事繋がりました!

redshift-cluster-on-vpc29

データを元にこんな図も作ってみます。

redshift-cluster-on-vpc31

 

まとめ

と言うわけで、RDS(MySQL)編に続きRedshift on VPC編でもTableau Desktopから繋いでみました。こちらのケース(Tableau to Redshift)は昨今良くありそうなケースでもあると思われるので、その辺りのイメージがこのエントリで掴めたのであれば幸いです。