What Metabase Does
- Visual Query Builder: Click-based interface to ask questions without SQL
- SQL Editor: Full SQL editor with autocomplete for advanced users
- Dashboards: Interactive dashboards with filters, drill-down, and auto-refresh
- Charts: 15+ visualization types (bar, line, pie, map, funnel, pivot table, etc.)
- Alerts: Automated alerts when metrics cross thresholds
- Embedding: Embed charts and dashboards into your own application
- Data Modeling: Define metrics, segments, and relationships in a metadata layer
- Permissions: Granular access control by group, database, table, and column
- Collections: Organize dashboards and questions into shareable collections
Architecture
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Browser │────▶│ Metabase │────▶│ Your Data │
│ (Dashboard) │ │ Server │ │ PostgreSQL │
└──────────────┘ │ (Java/Clj) │ │ MySQL │
└──────────────┘ │ BigQuery │
│ Snowflake │
│ Redshift │
│ MongoDB │
└──────────────┘Self-Hosting
Docker Compose (Production)
services:
metabase:
image: metabase/metabase:latest
ports:
- "3000:3000"
environment:
MB_DB_TYPE: postgres
MB_DB_HOST: metabase-db
MB_DB_PORT: 5432
MB_DB_DBNAME: metabase
MB_DB_USER: metabase
MB_DB_PASS: metabase
depends_on:
- metabase-db
metabase-db:
image: postgres:16-alpine
environment:
POSTGRES_USER: metabase
POSTGRES_PASSWORD: metabase
POSTGRES_DB: metabase
volumes:
- mb-db:/var/lib/postgresql/data
volumes:
mb-db:Supported Data Sources
| Category | Databases |
|---|---|
| SQL | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite |
| Cloud DW | BigQuery, Snowflake, Redshift, Databricks |
| NoSQL | MongoDB |
| Analytics | ClickHouse, Druid, Presto/Trino, Spark SQL |
| Flat Files | CSV uploads |
| APIs | Google Analytics, Stitch, custom drivers |
Key Features
Visual Query Builder
No SQL required:
Table: Orders
├── Filter: Created At is in the last 30 days
├── Summarize: Sum of Total, grouped by Product Category
├── Sort: Total descending
└── Visualization: Bar ChartThis generates SQL behind the scenes:
SELECT product_category, SUM(total)
FROM orders
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY product_category
ORDER BY SUM(total) DESCDashboard Filters
Dashboard: Sales Overview
├── Date Filter: Last 30 days / This quarter / Custom range
├── Region Filter: Dropdown (North, South, East, West)
├── Product Filter: Search + multi-select
└── All charts update based on filter selectionsEmbedding
Embed Metabase in your own app:
// iframe embedding
const iframeUrl = "http://metabase:3000/embed/dashboard/eyJ..."
// JWT-signed embedding (secure)
const jwt = require('jsonwebtoken');
const METABASE_SECRET = "your-secret-key";
const payload = {
resource: { dashboard: 1 },
params: { customer_id: currentUser.id },
exp: Math.round(Date.now() / 1000) + (10 * 60),
};
const token = jwt.sign(payload, METABASE_SECRET);
const embedUrl = `http://metabase:3000/embed/dashboard/${token}`;Alerts & Subscriptions
Alert: When daily revenue drops below $10,000
→ Send Slack notification to #revenue channel
→ Email CFO
Subscription: Weekly sales report
→ Every Monday 8am
→ Email to sales-team@company.com
→ Include dashboard as PDF attachmentMetabase vs Alternatives
| Feature | Metabase | Redash | Grafana | Looker | Tableau |
|---|---|---|---|---|---|
| Open Source | Yes | Yes (BSD) | Yes (AGPL) | No | No |
| No-SQL queries | Visual builder | SQL only | PromQL | LookML | Drag & drop |
| Ease of use | Very easy | Moderate | Moderate | Complex | Moderate |
| Embedding | Yes | Limited | Yes | Yes | Yes |
| Self-hosted | Yes | Yes | Yes | No | Enterprise |
| Pricing | Free (OSS) | Free | Free | $5K+/mo | $70/user/mo |
FAQ
Q: What team size is Metabase suitable for? A: Everything from individuals to organizations of several thousand. The open-source edition has no user limit. For large enterprises, Metabase Pro/Enterprise adds advanced features like caching, auditing, and SAML SSO.
Q: Will queries impact production database performance? A: Metabase recommends connecting to a read replica rather than hitting your primary database. You can also configure query timeouts and concurrency limits to protect the database.
Q: Can I connect multiple databases? A: Yes. A single Metabase instance can connect to multiple databases of different types and surface data from different sources in one dashboard.
Sources & Credits
- GitHub: metabase/metabase — 46.8K+ ⭐
- Website: metabase.com