JARで動く無料のBIツールMetabase初心者ガイド

## はじめに

Metabaseは、データ分析と可視化を簡単に行えるオープンソースのBIツールです。直感的なインターフェースと強力な機能を備え、技術者でなくてもデータから洞察を得ることができます。

## 1. Metabaseの概要

Metabaseは、データベースに接続し、クエリを実行し、結果をグラフやダッシュボードとして表示するツールです。主な特徴は以下の通りです：

- 無料で使用可能
- 多様なデータベースに対応
- ドラッグ＆ドロップでの簡単な操作
- SQLクエリの実行も可能

## 2. インストール方法

Metabaseは、Javaアプリケーションとして実行するか、Dockerを使用してインストールできます。

### Javaを使用する場合：

```bash
wget https://downloads.metabase.com/v0.44.6/metabase.jar
java -jar metabase.jar
```

### Dockerを使用する場合：

```bash
docker run -d -p 3000:3000 --name metabase metabase/metabase
```

## 3. 初期設定

インストール後、ブラウザで`http://localhost:3000`にアクセスし、以下の手順で初期設定を行います：

1. 管理者アカウントの作成
2. データベースの接続設定
3. データの収集方法の選択

## 4. データベース接続

Metabaseは多くのデータベースに対応しています。接続設定の例（MySQLの場合）：

```yaml
ホスト名: localhost
ポート: 3306
データベース名: mydb
ユーザー名: root
パスワード: password
```

## 5. クエリの作成

Metabaseでは、GUIを使用したクエリビルダーとSQLエディタの2つの方法でクエリを作成できます。

### クエリビルダーの例：

1. 「新しい質問」をクリック
2. データソースを選択
3. フィールドをドラッグ＆ドロップ
4. フィルターや集計を設定

### SQLエディタの例：

```sql
SELECT 
  date_trunc('month', created_at) AS month,
  COUNT(*) AS total_orders
FROM orders
GROUP BY 1
ORDER BY 1
```

## 6. グラフの作成

クエリ結果を基に、様々なグラフを作成できます。

1. 「可視化」タブを選択
2. グラフタイプを選択（棒グラフ、折れ線グラフなど）
3. X軸とY軸を設定
4. 色分けやソートを調整

## 7. ダッシュボードの作成

複数のグラフやクエリ結果をまとめて表示するダッシュボードを作成できます。

1. 「新しいダッシュボード」をクリック
2. タイトルを入力
3. 「カードを追加」で既存のグラフを追加
4. ドラッグ＆ドロップでレイアウトを調整

## 8. ユーザー管理

Metabaseでは、ユーザーごとに権限を設定できます。

1. 管理画面から「ユーザー」を選択
2. 「ユーザーを追加」をクリック
3. メールアドレスと名前を入力
4. グループを選択（管理者、一般ユーザーなど）

## 9. データモデルの設定

データの関連性や型を定義し、より使いやすくできます。

1. 管理画面から「データモデル」を選択
2. テーブルを選択
3. フィールドの型や関連を設定
4. 表示名や説明を追加

## 10. スケジュール設定

定期的にクエリを実行し、結果をメールで送信できます。

1. クエリの詳細画面で「スケジュール」をクリック
2. 実行頻度を設定（毎日、毎週など）
3. 送信先メールアドレスを入力

## 11. APIの利用

MetabaseのAPIを使用して、外部からデータにアクセスできます。

```python
import requests

url = "http://localhost:3000/api/card/1/query"
headers = {"X-Metabase-Session": "your-session-token"}

response = requests.post(url, headers=headers)
data = response.json()
```

## 12. カスタムフィールドの作成

既存のフィールドを組み合わせて、新しいフィールドを作成できます。

1. クエリビルダーで「カスタムカラム」をクリック
2. 数式を入力（例：`[価格] * [数量]`）
3. 名前を付けて保存

## 13. パラメータの利用

ユーザーが入力した値に基づいてクエリを動的に変更できます。

1. SQLエディタで変数を定義（例：`{{date}}`）
2. 「変数の追加」をクリック
3. 変数の型と名前を設定

## 14. エンベッド機能

Metabaseのグラフやダッシュボードを外部のウェブサイトに埋め込めます。

1. グラフの詳細画面で「共有」をクリック
2. 「公開リンク」を有効化
3. 生成されたiframeコードをコピー

## 15. トラブルシューティング

よくある問題と解決方法：

- データベース接続エラー：ファイアウォールの設定を確認
- パフォーマンス問題：インデックスの追加やクエリの最適化を検討
- メモリ不足：Javaのヒープサイズを増やす（`-Xmx4g`オプションを追加）

## 16. Metabaseの実践的活用例：eコマース企業の売上分析

ここでは、架空のeコマース企業「TechGadgets」を例に、Metabaseを使用した売上分析の実践的なシナリオを紹介します。

### 背景

TechGadgetsは、最新のテクノロジーガジェットを販売するオンラインショップです。経営陣は、製品カテゴリ別の売上傾向を把握し、マーケティング戦略を最適化したいと考えています。

### データ構造

TechGadgetsのデータベースには以下のテーブルがあります：

1. `orders`: 注文情報
2. `products`: 製品情報
3. `categories`: 製品カテゴリ情報

### サンプルデータ

以下に、各テーブルのサンプルデータを示します。

#### orders テーブル

| order_id | customer_id | product_id | order_date | quantity | total_amount |
|----------|-------------|------------|------------|----------|--------------|
| 1        | 101         | 1          | 2024-08-01 | 2        | 599.98       |
| 2        | 102         | 3          | 2024-08-02 | 1        | 129.99       |
| 3        | 103         | 2          | 2024-08-03 | 3        | 747.00       |

#### products テーブル

| id | product_name      | category_id | price  |
|----|-------------------|-------------|--------|
| 1  | スマートウォッチX | 1           | 299.99 |
| 2  | ワイヤレスイヤホンY | 2           | 249.00 |
| 3  | ポータブル充電器Z | 3           | 129.99 |

#### categories テーブル

| id | category_name |
|----|---------------|
| 1  | ウェアラブル  |
| 2  | オーディオ    |
| 3  | アクセサリー  |

### 分析目標

1. 月別・カテゴリ別の売上推移を可視化する
2. 最も売れている製品トップ10を特定する
3. 顧客の購買パターンを分析する

### Metabaseでの実装

#### 1. 月別・カテゴリ別の売上推移

SQLクエリ:

```sql
SELECT 
  DATE_TRUNC('month', o.order_date) AS month,
  c.category_name,
  SUM(o.total_amount) AS total_sales
FROM orders o
JOIN products p ON o.product_id = p.id
JOIN categories c ON p.category_id = c.id
GROUP BY 1, 2
ORDER BY 1, 2
```

このクエリをMetabaseで実行し、結果を折れ線グラフで表示します。

#### 2. 売上トップ10製品

SQLクエリ:

```sql
SELECT 
  p.product_name,
  SUM(o.quantity) AS total_quantity,
  SUM(o.total_amount) AS total_sales
FROM orders o
JOIN products p ON o.product_id = p.id
GROUP BY 1
ORDER BY 3 DESC
LIMIT 10
```

このクエリの結果を棒グラフで表示します。

#### 3. 顧客購買パターン分析

SQLクエリ:

```sql
SELECT 
  customer_id,
  COUNT(DISTINCT order_id) AS order_count,
  SUM(total_amount) AS total_spent,
  AVG(total_amount) AS avg_order_value
FROM orders
GROUP BY 1
ORDER BY 3 DESC
```

この結果をスキャッタープロットで表示します。

### ダッシュボードの作成

上記の3つの分析結果をMetabaseのダッシュボード機能を使って1つのページにまとめます。

### インサイトの活用

このダッシュボードから得られるインサイトの例：

1. スマートウォッチカテゴリの売上が急増しており、在庫の増加が必要かもしれません。
2. ワイヤレスイヤホンが最も売れている製品であり、関連製品のクロスセルの機会があります。
3. 高頻度で大量購入する顧客セグメントが存在し、ロイヤルティプログラムの対象として適しています。

### 自動更新とアラート設定

1. ダッシュボードを毎日午前9時に自動更新するようスケジュールを設定します。
2. 特定のカテゴリの売上が前月比20%以上減少した場合にアラートを設定し、マーケティングチームに通知が行くようにします。

以上、Metabaseの主要な機能と使い方、そして実践的な活用例を16章に分けて解説しました。サンプルデータを参考に、実際にMetabaseを使ってデータ分析を行ってみてください。データドリブンな意思決定を通じて、ビジネスの成長を加速させることができるでしょう。