AI

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 SupersetMetabaseRedash
SQLなし操作
SQLエディタ
DBコネクタ40+20+20+
行レベルセキュリティ✅(有料のみ)
スケジュールレポート
GitHub Stars63k+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
ノンエンジニアのセルフサービスBIMetabase
SQLエンジニアの探索的分析・APIダッシュボードRedash

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。