OSSデータビジュアライゼーション比較:Apache Superset vs Metabase vs Redash でTableauを脱却する
オープンソースラボ編集部 ・ 2026年6月13日
OSSデータビジュアライゼーション比較:Apache Superset vs Metabase vs Redash でTableauを脱却する
Tableau(月$70/ユーザー〜)・Power BI Pro(月$14/ユーザー〜)・Looker(月$3,000/月〜)に対して、Apache Superset(Airbnb発のOSS BI)・Metabase(SQLなしで使えるOSS BIツール)・Redash(SQLエンジニア向けOSS)はBIダッシュボードをセルフホストできます。
OSS BIツールを選ぶ理由
- コスト: Tableau 10ユーザーは月$700。Supersetセルフホストで0円
- データ主権: 顧客データ・財務データのクエリ結果を外部SaaSに送らない
- SQL直接アクセス: Metabase・Redashは既存のDBに直接接続(ETL不要)
- カスタマイズ: SupersetはD3.jsベースのカスタムチャートをプラグインとして追加可能
主要ツールの概要
Apache Superset
2015年Airbnb発、Python/React製のOSSです。GitHubスター63k+。CNCFプロジェクト・40以上のDBコネクタ・インタラクティブダッシュボード・SQLエディタ・ドリルダウンを提供します。BigQuery・Snowflake・Redshift・PostgreSQL・MySQL・ClickHouseと直接接続できます。
# docker-compose.yml - Apache Superset セルフホスト
version: '3.8'
services:
superset:
image: apache/superset:4.0.2
restart: unless-stopped
ports:
- "8088:8088"
environment:
SUPERSET_SECRET_KEY: "your-secret-key-generate-with-openssl-rand-base64-42"
DATABASE_URL: postgresql+psycopg2://superset:password@postgres/superset
REDIS_URL: redis://redis:6379/0
# Google OAuth認証
ENABLE_OAUTH: "true"
AUTH_TYPE: "AUTH_OAUTH"
volumes:
- ./superset_config.py:/app/pythonpath/superset_config.py
depends_on:
- postgres
- redis
superset-worker:
image: apache/superset:4.0.2
restart: unless-stopped
command: celery --app=superset.tasks.celery_app:app worker -O fair
environment:
SUPERSET_SECRET_KEY: "your-secret-key"
DATABASE_URL: postgresql+psycopg2://superset:password@postgres/superset
REDIS_URL: redis://redis:6379/0
depends_on:
- superset
- redis
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: superset
POSTGRES_USER: superset
POSTGRES_PASSWORD: password
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:
# superset_config.py - Supersetカスタム設定
from flask_appbuilder.security.manager import AUTH_OAUTH
AUTH_TYPE = AUTH_OAUTH
AUTH_USER_REGISTRATION = True
AUTH_USER_REGISTRATION_ROLE = "Gamma"
# Google Workspace OIDC
OAUTH_PROVIDERS = [
{
'name': 'google',
'icon': 'fa-google',
'token_key': 'access_token',
'remote_app': {
'client_id': 'your-google-client-id',
'client_secret': 'your-google-client-secret',
'api_base_url': 'https://www.googleapis.com/oauth2/v2/',
'client_kwargs': {
'scope': 'email profile',
'hd': 'yourcompany.com', # 会社ドメインのみ許可
},
'request_token_url': None,
'access_token_url': 'https://oauth2.googleapis.com/token',
'authorize_url': 'https://accounts.google.com/o/oauth2/auth',
'jwks_uri': 'https://www.googleapis.com/oauth2/v3/certs',
},
}
]
# ClickHouseへの接続(高速集計クエリ)
ADDITIONAL_DATABASES = {
'clickhouse': {
'sqlalchemy_uri': 'clickhouse+http://admin:password@clickhouse:8123/default',
'expose_in_sqllab': True,
}
}
# キャッシュ設定(クエリ結果を5分キャッシュ)
CACHE_CONFIG = {
'CACHE_TYPE': 'RedisCache',
'CACHE_DEFAULT_TIMEOUT': 300,
'CACHE_KEY_PREFIX': 'superset_',
'CACHE_REDIS_URL': 'redis://redis:6379/0',
}
# 行レベルセキュリティ(ユーザーが自分のデータのみ見える)
ENABLE_ROW_LEVEL_SECURITY = True
# Apache Superset REST API でダッシュボードを自動作成
import requests
import os
SUPERSET_URL = 'https://bi.yourcompany.com'
def get_access_token(username: str, password: str) -> str:
resp = requests.post(
f'{SUPERSET_URL}/api/v1/security/login',
json={
'username': username,
'password': password,
'provider': 'db',
'refresh': True,
},
)
resp.raise_for_status()
return resp.json()['access_token']
token = get_access_token('admin', os.environ['SUPERSET_ADMIN_PASSWORD'])
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json',
}
# チャートの一覧を取得
def list_charts(page: int = 0):
resp = requests.get(
f'{SUPERSET_URL}/api/v1/chart/',
headers=headers,
params={'q': f'(page:{page},page_size:20)'},
)
return resp.json()
# ダッシュボードをエクスポート(バックアップ)
def export_dashboard(dashboard_id: int) -> bytes:
resp = requests.get(
f'{SUPERSET_URL}/api/v1/dashboard/export/?q=!({dashboard_id})',
headers=headers,
)
return resp.content
# 使用例: 週次レポートダッシュボードをエクスポートしてS3にバックアップ
import boto3
dashboard_zip = export_dashboard(1)
s3 = boto3.client('s3')
s3.put_object(
Bucket='your-backup-bucket',
Key=f'superset-backups/dashboard-weekly-report.zip',
Body=dashboard_zip,
)
print('ダッシュボードバックアップ完了')
Metabase
2015年公開、Clojure/React製のOSSです。GitHubスター40k+。SQLを書かずにドラッグ&ドロップでグラフを作成できる直感的なUIが特長です。ノンエンジニアのビジネスチームが自分でレポートを作成できるセルフサービスBIとして広く使われています。
# docker-compose.yml - Metabase
version: '3.8'
services:
metabase:
image: metabase/metabase:v0.51.0
restart: unless-stopped
ports:
- "3000:3000"
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabase
MB_DB_PORT: "5432"
MB_DB_USER: metabase
MB_DB_PASS: password
MB_DB_HOST: postgres
MB_SITE_URL: https://metabase.yourcompany.com
# SMTP(メールレポート送信)
MB_EMAIL_SMTP_HOST: smtp.sendgrid.net
MB_EMAIL_SMTP_PORT: "587"
MB_EMAIL_SMTP_USERNAME: apikey
MB_EMAIL_SMTP_PASSWORD: ${SENDGRID_KEY}
depends_on:
- postgres
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: metabase
POSTGRES_USER: metabase
POSTGRES_PASSWORD: password
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
機能比較表
| 比較項目 | Apache Superset | Metabase | Redash |
|---|---|---|---|
| SQLなし操作 | △ | ✅ | ❌ |
| SQLエディタ | ✅ | ✅ | ✅ |
| DBコネクタ | 40+ | 20+ | 20+ |
| 行レベルセキュリティ | ✅ | ✅(有料のみ) | ❌ |
| スケジュールレポート | ✅ | ✅ | ✅ |
| GitHub Stars | 63k+ | 40k+ | 25k+ |
BIツールはDevOpsカテゴリ/categories/devopsのClickHouse・DuckDBをバックエンドにすることで億行規模のデータのリアルタイム集計を低コストで実現します。LLMツールカテゴリ/categories/llm-toolsのText-to-SQLツール(Vanna.AIなど)をMetabaseに統合してノンエンジニアが自然言語でデータを分析できる環境も構築できます。
FAQ
Q. SupersetとMetabaseのどちらが大企業に向いていますか?
A. Supersetがエンタープライズ向け、Metabaseが中小・スタートアップ向けが一般的な評価です。Superset: ①行レベルセキュリティ(データ部門ごとに見えるデータを制限)②Celeryワーカーによるスケーラブルなクエリキャッシュ③カスタムチャートプラグイン(D3.js)④CNCFプロジェクトでエンタープライズサポートあり(Preset.io)。Metabase: ①セットアップが15分で完了②非エンジニアでも3日で使いこなせる③問いかけ機能(Q&A)でSQLなしの質問。エンタープライズのデータチームはSuperset、ビジネスチームがセルフサービスで使うにはMetabaseという使い分けも有効です。
Q. SupersetをSupabase(PostgreSQL)に接続するには?
A. Superset UIから「Databases → +Database」→ PostgreSQLを選択。接続文字列: postgresql+psycopg2://postgres:[password]@db.ucceyqlkrzojulwyryia.supabase.co:5432/postgres?sslmode=require。接続時の注意: ①SupabaseはデフォルトでSSL必須(sslmode=require)②公開スキーマのテーブルのみアクセス可能(RLSは無効化してSuperset用ユーザーを作成することを推奨)③接続テスト後にスキーマキャッシュを手動更新(Database → Sync Schemas from Source)。SupabaseのAnon Keyで接続する方法もありますが、PostgREST経由のAPI呼び出しになり直接SQLクエリは使えないため、direct DB接続(上記接続文字列)を推奨します。
Q. MetabaseでKPI自動メールレポートを設定するには?
A. ①Metabase UIでQuestionまたはDashboardを作成②「Subscriptions」(ベルアイコン)→「Email」→送信先メールアドレスを追加③スケジュール設定: 毎週月曜9時・毎日9時など。送信されるもの: ダッシュボードのスクリーンショット + 主要チャートの静的画像 + 変化があった場合のアラート。アラート設定: Question → Alerts → 「この指標が閾値を超えたらメール通知」(例: エラーレートが5%を超えたらSlack通知)。Slack通知: Metabase Settings → Notifications → Slack Webhookを設定すると、ダッシュボードサマリーを直接Slackに送信できます。
Q. RedashとSupersetはどう使い分けますか?
A. Redashはデータエンジニア・アナリスト向け、Supersetはビジネスユーザーも含むチーム向けです。Redash: ①SQLを主体にした探索的分析②パラメータ付きクエリ(URLパラメータでフィルタを変更)③APIクエリも可能(REST APIの結果をダッシュボード化)。Superset: ①ビジュアルクエリビルダー(SQLなしでもグラフ作成)②より豊富なチャートタイプ(時系列・地図・カスタムD3)③行レベルセキュリティ④スケーラブルなキャッシュ。100%SQLエンジニアのチームでクイックにダッシュボードを作るならRedashが軽量で使いやすいです。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| エンタープライズBI・行レベルセキュリティ | Apache Superset |
| ノンエンジニアのセルフサービスBI | Metabase |
| SQLエンジニアの探索的分析・APIダッシュボード | Redash |