今回の課題
EC2にRedashを建てて、Snowflakeのデータを参照するまでにつまずいたりしたので、流れを記録する。
ちなみに、これまで下記の記事のようにRDSからスナップショットをparquet形式のファイルでS3にエクスポートし、S3にエクスポートしたファイルをSnowflakeにロードする。ということを行ってきた。
今回はそれらをRedashで可視化してみる。
進めた手順
1)EC2にRedashを立ち上げる
下記の手順でEC2にRedashを立ち上げた
1)-1. リージョン毎に用意されているAMIからインスタンスを立ち上げる
└ca-central-1のAMIを使用した。
└また、インスタンスタイプはt2.smallが推奨されていたので、そちらを使った。
※インスタンスタイプを無料枠のt2.microでインスタンスを立ち上げると、ブラウザからRedashにアクセスすることができなかったので注意。
└パブリックIPアドレスの自動割り当ては「有効化」を選択して、パブリックIPアドレスは割り当てておく。
1)-2. 立ち上げたインスタンスのセキュリティグループを設定する
立ち上げたインスタンスのセキュリティグループのインバウンドルールに、
ポート22(SSH), 80(HTTP), 443(HTTPS)を追加する。
これによって、インスタンスにSSH, HTTP, HTTPS接続でアクセスすることができるようになる。
1)-3. Elastic IPを設定する
EC2のパブリックIPアドレスは動的なIPアドレスなので、インスタンスを立ち上げるたびに変ってしまう。
そこで、Elastic IPアドレスをEC2インスタンスに割り当てることで、
EC2インスタンスのアドレスを固定にすることができる。
2)ブラウザからRedashにアクセスしてログインする
ブラウザのアドレスバーに、https://[ECのElastic IPアドレス]を入力して検索することで、Redashのログイン画面にアクセスすることができるので、必要項目を入力してRedashにログインする。
3)RedashとSnowflakeを接続する
ログインが完了したら、
RedashのトップページのConnect a Data Sourceをクリックして、
Dew Data Sourceに進み、Snowflakeを選択する。
すると下記のような画面に進むので必要な箇所を入力していく。
入力項目
SnowflakeとRedashを接続する際の、
入力項目が少し分かりずらかったため補足説明をメモ。
-
Name:接続設定につけたい名称を入力する。 -
Account:[Locator].[リージョン名].awsを入力する。
Locatorはworksheets上でshow organization accounts;を実行して、抽出されたデータのaccount_locatorカラムの値と同じ。 -
User:Snowflakeのユーザー名を入力する。 -
Password:Snowflakeのパスワードを入力する。 -
Warehouse:使用したいWarehouseを入力する。 -
Database:Redashに接続したいDatabaseを入力する。 -
Region:入力すると原因不明のエラーが発生するので空欄にする。
4)Redashでクエリを実行してみる
メニューバーのCreate > Queryから、
下記の画像のようなクエリの編集画面に飛ぶことができるので、ここでクエリを実行する。

また、クエリ編集画面の下の、+ New Visualizationをクリックすることで、
Visualization Editorに飛ぶことができ、データを可視化することができる。
SaveとPublishボタンを押して、保存することも忘れないようにする。

まとめ
以上で、Redashでデータを可視化するところまで実装することができた。
おまけ
気になった言葉や参考にした記事など。
AMI(Amazon Machine Image)とは
EC2インスタンスの起動に必要な情報を提供するテンプレート。
OSやボリュームの情報などを提供する。
今回の件では、Redashが用意しているAMI(OSやボリュームなどを提供するテンプレート)を使って、
EC2のインスタンスを構築した。というイメージ。
参考記事

