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
* refactor: replace the way the birth_names data is loaded to DB
* fix failed unit test
* fix failed unit test
* fix failed tests
* fix pass wrong flag of support datetime type
* remove unused fixture
* initial commit
* revisions
* started tests
* added unit tests
* revisions
* tests passing
* fixed api test
* Update superset/queries/saved_queries/commands/importers/v1/utils.py
Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>
* Revert "Update superset/queries/saved_queries/commands/importers/v1/utils.py"
This reverts commit 18580aad1e.
Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>
* fix(query): properly select adhoc metrics in orderby
* Throw error when sql is empty
* Allow `metrics` to be None
* Always use alias in orderby for metrics
* Bump table chart version and migrate histogram to typescript
* Fix Histogram without groupby
* Fix Presto birth names test
* Raw records mode should not aggregate
* refactor(api): csrf token on the new REST API
* improve OpenAPI spec description
* fix test
* remove public role like has default for all tests
* fix test
* refactor: migrate table chart to new API
* chore: bump superset-ui to 0.17.0
* Fix Cypress tests
* Apply soft-conversion to numeric metrics
Fix time column formatting test
* Add translation to chart does not exist error
* Bump to 0.17.1
* Added energy usage fixture. Updated dashboard utils and unicode fixture with new method parameters.
* Add energy fixture to tests/access_tests.py
* Add energy fixture to tests/core_tests.py
* Add energy fixture to tests/dashboard_tests.py
* Add energy fixture to tests/datasets/api_tests.py
* Add energy fixture to tests/db_engine_specs/base_engine_spec_tests.py
* Add energy fixture to tests/import_export_tests.py
* Add energy fixture to tests/model_tests.py
* Add energy fixture to tests/query_context_tests.py
* Add energy fixture to tests/security_tests.py
* Add energy fixture to tests/charts/api_tests.py
* Changed formatting of slices' parameters in energy usage fixture
* Removed loading energy udage data from test conf file
* Add energy fixture to tests/databases/api_tests.py
* Fixes after review: removed isort:skip, load_charts->load_energy_charts, removed unused import.
* Added energy fixture to tests/charts/commands_tests.py and retrieving proper Slice by name
* Fixed charts/api_tests.py to use energy_usage from fixtures
* Fixed datasets/commands_tests.py to retrieve dataset by name and use energy_usage fixture
* Changed energy usage data to generated data and fixed chart tests which was checking energy usage data
* fix dataset editor for updating table_name and schema
* update test
* remove table_name from restrict list
* fix pylint
* fix cypress test
* fix test
* Removed depemdency to unicode example in tests config.
* Added common methods for creating dashboards for tests.
* Added fixtures to all tests which were using unicode example.
* Added cleanup for unicode_test table
* Removed unnecessary fixture parts of unicode dashboard tests
* Parametrized creating slice for tests
* Moved fixtures for unicode test to separate file and refactored to several methods. Added param types and return types.
* Cleandup after fix
* Changed variable names to more readable
* Added cleanup for dashboards and slices
* Applied unicode fixture to charts api tests
* Update schema variable to dtype in dashboard utils
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
* Changed variable schema to dtype in dashboards. Replaced accessing first element with one_or_none
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
* Make all fields optional in QueryObject and fix having_druid schema
* fix: datasource type sql to table
* lint
* Add missing fields
* Refactor tests
* Linting
* Refactor query context fixtures
* Add typing to test func
* Add post processing to QueryObject
* Simplify sort signature and require explicit sort order
* Add new operations and unit tests
* linting
* Address comments
* Simplify test method names
* Address comments
* Linting
* remove unnecessary logic
* Apply strict whitelisting to all getattr calls
* Add checking of rolling_type_options and add/improve docs
* fix: change database save in DatasourceEditor
This addresses the issue where pointing a datasource to another database
in the datasource editor is not reflected.
Also addresses:
- a minorcosmetic issue in the datasource editor.
- user/owners list not getting populated
* tests
* re-enable pylint for superset/common/query_context.py
* Re-enable pylint for superset/connectors/base/views.py
* re-enable pylint for superset/connectors/connector_registry.py
* Re-enable pylint for tests/fixtures/pyodbcRow.py
* re-enable pylint for superset/cli.py
* Fix for mypy
* Improve variable naming
* A few more naming fixes
* Add licenses
* More licenses
* Ignore messages.json as they are generated
* More licenses
* Also typescript
* Fix alignment
* Add to svg
* Many more licenses
* more licenses
* Better excludes
* Add licenses to docs and md files
* Pre-finalize licenses
* Fix newlines
* Finalize all sourde licenses
* Fix lint