Migrates Superset's example data system from Python-based scripts to YAML configuration files, providing a cleaner, more maintainable approach to managing example datasets, charts, and dashboards. - Converted 9 Python example modules to YAML configurations - Exported existing examples from database and added as YAML files: - 11 dashboards (USA Births Names, World Bank's Data, etc.) - 115 charts - 25 datasets - Moved test-specific fixtures to `tests/fixtures/examples/` - Removed theme_id from dashboard exports for compatibility - **New command group**: `superset examples` with subcommands: - `load` - Load example data (replaces `load-examples`) - `clear-old` - Remove old Python-based examples - `clear` - Placeholder for future YAML clearing - `reload` - Clear and reload in one command - **Backwards compatibility**: `superset load-examples` still works with deprecation warning - **Safety mechanism**: Detects old examples and preserves them to avoid data loss - Fixed JSON data loading - examples can now load `.json.gz` files from CDN - Fixed Docker compose configuration for isolated development - Fixed webpack WebSocket configuration for different ports - Import operations now log what's being created vs updated: - "Creating new dashboard: Sales Dashboard" - "Updating existing chart: World's Population" - Provides clear visibility into the import process - Moved import logging to individual import functions (DRY principle) - Non-destructive migration approach - no user data is deleted - Deterministic UUID generation for consistent example data - Tested migration from old Python examples to new YAML format - Verified safety mechanism prevents accidental data overwrites - Confirmed backwards compatibility with deprecated command - All pre-commit checks pass - Updated installation docs to use new CLI commands - Added deprecation notice to UPDATING.md - Updated development documentation None - the old `load-examples` command continues to work with a deprecation warning. For users with existing Python-based examples: 1. Run `superset examples clear-old --confirm` to remove old examples 2. Run `superset examples load` to load new YAML-based examples
Getting Started with Superset using Docker
Docker is an easy way to get started with Superset.
Prerequisites
Configuration
The /app/pythonpath folder is mounted from ./docker/pythonpath_dev
which contains a base configuration ./docker/pythonpath_dev/superset_config.py
intended for use with local development.
Local overrides
In order to override configuration settings locally, simply make a copy of ./docker/pythonpath_dev/superset_config_local.example
into ./docker/pythonpath_dev/superset_config_docker.py (git ignored) and fill in your overrides.
Local packages
If you want to add Python packages in order to test things like databases locally, you can simply add a local requirements.txt (./docker/requirements-local.txt)
and rebuild your Docker stack.
Steps:
- Create
./docker/requirements-local.txt - Add your new packages
- Rebuild docker compose
docker compose down -vdocker compose up
Initializing Database
The database will initialize itself upon startup via the init container (superset-init). This may take a minute.
Normal Operation
To run the container, simply run: docker compose up
After waiting several minutes for Superset initialization to finish, you can open a browser and view http://localhost:8088
to start your journey.
Developing
While running, the container server will reload on modification of the Superset Python and JavaScript source code. Don't forget to reload the page to take the new frontend into account though.
Production
It is possible to run Superset in non-development mode by using docker-compose-non-dev.yml. This file excludes the volumes needed for development.
Resource Constraints
If you are attempting to build on macOS and it exits with 137 you need to increase your Docker resources. See instructions here (search for memory)