Googleデータポータルを使ってDockerコンテナ上のMySQLデータを分析

IT技術

はじめに

過去の記事「簡単・便利!オープンソースのデータ分析ツール「Metabase」」にて、オープンソースで使用できるデータ分析ツール(BIツール)「Metabase」を紹介した。
これは、サーバを自前で構築する必要があり、人によっては大変である。(Metabaseのクラウド版も存在するが、2022/01/16執筆時点で有償版のみ。)

今回はクラウド版のBIツールで無料で使用できる「Googleデータポータル」を紹介する。

クラウド上のWEB画面を操作して、オンプレや他クラウドにあるデータベースの他、GoogleアナリティクスやBigQueryなどのサービスに接続し、簡単な操作でデータを集計・グラフ作成することができる。

本記事では、Oracle CloudのVMにDocker環境を構築し、MySQLコンテナを起動する。このMySQL内に分析対象データを用意して、Googleデータポータルから接続してデータ分析を行ってみる。

システム構成

設定方法

Dokerコンテナ「MySQL」

Docker環境の構築

本筋とずれるため本記事では割愛する。
興味のある方はOracle CloudのVM上にDockerをインストールしてみた。をご参照頂きたい。

MySQLコンテナ起動

ディレクトリ構成
<任意のディレクトリ>
L docker-compose.yml
L mysqldb
 L Dockerfile
 L my.cnf
 L data (MySQLデータ格納用ディレクトリ)
docker-compose.ymlの作成
version: '3'
services:
  mysqldb:
    image: test-mysqldb:vrfy
    build: ./mysqldb
    hostname: mysqldb
    networks:
      - dockernet
    volumes:
      - ./mysqldb/data:/var/lib/mysql
    restart: always
    ports:
      - "8098:3306"
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: TESTDB
      MYSQL_USER: testuser
      MYSQL_PASSWORD: testpassword
networks:
  dockernet:

※ポイント
外部(Googleデータポータル)からDBアクセスできるように設定する必要がある。
ports設定で8098ポートを外部に公開し、アクセスが来たらMySQLコンテナの3306ポートに転送するようにした。

Dockerfileの作成
FROM mysql:5
COPY my.cnf /etc/my.cnf
my.cnfの作成
[mysqld]
character-set-server = utf8
default-time-zone = "Asia/Tokyo"
[client]
default-character-set = utf8
MySQLコンテナ起動
[root@testserver test]# docker-compose up -d --build
Creating network "test_dockernet" with the default driver
Building mysqldb
Sending build context to Docker daemon  207.2MB
Step 1/2 : FROM mysql:5
 ---> c20987f18b13
Step 2/2 : COPY my.cnf /etc/my.cnf
 ---> Using cache
 ---> b24810b95acf
Successfully built b24810b95acf
Successfully tagged test-mysqldb:vrfy
Creating test_mysqldb_1 ... done
[root@testserver test]# 
[root@testserver test]# docker-compose ps
     Name                  Command             State                 Ports              
----------------------------------------------------------------------------------------
test_mysqldb_1   docker-entrypoint.sh mysqld   Up      0.0.0.0:8098->3306/tcp, 33060/tcp
[root@testserver test]# 

分析対象データ(MySQLテーブル)準備

MySQLコンテナに、以下のようなデータを作成した。
このデータを分析対象として、データ可視化レポートを作成してみる。

mysql> select * from testtable;
+-------------+-------+
| person_name | point |
+-------------+-------+
| A           |    10 |
| B           |    20 |
| C           |    30 |
| D           |    40 |
| E           |    50 |
+-------------+-------+
5 rows in set (0.00 sec)
mysql>

MySQLユーザの接続許可

docker-compose.ymlで指定したtestuserユーザを使って、GoogleデータポータルからDBアクセスするため、testuserの接続が許可されていることを確認する。以下のように「%(全てのアクセス元を許可)」となっていれば問題ない。

mysql> select user,host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| root          | %         |
| testuser      | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
5 rows in set (0.01 sec)
mysql>

【補足】
セキュリティ面が気になる方は、GoogleデータポータルのIPアドレスからのみ許可するよう設定変更頂ければ良いが、この後のOracle Cloud ネットワーク・セキュリティ・グループ設定でGoogleデータポータルのIPアドレスからのみ許可するよう設定するので、筆者はデフォルト設定「%(全てのアクセス元を許可)」のままにした。

Oracle Cloud

ロード・バランサ(LB)

ロード・バランサ(LB)を作成する。
※Googleデータポータルから接続するため、可視性タイプは「パブリック」を選択すること。

次にバックエンド・セットを作成する。
※ポート番号の指定は、外部に公開した8098ポートにすること。

次にリスナーを作成する。
※ポート番号の指定は、外部に公開した8098ポートにする。バックエンド・セットは、上記で作成したものを指定する。

ネットワーク・セキュリティ・グループ(NSG)

Googleデータポータルから8098ポートのアクセスを許可するよう、ネットワーク・セキュリティ・グループ(NSG)を作成する。

尚、Googleデータポータルの接続元IPアドレスは、データポータルのヘルプに公開されている。

作成したNSGをLBに適用する。

Googleデータポータル

Googleデータポータルにログインする。

データソース作成

画面左上の「作成→データソース」を選択する。

「MySQL」を選択する。

以下のように入力し、「認証」を選択する。

  • データソース名:「無題のデータソース」から任意の名称に変更(今回は「test_datasource」にした。)
  • ホスト名またはIP:LBのIPアドレス
  • ポート:8098 (外部公開したポート番号)
  • データベース:TESTDB (docker-compose.ymlで指定したMySQLデータベース名)
  • ユーザ名:testuser (docker-compose.ymlで指定したMySQLユーザ名)
  • パスワード:testpassword (docker-compose.ymlで指定したMySQLパスワード)

認証に成功すると、中央に「テーブル」と「カスタムクエリ」の選択肢が出てくる。

データ分析対象が単一テーブルの場合は「テーブル」から対象テーブル名を選択する。
複数テーブルを結合した結果をデータ分析する場合は「カスタムクエリ」を選択し、select文を入力する。

その後、画面右上の「接続」を選択する。

これでデータソースが作成できた。

レポート作成

画面左上の「作成→レポート」を選択する。

「データのレポートの追加」メニューが出てくるので、「マイデータソース→test_datasource(上記で作成したデータソース)→追加」を選択する。

まずは円グラフを作成してみる。
上部メニューの「グラフを追加→円グラフ」を選択する。

円グラフが作成されるが、デフォルトでは「Record Count (行数)」が集計されている。

ここをPoint列の「Sum (合計値)」に変更してみる。
するとグラフが変化し、Point列に入っている合計値に応じたグラフになった。

円グラフを縦棒グラフに変更してみる。
右メニュー上部のアイコンを選択してグラフ一覧を開き、「縦棒グラフ」を選択する。

縦棒グラフに変更された。

右メニューの「並び替え」を変更することで、名前順にすることもできる。

最後に任意のレポート名に変更する。

上部メニューの「表示」を選択し、編集モードを終了してレポート表示する。

これでレポートが作成できた。
データが更新されるとグラフは自動的に更新されるため、再作成は不要となる。

レポートのダウンロード

上部メニューの「共有→レポートをダウンロード」を選択し、PDF形式でファイル出力できる。

レポートを他ユーザと共有

上部メニュー「共有→他のユーザーを招待」を選択する。

共有したいユーザーのアドレスを入力し、権限(編集者/閲覧者)を選択して「送信」を選択する。

定期メール配信

上部メニュー「共有→メール配信をスケジュール」を選択する。

宛先アドレスと配信開始日時、周期を入力し、「スケジュール」を選択する。

タイトルとURLをコピーしました