AWSでデータレイクを学ぶ その4(Metabaseでグラフ作成)
こんにちは、アキです!
前回はAthenaについてあれこれ学習しました。今回は、MetabaseというBIツールを使って、前回までのデータを見やすくしてみようと思います。
いやQuickSightは?
こちらの本(AWSではじめるデータレイク)にはもちろんQuickSightの説明が書かれています。私はこの記事を書く結構前にQuickSightのアカウントを作成していたのですが、久しぶりに確認するととっくに無料期間が終わっており、焦ってリソースを停止させてしまいました…。まあBIツールならほかにもあるだろうということでMetabaseを使ってみました。
なせMetabaseなのか
なぜ私がMetabaseを使ったのかについてですが、
- Dockerイメージがすぐに見つかったこと
- AWSリソースとの連携がしやすいこと
の2点でした。前回までのデータを可視化するためにはAWSのリソースとの連携が必須だったので、中でも簡単そうなMetabaseを選択しました。
DockerでMetabaseコンテナを立ち上げる
今回私はDocker Desktopを使ってMetabase用の環境を構築しました。もちろんDockerを使わなくても環境構築は行えます。
私が行ったのは、
- Metabaseを利用してAthenaと連携すること
- Metabaseで作成したグラフをhtmlに埋め込む
の2点です。Metabaseを利用するのみであればnginxの設定は不要です。
構成は下記のようになりました。
project
|
├ metabase-data/
| └ metabase.db/ ←このディレクトリ以降はMetabaseを使っていると自動で作成されます
| ├ metabase.db.mv.db
| └ metabase.db.trace.db
|
├ nginx/
| ├ html/
| | └ index.html
| └ nginx.conf
|
└ docker-compose.yml
metabase.dbディレクトリはMetabaseの設定やデータベースを保持するデータが格納されるもので、これはMetabaseを起動したときに作成されます。
また、nginxはリバースプロキシの役割を持ちます。作成したグラフのリンクをhtmlファイルに埋め込む際に、そのままリンクを埋め込むだけではCSP違反で表示させることができませんでした。また、Metabase用のコンテナではCSPの設定を直接編集できなさそうだったので、nginx側でframe-ancestorsを追加し、今回はlocalhostからのアクセスを許可しました。もしかしたらもっといい方法があるかもしれませんが、とりあえず動いたので今回はこれで良しとしています。
Metabase×AWS Athena
それでは早速起動しましょう。プロジェクトのルートディレクトリで、
docker-compose up -d
をし、http://localhost:3000/ にアクセスします。
初期画面から設定を行うことができます。
アカウントの登録等、諸々完了したら早速Athenaと連携しましょう。
まずTOP画面の右上の設定→管理者設定へ移動します。
画面上部のタブからデータベースを選択し、データベース追加を行います。
この画面に必要な情報を入力し、設定を行います。
ここでAWS IAMのAccess keyとSecret keyが必要になるので、手元にない場合は再取得しましょう。
設定がうまくできるとホーム画面のサイドバーメニューのデータの閲覧からテーブルが追加されていることが分かります。
グラフの作成
前回パーティショニングしたテーブルからグラフを作成してみましょう。
東京都の人口推移をグラフにしてみましょう。
まずはフィルターからPrefecture Name
を東京都とし、
次に画面下部の歯車マークを押して、X軸をWestern Calendar Year
、Y軸をTotal Population
にします。
満足のいくグラフができたら、画面右上から保存しましょう。
リンクを公開
ここまででグラフの作成はできたと思います。最後に、このグラフを公開してみましょう。今回はhtmlに埋め込む方法を試してみます。
画面右上から管理者設定を開きます。
サイドバーメニューから公開に移動します。デフォルトでは無効になっているので、有効にしましょう。
次に保存したグラフへ移動し、画面の右下にある共有を選択します。
共有を有効にするとリンクが作成されます。
nginx/htmlにあるindex.htmlに埋め込み、http://localhost:8080/ へ遷移すると作成したグラフが表示されています。
以上
今回利用したMetabaseはAthenaとの連携が非常に簡単で、非常に便利だなと感じました。
他にも多くのサービスと連携させることができるので、そのあたりもメリットに感じました。
Discussion