install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/TerminalSkills/skills/superset" ~/.claude/skills/comeonoliver-skillshub-superset && rm -rf "$T"
manifest:
skills/TerminalSkills/skills/superset/SKILL.mdsource content
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