BIツールMetabaseの環境構築してみた

BIツールMetabaseの環境構築してみた

システム部の大類と申します。
今回は、オープンソースの BIツールのMetabaseの環境構築を試してみたことを記事にしたいと思います。

なぜMetabaseを試したのか

弊社はサンプルパネル提供会社で、アンケート配信によって得られた調査結果を、GMOリサーチが管理しお客様に提供する場合があります。(調査結果の所有についてはサービス毎に異なります)
※パネルとは、モニターの集合体。モニターとは、アンケート協力の承諾を得ている会員一人ひとりのこと。

弊社のオンラインリサーチの中には、お客様の要望に応えるオーダーメイドアンケート「フルサービス」があり、当サービスではデータ納品に加えTableauというBIツールを活用し、得られたデータを可視化、分析、およびダッシュボード作成に最適化されたデータ形式で調査結果を納品するサービスもオプションとして提供しております。
※詳しくはこちら

ですが今回は、DIY(セルフ型)アンケートのお客様含め、比較的専門的な知識がない方でも、オープンソースの BIツールでこのデータ結果の可視化を行うことができないのだろうか?という興味からMetabaseの環境構築を試してみることにしました。

オープンソースのBIツールには、Apache SupersetKibanaなどもあるようですが、比較的ユーザーフレンドリーな、Metabaseで試すことにしました。
※ Metabaseのライセンスは、GNU Affero General Public License V3 (AGPL)です。

検証のポイント

検証のポイントとしては、①環境構築、DB接続の容易さ②各種グラフの設定(分析)の容易さ③見やすいダッシュボードの作成が可能かという点に着目したいと思います。

検証方法

環境の概要と構築方法

Metabaseは、Dockerのイメージがあるので、簡易な環境構築の方法として、Dockerを使うことにしました。また、Metabaseで検証するためには、分析の対象となるデータを保存するDBやデータの分析環境も必要と考え、1.Metabaseのコンテナ2.mysqlのコンテナ3.分析用のpythonのコンテナの3種類を準備することにしました。

構築時のフォルダ構成は、以下です。

ここに、以下のファイルを設置します。

C:\metabase\docker-compose.yml

C:\metabase\db\my.cnf

C:\metabase\py3\Dockerfile

※一部使わないライブラリも入っています。

これで準備が整ったので、Dockerのコンテナを作成し、立ち上げます。
コマンドプロンプトで以下、実行します。

C:\metabase>docker-compose up -d

サンプルデータの準備とDBへのインポート

以下のようなアンケートを実施したとします。

Q1  あなたの年齢を教えて下さい。
Q2  あなたの性別を教えて下さい。
Q3  あなたは、旅行先で芸術的なものにふれることををどのくらい重視しますか。
Q4  あなたは、旅行先でおいしい食事ができることをどのくらい重視しますか。
Q5  あなたは、旅行先でショッピングをすることをどのくらい重視していますか。
Q6  あなたは、旅行先ですばらしい自然にふれることをどのくらい重視していますか。
Q7  あなたは、旅行先ですばらしい文化財にふれることをどのくらい重視していますか。
Q8  あなたは、旅行先で異文化に触れることをどのくらい重視していますか。
Q9  あなたが旅行先でもっとも重視するポイントは何ですか。
Q10 あなたは、韓国にどのくらい行きたいですか。
Q11 あなたは、台湾にどのくらい行きたいですか。
Q12 あなたは、中国にどのくらい行きたいですか。
Q13 あなたは、オーストラリアにどのくらい行きたいですか。
Q14 あなたは、アメリカにどのくらい行きたいですか。
Q15 あなたは、イギリスにどのくらい行きたいですか。
Q16 あなたは、フランスにどのくらい行きたいですか。
Q17 あなたは、イタリアにどのくらい行きたいですか。
Q18 あなたは、インドにどのくらい行きたいですか。
Q19 あなたが一番行きたい旅行先はどこですか。
※ 上記のQ1からQ8及びQ10からQ18については、1から10までの10段階で回答してもらったと仮定します。

この回答の模擬データを、ExcelのNORM.INV関数とRAND関数を使用して、一定の偏り、相関関係がでるように作成します。作成したファイルを、今回は、sample.csvという名前で保存しました。

準備したsample.csvはMySQL Workbenchを使用して、インポートします。
まず、Workbenchを立ち上げて、新しい接続を設定します。ここに記載するIDやパスワードは、docker-compose.ymlのファイルに記載された内容になります。

接続が完了したら、MySQL Workbenchの”Table Data Import Wizard”を使用して、先ほど準備したsample.csvファイルを取り込みます。上記Wizardでは、取込先として既存のテーブル(Use existing table)か新規テーブル(Create new table)か聞かれますが、後者で取り込みます。

これでサンプルデータをDBで使う準備ができました。

相関分析

Metabaseでデータを可視化するとしても、闇雲にグラフ化するより、関係のあるデータをグラフ化した方が分かりやすいでしょう。そこで、関係性のあるデータを、Pythonを使って分析してみます。作成したpythonのコンテナのjupyter notebookに接続してみます。

ブラウザに
http://localhost:8888
と入力して接続します。

最初の画面の中から、”python3”を選択し、以下のコードを記述します。

これを実行すると、以下のようなグラフが表示されます。

この中で、1に近いほど、相関関係があるということになるので、”芸術とイタリア””芸術とフランス”や”ショッピングと台湾””食事と韓国”との関係などの相関性が高いことがわかります。
(※ これは、意図的にそのように作ったデータです。)

Metabaseの初期設定

Metabaseにブラウザを使って接続します。URLは、http://localhost:3000です。そうすると、「Metabaseへようこそ」という画面が表示されます。画面に従って、進んでいくとDBの接続設定のページが表示されます。

ここには、以下のとおり、Dockerのymlファイルに記載したIDとパスワードを登録していきます。ここで注意が必要なのは、接続先のHOSTがlocalhostや”127.0.0.1”ではなく、MySQLのコンテナ名を記載しないといけないところです。

分析

BIツールなので、様々な分析ができると思いますが、2.検証のポイントで設定した「②各種グラフの設定(分析)の容易さ」と「③見やすいダッシュボードの作成が可能か」という点に絞って見ていきたいと思います。

グラフとしては、円グラフ、棒グラフ、散布図の作成をみていきます。
※作成する上で使用した「質問」は、各図に適した質問を選んでいます。

円グラフは、以下のように作成できます。画面右上の「+New」のボタンをクリックして「質問」を選択します。

ここで、MySQLに作成してあるsampleのテーブルを指定します。

次に、「見たいメトリクス」と「集約するためのキー列を選ぶ」というところを選択していきます。ここは、よくあるBIツールのメジャーとディメンションというものと同じだと思います。更に、ソートを設定します。

今回は、以下のように設定してみます。

次にビジュアライズ、ビジュアライゼーションのボタンをクリックして、一定の設定をしますと、以下のように表示されます。

次に、棒グラフを作成してみます。
ここでは、年齢別に、Q9の旅行で最も重視するポイントを、25歳から40歳まででフィルタした棒グラフを作成してみました。

最後に、Q3. 旅行で”芸術”を重視する程度と、Q16.フランスに行きたい程度の相関関係を示す散布図を作成してみます。これをみると、旅行の際、”芸術的なものに触れたい”と思う人が”フランスに行きたい”という程度が正の関係であることが、一目で分かるようになります(※ 上述しておりますとおり、これは意図的にこのような傾向がでるように乱数を用いて作成した模擬データに基づく分析です)。

最後に、これらを整理したダッシュボードを作成してみました。

結論

いかがだったでしょうか。私なりに、2.検証のポイントで設定したポイントに対して、評価をするとしたら以下と考えます。

①環境構築、DB接続の容易さ
設定画面も日本語にも対応しており、非常に簡単に構築でき、かつ、DBへの接続も容易でした。

②各種グラフの設定(分析)の容易さ
Tableauなどの有償のものと比較すれば、一部劣る面もあるでしょうが、それでも実用に足るレベルのものだと考えました。

③見やすいダッシュボードの作成が可能か
各種グラフ設定と同じです。表示やデザインなどにこだわりがなければ、この機能でも一定実用になるレベルと考えました。

今後もまた新しいツールがでてくると思います。引き続き、調査、検証を続けていきたいと思っています。

前の記事
«
次の記事
»

技術カテゴリの最新記事