📉

AWSでデータレイクを学ぶ その4(Metabaseでグラフ作成)

2023/06/03に公開

こんにちは、アキです!
前回は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