> superset
Apache Superset is an open-source data exploration and visualization platform. Learn Docker deployment, database connections, chart creation, dashboard building, SQL Lab usage, and programmatic access via the REST API.
curl "https://skillshub.wtf/TerminalSkills/skills/superset?format=md"Superset
Apache Superset is a modern BI platform that supports rich visualizations, SQL Lab for ad-hoc queries, and a no-code chart builder. It connects to most SQL databases.
Installation
# Docker Compose (official method)
git clone https://github.com/apache/superset.git
cd superset
docker compose -f docker-compose-non-dev.yml up -d
# Access at http://localhost:8088 (admin/admin)
# docker-compose.yml: Minimal Superset with PostgreSQL
services:
superset:
image: apache/superset:3.1.0
ports:
- "8088:8088"
environment:
SUPERSET_SECRET_KEY: your-secret-key-change-me
DATABASE_URL: postgresql+psycopg2://superset:superset@postgres/superset
depends_on:
- postgres
- redis
volumes:
- ./superset_config.py:/app/pythonpath/superset_config.py
postgres:
image: postgres:16
environment:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
POSTGRES_DB: superset
volumes:
- pg-data:/var/lib/postgresql/data
redis:
image: redis:7
volumes:
pg-data:
# superset_config.py: Basic Superset configuration
SECRET_KEY = 'your-secret-key-change-me'
SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://superset:superset@postgres/superset'
# Feature flags
FEATURE_FLAGS = {
'ENABLE_TEMPLATE_PROCESSING': True,
'DASHBOARD_NATIVE_FILTERS': True,
'EMBEDDED_SUPERSET': True,
}
# Cache config
CACHE_CONFIG = {
'CACHE_TYPE': 'RedisCache',
'CACHE_DEFAULT_TIMEOUT': 300,
'CACHE_KEY_PREFIX': 'superset_',
'CACHE_REDIS_URL': 'redis://redis:6379/0',
}
Initial Setup
# setup.sh: Initialize Superset after first deploy
# Create admin user
docker exec -it superset superset fab create-admin \
--username admin \
--firstname Admin \
--lastname User \
--email admin@example.com \
--password admin
# Initialize the database
docker exec -it superset superset db upgrade
# Load example dashboards (optional)
docker exec -it superset superset load_examples
# Initialize roles and permissions
docker exec -it superset superset init
Connect a Database
# add-database.sh: Add a data source via API
TOKEN=$(curl -s -X POST http://localhost:8088/api/v1/security/login \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "admin", "provider": "db"}' \
| jq -r '.access_token')
curl -X POST http://localhost:8088/api/v1/database/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"database_name": "Production Analytics",
"engine": "postgresql",
"sqlalchemy_uri": "postgresql://readonly:pass@prod-db:5432/analytics",
"expose_in_sqllab": true,
"allow_ctas": false,
"allow_cvas": false
}'
SQL Lab
SQL Lab is Superset's interactive SQL editor:
1. Navigate to SQL Lab → SQL Editor
2. Select your database and schema
3. Write and execute queries
4. Save results as a dataset for chart building
5. Use Jinja templates for dynamic queries:
SELECT * FROM orders
WHERE created_at >= '{{ from_dttm }}' AND created_at < '{{ to_dttm }}'
Create Charts via API
# create-chart.py: Programmatically create a chart
import requests
BASE = 'http://localhost:8088/api/v1'
TOKEN = 'your-access-token'
headers = {'Authorization': f'Bearer {TOKEN}', 'Content-Type': 'application/json'}
# Create a chart (slice)
chart = requests.post(f'{BASE}/chart/', headers=headers, json={
'slice_name': 'Monthly Revenue',
'viz_type': 'echarts_timeseries_line',
'datasource_id': 1,
'datasource_type': 'table',
'params': '{"metrics": ["sum__revenue"], "groupby": ["category"], "time_range": "Last year"}',
}).json()
print(f"Chart created: {chart['id']}")
Create Dashboard via API
# create-dashboard.py: Create a dashboard and add charts
dashboard = requests.post(f'{BASE}/dashboard/', headers=headers, json={
'dashboard_title': 'Revenue Analytics',
'published': True,
'slug': 'revenue-analytics',
}).json()
dashboard_id = dashboard['result']['id']
print(f"Dashboard: http://localhost:8088/superset/dashboard/{dashboard_id}/")
Export and Import
# export-import.sh: Export dashboards for version control
# Export dashboard as ZIP
curl -o dashboard.zip \
-H "Authorization: Bearer $TOKEN" \
"http://localhost:8088/api/v1/dashboard/export/?q=[1]"
# Import dashboard
curl -X POST "http://localhost:8088/api/v1/dashboard/import/" \
-H "Authorization: Bearer $TOKEN" \
-F "formData=@dashboard.zip" \
-F "overwrite=true"
Role-Based Access
Superset RBAC:
- Admin: Full access to all features
- Alpha: Access to all data sources, can create charts/dashboards
- Gamma: Access only to granted datasets and dashboards
- sql_lab: Permission to use SQL Lab
Custom roles: Settings → List Roles → Add new role with specific permissions
Row-level security: Settings → Row Level Security → Add filter per role
> related_skills --same-repo
> zustand
You are an expert in Zustand, the small, fast, and scalable state management library for React. You help developers manage global state without boilerplate using Zustand's hook-based stores, selectors for performance, middleware (persist, devtools, immer), computed values, and async actions — replacing Redux complexity with a simple, un-opinionated API in under 1KB.
> zoho
Integrate and automate Zoho products. Use when a user asks to work with Zoho CRM, Zoho Books, Zoho Desk, Zoho Projects, Zoho Mail, or Zoho Creator, build custom integrations via Zoho APIs, automate workflows with Deluge scripting, sync data between Zoho apps and external systems, manage leads and deals, automate invoicing, build custom Zoho Creator apps, set up webhooks, or manage Zoho organization settings. Covers Zoho CRM, Books, Desk, Projects, Creator, and cross-product integrations.
> zod
You are an expert in Zod, the TypeScript-first schema declaration and validation library. You help developers define schemas that validate data at runtime AND infer TypeScript types at compile time — eliminating the need to write types and validators separately. Used for API input validation, form validation, environment variables, config files, and any data boundary.
> zipkin
Deploy and configure Zipkin for distributed tracing and request flow visualization. Use when a user needs to set up trace collection, instrument Java/Spring or other services with Zipkin, analyze service dependencies, or configure storage backends for trace data.