業務システム例 : セルフサービスダッシュボード環境の作り方
- 1 概要
- 2 Metabase について
- 2.1 使い方などの関連ドキュメント
- 3 Metabase等のBIツール向けサーバー構成について
- 4 Metabaseを動かすための仮想マシンの用意
- 5 作業環境
- 6 Docker Engine および Docker Compose 環境のセットアップ
- 7 Metabase 環境の構築
- 7.1 Ubuntu環境を最新版にアップデート
- 7.2 JDKのセットアップ
- 7.2.1 Open JDK 17のインストール
- 7.2.2 JAVA_HOMEの設定
- 7.3 Javaを使って手軽にMetabase 環境を使う方法
- 8 ハンズオン課題(1)
- 9 データベース追加時の登録方法
- 10 分析用データを格納しておくデータベース用仮想マシンの作成
- 10.1 仮想マシンの用意
- 10.2 PostgreSQLのインストールと起動
- 10.3 データベース操作ユーザーの作成
- 10.4 データベースの作成
- 10.5 外部からの接続許可の設定
- 10.5.1 postgresql.conf の編集
- 10.5.2 pg_hba.conf の編集
- 10.6 PostgreSQLを再起動 & 自動起動設定
- 10.7 サンプルデータベースのインポート
- 10.7.1 サンプルデータベースの取得URLをコピー
- 10.7.2 サンプルデータベースのダウンロード
- 10.7.3 PostgreSQLのデータベースにインポート
- 11 ハンズオン課題(2)
- 12 ハンズオン課題(3)
- 13 ビジネス要素
概要
CRM / SFA / ERP / HRM などの各種業務システムに対する定番のビジネスとして、BI(Business Inteligence)による可視化(見える化)がある。特にセルフサービスダッシュボードと呼ばれる、エンドユーザーが自分自身で可視化したチャート(グラフ)を一か所にまとめたダッシュボードの提供は、いつの時代にも生じる定番になる。ここでは、BIツールの「Metabase」を用いて「Metabase」にてデータを可視化するダッシュボード環境の作り方を紹介する。
こうしたBIツールの環境をセットアップすることで、データサイエンティストが活躍することができる。
Metabase について
オープンソースソフトウェアライセンスが適用されているBI(Business Inteligence)ツールの1つ。もともとは、Uberの共同創業者Garrett Campが2013年に設立したスタートアップスタジオ、Expaが開発した内製ツールだった。様々なデータベースを接続し、データを可視化できることが特長で、分析に必要な情報やキーワードをMetabase上で問い合わせることで、データを可視化することができる。
https://www.youtube.com/channel/UCvg53nhM-xPUiFGqDJDhjaw << 動画
オープンソースソフトウェア版は無料で使える。
その他に有料でSaaS型のクラウドサービスとして使う契約と、オンプレミス環境やパブリッククラウドのIaaSで運用するための有償契約も存在する。>> https://www.metabase.com/pricing/
使い方などの関連ドキュメント
https://www.metabase.com/docs/latest/ << 公式ドキュメント
英語で書かれた公式ドキュメントを読んだ方が最新かつ正確だが、補助資料としてユーザーが作成したブログ等のコンテンツも参考になる。
公式ドキュメント以外は、古い情報があるので、鵜呑みにせず、記事の内容を自分で確認して動かすことが望ましい。
Metabase等のBIツール向けサーバー構成について
AWS を使ったシンプルな構成と、VirtualBoxやHyper-V等の仮想マシン向けハイパーバイザーを使った構成を述べる。
AWSで構築する場合
仮想サーバーを2台使うか、DB(データベース)用の仮想サーバーを、AWS RDS に置き換えて使う構成がある。負荷が小さいうちは仮想サーバーで良いが、大人数で使い出す場合は、Kubernetes を使って運用した方が良い。
データベースの量が少ない場合は、上記の図のように、DB用仮想サーバー内に複数の分析用データベースを作っても良いが、Metabase等のBIツールの本領発揮には、AWSをフル活用する場合は、Metabaseに備わっている、Amazon RedShiftととの連携機能を使い、AWS以外を含めた様々なSaaS上のデータをMetabaseで分析・可視化することが、ベストプラクティス。
ETL(ELTとも)は、「Extract (抽出)」「Transform (変換)」「Load (書き出し)」の頭文字をつなげた略語で、データの倉庫となるデータウェアハウス(DWH)に、様々なサービスからデータを集め、フォーマットを調整し、時には加工し、DWHにデータを格納することを指す。
パソコン上のVirtualBox上で構築する場合
AWS部分が、パソコンとVirtualBox(ハイパーバイザー)に置き換わったくらいで、仮想サーバーを使うだけであれば、似た構成と考えることができる。パソコンとVirtualBox(ハイパーバイザー)の組み合わせを、プライベートクラウド上のベアメタルサーバーと、Hyper-V等のハイパーバイザーに置き換える場合は、プライベートクラウドでの運用になる。
データベースの量が少ない場合は、上記の図のように、DB用仮想サーバー内に複数の分析用データベースを作っても良いが、Metabase等のBIツールの本領発揮には、Metabaseを実行する仮想サーバー(この資料はでは、Docker Composeを使ってMetabase を起動)に、ETL(ELT)経由で、様々な業務システムをつなぐ方が良い。
オープンソースソフトウェアで、DWH(データウェアハウス)で、仮想マシンとして運用が可能かつMetabaseとの接続機能があるものでは、「 」がある。
Metabaseを動かすための仮想マシンの用意
例として、仮想環境としてVirtualBoxを使っていますが、他の仮想環境でも構いません。
< 以下は、VirtualBoxを使った場合の例 >
仮想マシンのスペック例
OS:Ubutnu Server 22.04 もしくは、20.04
仮想CPU割り当て数 : 1
仮想メモリ割り当て:2048MB(2GB)以上
仮想ディスク:40GB以上
ネットワーク設定:NAT + ホストオンリーアダプタの構成。ホストオンリーアダプタには、固定IPを割り当てること。
デスクトップ環境:なし
SSH接続:必須 ( ユーザー名 + パスワードでもOK )
仮想マシンの設定例
ホストオンリーアダプタの固定IP例:192.168.125.150
Your server’s name (ホスト名):ubuntu1bitest
ユーザー名 : vboxuser
パスワード:任意のもの
作業環境
仮想マシンを実行しているパソコンから、ターミナルアプリ(Windowsなら「Tera Term」, Macなら「Terminal」)を使い仮想マシンの固定IPにSSH接続し、作業を行いましょう。
Docker Engine および Docker Compose 環境のセットアップ
既に、Docker Engine および Docker Compose をインストール済みの仮想マシンを使っている場合は、この作業は飛ばしてください。Docker を使えない場合は、Podman でも良いです。
Docker Engine および Docker Composeのインストール
次のコマンドを実行します。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Dockerグループを作成します。既に作成済みの場合もあります。
sudo groupadd docker
sudoなしで実行できるように、作業用ユーザーをDockerグループに所属させます。
sudo usermod -aG docker $USER
再起動します。
Metabase 環境の構築
Ubuntu環境を最新版にアップデート
Metabaseの環境構築の前に、仮想マシンのOSに最新のアップデートを適用します。
JDKのセットアップ
Metabaseを手軽に使う手段として、Docker以外にJavaを使う手段があります。そこで、Javaをインストールしましょう。
Open JDK 17のインストール
以下のコマンドを実行。
動作確認
実行結果
JAVA_HOMEの設定
javaがどこに格納されているか確認
実行結果
パスを通して、JAVA_HOMEを設定する
末尾に追記
反映
Javaを使って手軽にMetabase 環境を使う方法
作業用ディレクトリを作成する。
Metabaseは、jar ファイルとして起動できるので、起動用ファイルをダウンロードする。バージョン 0.46.3 は、2023年5月時点の最新版。
Metabaseを起動する。Javaを使って起動する場合は、組み込みの「H2」データベースが使われる。
Webブラウザで、http://仮想マシンのIPアドレス:3000(例 http://192.168.125.150:3000 )にアクセス。
「開始しましょう」をクリックする。
言語は日本語であれば、「Japanese」を選び、「次へ」をクリックする。
最初のユーザーとなる、管理者情報を入力する。「名」と「氏」は、必ず英数字とすること。日本語をにした場合は、データベースでエラーが生じることになる。また、メール(例 admin@example.com)はログインに使用します。また「新しいパスワード」と「パスワードを確認」には、英数字による任意の文字列を入力(例 zxcvfr45meta )します。「次へ」をクリック。
使用するデータベースシステムを選択。すぐに触れるようにサンプルデータベースを使うので、「あとでデータを追加する」をクリック。
「Metabaseが匿名の情報収集をすることに同意する」のトグルボタンをオフにして、「フィニッシュ」をクリックする。
「Metabaseを使い始める」をクリック。
初回は自動でログインするので、H2データベースを用いたサンプルが表示される。
終了する場合は、ターミナルアプリ上で、Ctrl + c キーを押すことでMetabaseが終了します。
ハンズオン課題(1)
Metabase安定稼働のためにMetabaseの設定等を管理するデータベースを永続化してみよう
Metabaseは、起動時にデータベースを指定していない場合は「H2」データベースを使用します。「H2」データベースはデフォルトでは、インメモリのためアプリ(Metabase)終了時にデータベースからデータ消えます。自動で消えることで、データベースが必要なアプリケーションにおいて、手軽にデータベースを試せる利点でもあります。
環境構築でセットアップしておきながらまだ使っていない、「Docker Compose」を使って、Metabaseで使用するデータベースとして「PostgreSQL」を追加するとともに、「PostgreSQL」を永続化してみましょう。
回答のマニフェストファイル(Docker ComposeのYMLファイル)によるMetabaseの起動例
データベース追加時の登録方法
Metabaseの画面右上の歯車のアイコンをクリックし、「管理者設定」をクリックする。
「Metabase 管理者」画面が表示される。「データベースを追加する」をクリック。もしくは「データベース」>>「データベースを追加」の順にクリック。
「データベースタイプ」から、分析のためにMetabaseに接続するデータベースを選ぶことができる。
下記の例では、PostgreSQLのデータベースに接続する場合で、各項目にPostgreSQL内のデータベースに接続するための設定値の例を入力したものである。入力後、「保存」をクリックする。
各項目の値は、各自によって異なることがあるので注意されたい。
例として、Metabaseの設定情報を管理するデータベースとしてPostgreSQL内のデータベースに接続してみた。
「あなたのデータベースを見ています。」というメッセージが表示される。「X」を押して閉じる。
「データベース」としてMetabase管理画面に登録されました。データベースの「名前(下図では、MyPostgreSQL)」をクリックすることで、設定を編集することができる。右上の「管理画面から離れる」をクリック。
Metabaseのトップ画面では、「データの閲覧」から、接続済みのデータベースを選ぶことで、データベースの各テーブルにアクセスすることができる。
「MyPostgreSQL」をクリックした場合は、「MyPostgreSQL」の名称で接続設定したPostgreSQL内の「Metabase」というデータベースにアクセスし、各テーブルが表示される。テーブル名をクリックすることで、テーブルの中身についてアクセスすることができる。
例として、Metabaseの設定情報を管理するデータベースとしてPostgreSQL内のデータベースに接続してみたところ、Metabaseの情報を管理する各テーブルにアクセスすることができた。
分析用データを格納しておくデータベース用仮想マシンの作成
仮想マシンの用意
例として、仮想環境としてVirtualBoxを使っていますが、他の仮想環境でも構いません。
< 以下は、VirtualBoxを使った場合の例 >
仮想マシンのスペック例
OS:Ubutnu Server 22.04 もしくは、20.04
仮想CPU割り当て数 : 1
仮想メモリ割り当て:2048MB(2GB)以上
仮想ディスク:40GB以上
ネットワーク設定:NAT + ホストオンリーアダプタの構成。ホストオンリーアダプタには、固定IPを割り当てること。
デスクトップ環境:なし
SSH接続:必須 ( ユーザー名 + パスワードでもOK )
仮想マシンの設定例
ホストオンリーアダプタの固定IP例:192.168.125.170
Your server’s name (ホスト名):ubunt1pgdb
ユーザー名 : vboxuser
パスワード:任意のもの
PostgreSQLのインストールと起動
用意したPostgreSQL用の仮想マシンにSSH接続を行い、以下のコマンドを実行する。
PostgreSQLの起動
postgresユーザーに切り替え
PostgreSQLに接続する。
実行結果
データベース操作ユーザーの作成
以下のコマンドを実行して、この後に作成するデータベースを操作するユーザーを作成する。
実行結果
データベースの作成
作成した「testdbuser」をオーナーとしたデータベースを作成する。
実行結果
作業終了なので、以下のコマンドを実行する。
postgres ユーザーから離脱するため、以下のコマンドを実行する。
外部からの接続許可の設定
postgresql.conf の編集
以下のコマンドを実行する。
編集前
編集後
pg_hba.conf の編集
以下のコマンドを実行する。
編集前
編集後
「0.0.0.0/0」とすることで、すべてのネットワークからパスワード接続認証を行うように指定。
PostgreSQLを再起動 & 自動起動設定
以下のコマンドを実行する。
サンプルデータベースのインポート
サンプルデータベースの取得URLをコピー
PostgreSQLのトレーニングコンテンツから、DVDレンタルショップのデータベースサンプルを取得する。
にアクセスし、「Download DVD Rental Sample Database」を右クリック。「dvdrental.zip」をダウンロードURLをコピーする。
サンプルデータベースのダウンロード
ターミナルアプリからデータベース用仮想マシンにSSH接続し、作業用ディレクトリを作成。
サンプルデータベースをダウンロードする。
「dvdrental.zip」が、zipファイルなので、解凍ツールをインストール。
「dvdrental.zip」を解凍する。「dvdrental.tar」が出てくる。これを、PostgreSQLのデータベースにインポートする。
PostgreSQLのデータベースにインポート
取り込むSQLファイルで指定している所有者(例 postgres)無視する「–no-ower」オプション、新しい所有者を指定出来る「–role」オプションを使い、testdbuser を新しい所有者に指定して、インポートする。
エラー等が表示されなければ、インポート完了。Metabaseにデータベースを接続し、取り込んだサンプルデータにアクセスしてみよう。
ハンズオン課題(2)
Metabase環境を起動し、上記で作成した「データベース用仮想マシン」内のPostgerSQLのデータベースに接続してみよう。
ハンズオン課題(3)
Docker Compose などのコンテナ技術を使わずに、Java環境でMetabaseを起動する際に、PostgreSQLを接続する方法でMetabaseを起動してみよう。Docker Composeで実施したことをコンテナなしで行う。自分でPostgreSQLのインストールができれば、シェルスクリプトをがんばれば実現できるお題。
Metabase公式ドキュメントの「 」の「Production installation」を確認すること。
ビジネス要素
もし、起業等に取り組むのであれば、Metabase については次のようなビジネスが考えられます。
主な顧客の種別は、企業や自治体、教育機関になる。
商習慣や政府系の指示など、Metabaseが提供しているオフィシャルなSaaSを利用できない企業や自治体、教育機関向けのSaaS提供。具体的には、日本国内のデータセンターを使うもの。
Metabase、その他BIツールにおいて、ダッシュボードの作成代行、作成支援
Metabase、その他BIツールにおいて、データクレンジング
データの誤記や未入力、重複等の不備を修正し、データ分析・データ予測を行えるようにすること。
DWH(データの倉庫、データウェアハウス)の提供
ETL(ELT)ツールの提供
業務において、BIツールを用いたデータ分析予測に関するコンサルティングなど