Changelog
1.12.3 (core) / 0.28.3 (libraries)
New
- Updated the cursoring logic of
AutomationCondition.since()/AutomationCondition.newly_true()to make them retain access to their stored data in a wider range of scenarios where the underlying condition structure is changed. - Added a
--use-active-venvmethod to a variety ofdgcommands. (Thanks, @cmpadden!) - The
build_defs_at_pathandload_component_at_pathmethods on theComponentLoadContextclass have been renamed tobuild_defsandload_componentrespectively. The previous names have been preserved for backcompat. - The template variables available in the default resolution scope for Components have been reorganized / expanded:
{{ automation_condition.on_cron(...) }}->{{ dg.AutomationCondition.on_cron(...) }}- **new: ** All
AutomationConditionstatic constructors may be accessed via thedgcontext, e.g.:{{ dg.AutomationCondition.on_missing() & dg.AutomationCondition.in_latest_time_window() }}
- **new: ** All
PartitionsDefinitionsubclasses are now available via thedgcontext, e.g.: {{ dg.StaticPartitionsDefinition(['a', 'b', 'c']) }}{{ dg.DailyPartitionsDefinition('2025-01-01') }}{{ project_root }}->{{ context.project_root }}{{ build_definitions_at_path(...) }}->{{ context.build_defs(...) }}{{ load_component_at_path(...) }}->{{ context.load_component(...) }}- All previous template vars will continue to work as before for backcompat.
- [ui] Improve browser performance for large asset graphs.
- [dagster-snowflake] Added
create_snowpark_session()which provides a convenient way to create a Snowpark session. (Thanks, @stevenayers!) - [dagster-snowflake] Added
get_databases(),get_schemas(),get_tables(),get_views(),get_pipes()&get_stages()which provide a pythonic interface for Snowflake introspection. (Thanks, @stevenayers!) - [dagster-dbt] You can now override the
op_config_schemaproperty on theDbtProjectComponentto customize how your dbt execution can be configured at runtime.
Bugfixes
- Added the ability to execute refreshes of embedded and published datasources when using the TableauComponent.
- Fixed a bug in asset partitions where the partition range selector would sometimes stop working.
- [dagster-dbt] Fixed a
FileExistsErroron Windows when reloadingdbtproject definitions by ensuring the local project directory creation handles pre-existing directories. (Thanks, @Jongwan93!) - [dagster-dbt] Fixed an issue introduced in version 1.12.2 that caused the
DbtProjectComponentto not produce asset checks for tests on dbt sources. (Thanks, @stevenayers!)
Documentation
- Added documentation for the community dagster-slurm integration. (Thanks, @geoHeil!)
1.12.2 (core) / 0.28.2 (libraries)
New
- Dagster has dropped support for Python 3.9 (due to end of life). The minimum supported Python version is now 3.10. This is a breaking change originally intended for the 1.12.0 release.
- Added
dg api schedule {list,get}command. - Added new
dg plus deploy configureCLI group that generates all the files necessary to get an existing project ready for deployment via Dagster+. - [ui] A new sidebar in the Asset catalog (behind a feature flag) provides a hierarchical view of your asset keys.
- [ui] Improve a few parts of the "Recent updates" timeline section of the Asset overview page.
- [dagster-census] Added
CensusComponentallowing Dagster assets to sync with census connections. - [dagster-airbyte] New AirbyteWorkspace configurations:
poll_previous_running_sync,max_items_per_page,poll_interval,poll_timeout&cancel_on_termination. (Thanks, @stevenayers and @sonianuj287!) - [dagster-dbt] You can now override the
op_config_schemaproperty on theDbtProjectComponentto customize how your dbt execution can be configured at runtime.
Dagster Plus
- [ui] "Edit public catalog views" is now editable in the role permission list.
1.12.1 (core) / 0.28.1 (libraries)
New
- Migrate SqlComponent to Pydantic v2 model_config pattern (Thanks, @LPauzies!)
- Make
dg apicommands visible indg --helpoutput. - Make
dg pluscommands visible in thedg --helpoutput. - Add Dremio kind icon. (Thanks, @maxfirman!)
- The github actions scaffolded by
dg scaffold github-actionsnow include commands to refresh state forStateBackedComponents. - Run worker health check will now tag runs with their associated ENI ids.
- [ui] In asset sidebar, clearly indicate when a freshness policy is a legacy policy.
- [ui] Cost metrics are now shown on the asset catalog insights page.
- [dagster] New AutomationConditions for checking asset freshness -
dg.AutomationCondition.freshness_passed(),dg.AutomationCondition.freshness_warned()anddg.AutomationCondition.freshness_failed(). (Thanks, @stevenayers!)
Bugfixes
- [ui] Fix a sporadic race condition when loading jobs in the Dagster UI.
- [ui] Fixed an issue where deploying multiple serverless code locations simultaneously would sometimes fail with a "the dagster package dependency was expected but not found" error.
- [ui] Fixed a bug that would cause errors when attempting to supply config to a backfill that targeted assets with checks.
- [ui] Fixed an issue introduced in dagster 1.11.16 where repositories using custom RepositoryData subclasses would sometimes raise an error when viewing jobs in the Dagster UI.
- [ui] Fix sensor descriptions in the automation list.
- [dagster-dask] Fixed an issue where Dask parquet filters configured in YAML would fail with
ValueError: too many values to unpack (expected 3)when using Dask version 2022.4.2. (Thanks, @kudryk!) - [dagster-dbt] Fixed an issue where dagster-dbt runs targeting large numbers of models could cause the underlying
dbtCLI invocation to fail from too many arguments.
Dagster Plus
- [ui] The insights view in the Observe UI now allows you to specify a custom date range.
1.12.0 (core) / 0.28.0 (libraries)
Major changes since 1.11.0 (core) / 0.27.0 (libraries)
UI
- Refreshed UI: The UI has been redesigned and streamlined to make it easier to find common utilities quickly. Navigation elements have been moved from a header to a collapsible sidebar to help highlight important workflows and provide more visual space throughout the product.
Components
- Components GA: The Components framework and the
dgCLI are now marked as GA (previously Release Candidate). The APIs are fully supported throughout all parts of the product and remain the recommended defaults for new Dagster projects. - Standardized Integrations: Integration components have been updated to have
execute()andget_asset_spec()methods that can be overridden by subclasses, making it easier and more consistent to customize your components. - New Components:
- State-Backed Components: Added a new
StateBackedComponentabstract base class that enables components to persist and manage state separately from their YAML / Python configuration. This is particularly useful for integration components that need to fetch external data. State can be managed locally, in versioned storage, or via code server snapshots. Many integration components (AirbyteWorkspaceComponent,FivetranAccountComponent,PowerBIWorkspaceComponent,AirflowInstanceComponent, andDbtProjectComponent) now extendStateBackedComponentto provide better control over state management. You can check out the docs here!
Simplified Deployment
dg scaffold build-artifactsscaffolds Docker and configuration files needed to build and deploy your Dagster project to Dagster Cloud, with support for multiple container registries (ECR, DockerHub, GHCR, ACR, GCR).dg scaffold github-actionsgenerates a complete GitHub Actions CI/CD workflow for deploying to Dagster Cloud, with auto-detection of Serverless vs Hybrid agents and guided setup for required secrets.
Core Orchestration
- FreshnessPolicies GA: The new FreshnessPolicy API introduced in 1.10.0 has stabilized and is now marked as GA (previously Preview). These supersede the
LegacyFreshnessPolicyAPI (formerlyFreshnessPolicy, deprecated in 1.10.0), as well as freshness checks.FreshnessPolicyandapply_freshness_policyare now exported from the top-leveldagstermodule (instead ofdagster.preview.freshness).- The
build_.*_freshness_checksmethods have been marked assuperseded. Their functionality will remain unchanged, but we recommend usingFreshnessPolicys for new use cases. - The
FreshnessDaemonnow runs by default, rather than needing to be explicitly enabled viadagster.yamlsettings. To turn it off, set:freshness:
enabled: false
- Configurable Backfills: Run config can now be supplied when launching a backfill, allowing you to specify configuration that will be applied uniformly to all runs.
- Time-based partition exclusions: All subclasses of
TimeWindowPartitionsDefinitionnow support anexclusionsparameter, which allows you to exclude specific dates/times or recurring schedules from your partition set. This is useful for implementing custom calendars that exclude weekends, holidays, or maintenance windows. Exclusions can be specified as cron strings (e.g.,"0 0 * * 6"for Saturdays) or datetime objects for specific dates. - Execution Dependency Options: All
Executors have been updated to accept an optionalstep_dependency_configparameter with arequire_upstream_step_successflag. When set toFalsevia{"step_dependency_config": {"require_upstream_step_success": False}}, downstream steps can start as soon as their required upstream outputs are available, rather than waiting for the entire upstream step to complete successfully. This is particularly useful for large multi-assets where downstream assets only depend on a subset of upstream outputs.
Support & Docs
- We launched a new Support Center with help articles on Dagster+ Hybrid and Serverless troubleshooting, and answers to customer questions previously answered by our support team.
- In our docs:
- We reorganized the Examples section for easier navigation, and added new full pipeline examples on using Dagster with DSpy and PyTorch, as well as targeted mini examples that showcase best practices for:
- We added new guides to help you:
- We added links to Dagster University, our popular Python Primer blog post series, Dagster Deep Dives, customer case studies, Dagster Open Platform, and sales demo example pipelines so you can access all the resources you need to learn about Dagster in one place.
Changes since 1.11.16 (core) / 0.27.16 (libraries)
New
- In the Dagster helm chart, images can now be specified by digest (Thanks, @pmartincalvo!)
- The
MultiprocessExecutor,DockerExecutor, andK8sJobExecutornow retry according to their configured retry policy when the step fails during resource initialization. - [dagster-aws] Added an optional
key_prefixparameter toPipesS3ContextInjector(Thanks, @elipinska!) - [dagster-azure] Added a new
PipesAzureMLClient. - [dagster-pipes] Added support for
AzureBlobStorage. - [dagster-tableau] Added a new
TableauComponent - [dagster-looker] Added a
LookerComponent - [dagster-sigma] Added a new
SigmaComponent. - [dagster-dbt] The
DagsterDbtTranslatorno longer has aget_freshness_policymethod, nor does it automatically parse the legacy / deprecatedLegacyFreshnessPolicyobjects from dbt model configuration. - [dagster-sling] The
DagsterSlingTranslatorno longer has aget_freshness_policymethod, nor does it automatically parse the legacy / deprecatedLegacyFreshnessPolicyobjects from sling configuration.
Bugfixes
- Asset jobs that are unable to resolve their asset selection (for example, due to targeting an empty set of asset keys) will now raise a clearer exception at definition load time explaining which job failed to resolve its asset selection.
- Fixed an issue where automatic run retries of runs that only targeted asset checks would sometimes fail with a
DagsterInvalidConfigError. - [ui] Fixed issue causing sensor descriptions to not be displayed in the automation list.
- [dagster-dbt] Fixed a bug causing
enable_code_referencesto result in errors for dbt assets.
Documentation
- Corrected several typos and inconsistencies in the helm chart documentation (Thanks, @piggybox!)
1.11.16 (core) / 0.27.16 (libraries)
New
- The proxy GRPC server heartbeat TTL can now be configured with the DAGSTER_GRPC_PROXY_HEARTBEAT_TTL_SECONDS env var (default remains 30 seconds).
Bugfixes
- Fixed an issue introduced in dagster 1.11.15 where code locations that previously loaded would sometimes fail to load with a
gRPC Error code: RESOURCE_EXHAUSTEDerror. - Fixed an issue where defining a repository using a dictionary of job definitions with a key that did not match the name of the job would work when running dagster locally but not when using Dagster+.
- [components] Fixed a bug that caused errors when using the
DbtProjectComponent,FivetranAccountComponent, and similar state-based components in k8s deployments due to a missingStateStorageobject in context. - [dagster-omni] Added a dependency on
python-dateutiltodagster-omni. (Thanks, @bollwyvl!)
1.11.15 (core) / 0.27.15 (libraries)
New
- All sequences are now supported in
AssetKey.with_prefix. (Thanks, @aksestok!) - [ui] Introduce new navigation, with main navigation items previously in top navigation now in a collapsible left nav.
- [ui] Improve loading performance of Runs page.
- [dagster-databricks] Add support for
notebook_taskinPipesDatabricksClient. (Thanks, @SoerenStahlmann!)
Bugfixes
- Fixed an issue where
fetch_row_countsandfetch_column_metadatado not execute in the same working directory as the underlying dbt command. - Fixed a bug with
AutomationCondition.execution_failedthat would cause it to be evaluated asTruefor an unpartitioned asset in cases where the latest run failed, but the asset itself materialized successfully before that failure. - Unrelated resource keys are now no longer included in the run config schema for subselections of assets.
- Ignored nodes are properly excluded when generating run config for an implicit asset job
- Invalid UTF-8 in stderr compute logs are now handled gracefully. (Thanks, @2bxtech!)
- [ui] Fix top nav rendering for Plus users.
- [dagster-celery] Fix Celery executor ignoring pools for ops. (Thanks, @kkanter-asml!)
- [dagster-dbt] Fixed issue that made custom template vars unavailable when specifying them for the
cli_args:field of theDbtProjectComponent. - [dagster-cloud-cli] Fixed an issue where deploying multiple serverless code locations or code locations with a custom project directory would sometimes fail with an "The dagster package dependency was expected but not found." error.
Documentation
- Fixed broken social media link in docs. (Thanks, @MandyMeindersma!)
Dagster Plus
- [ui] Fix home page performance for users with large numbers of automations and jobs.
- [ui] Fix a sporadic JavaScript error that can crash the page when loading insights charts.
1.11.14 (core) / 0.27.14 (libraries)
New
UnionTypes(e.g.Foo | Bar) are now supported inConfigurableResources. (Thanks, @DominikHallab!)- Added an
output_metadataparameter tobuild_output_context(Thanks, @zyd14!) ResolvedAssetSpecand related resolvers now support setting thefreshness_policyfield.dagster-dbt project prepare-and-package --components .will no longer attempt to load components outside ofDbtProjectComponent, preventing errors when attempting to run this command in environments that do not have the necessary env vars set for other components.click<8.2upper bound has been removed- [dagster-airbyte][dagster-fivetran][dagster-powerbi][dagster-sling][dagster-dlt] The
AirbyteWorkspaceComponent,FivetranAccountComponent,PowerBIWorkspaceComponent,SlingReplicationCollectionComponent, andDltLoadCollectionComponentcomponents have been updated to include aget_asset_specmethod that can be overridden by subclasses to modify translation behavior. - [dagster-airbyte][dagster-fivetran] The
AirbyteWorkspaceComponentandFivetranAccountComponenthave been updated to include anexecute()method that can be overridden by subclasses to modify runtime execution behavior. - [dagster-airbyte] The
AirbyteWorkspaceComponentno longer binds an"io_manager"or"airbyte"resource, meaning it can be used in tandem with other definitions that use those keys without causing conflicts. - [dagster-dbt] The
DbtProjectComponentnow supports overridingget_asset_specandget_asset_check_specmethods when subclassing. - [dagster-fivetran] The
FivetranAccountComponentno longer binds an"io_manager"or"fivetran"resource, meaning it can be used in tandem with other definitions that use those keys without causing conflicts.
Bugfixes
- Fixed a bug that would cause errors when instantiating a
TimeWindowPartitionsDefinitionwith a monthly schedule and the default day offset. - [ui] The
Materializebutton in the lineage view is now disabled while the view is updating to avoid inconsistencies when launching runs. - [ui] Fixed an issue where the "View error" link in the popup that displayed when a backfill failed to launch was very difficult to see.
- [dagster-dbt] Fixed issue where the
selectandexcludeparameters to@dbt_assetswould be ignored when generatingAssetCheckSpecs(Thanks, @nathanskone!) - [dagster-powerbi] Previously, assets generated for semantic models would have a kind tag with an invalid space character (
"semantic model"). Now, they have the kind tag"semantic_model". - [dagster-sling] Resolved issue that caused the substring "INF" to be stripped from all logs.
1.11.13 (core) / 0.27.13 (libraries)
New
- [dagster-deltalake,dagster-deltalake-polars] BREAKING CHANGE - we now support
deltalake>=1.0.0fordagster-deltalakeanddagster-deltalake-polarsand we will no longer supportdeltalake<1.0.0moving forward. End user APIs remain the same for both libraries. - [dagster-databricks] Spark Python and Python Wheel tasks are now supported in
PipesDatabricksServerlessClient. - [dagster-dbt]
dagster-dbt project prepare-and-package --components .will no longer attempt to load components outside ofDbtProjectComponent, preventing errors when attempting to run this command in environments that do not have the necessary env vars set for other components. - [dg] adds
dg api secret listanddg api secret get
Bugfixes
- Fixed a bug in the backfill daemon where an asset backfill with CANCELING or FAILING status could become permanently stuck in CANCELING or FAILING if the partitions definitions of the assets changed.
- Fixed an issue introduced in the 1.11.12 release where auto-complete in the Launchpad for nested fields stopped working.
- Fixed an issue where backfills would fail if a TimeWindowPartitionsDefinition's start date was changed in the middle of the backfill, even if it did not remove any of the targeted partitions.
- [ui] Fixed the link to "View asset lineage" on runs that don't specify an asset selection.
1.11.12 (core) / 0.27.12 (libraries)
New
- [ui] Allow searching across code locations with
*wildcard in selection inputs for jobs and automations. - [ui] Added
AutomationCondition.all_new_executed_with_tags, which allows automation conditions to be filtered to partitions that have been materialized since the last tick from runs with certain tags. This condition can be used to require or prevent certain run tags from triggering downstream declarative automation conditions.
Bugfixes
- In
dagster==1.11.1,partitioned_configwas unintentionally removed from the public exports of the top-leveldagsterpackage. This has been fixed. - Avoid adding trailing whitespace in env vars that use dot notation in components. Thanks @edgarrmondragon!
- [dagster-airbyte] Fix the pagination url issue for the Airbyte API. Thanks @stevenayers!
- [dagster-dbt] Fixed an issue with the DbtCloudWorkspaceClient that would cause errors when calling
trigger_job_runwith no steps_override parameter.
Dagster Plus
- [ui] Add Cost insights.
- [ui] For users who have inherited org roles from a team, show those roles when editing the user.
- [ui] Fix per-asset and per-job insights graphs.
1.11.11 (core) / 0.27.11 (libraries)
New
anthropic,mcp, andclaude-code-sdkdependencies ofdagster-dg-cliare now under a separateaiextra, allowingdagster-dg-clito be installed without these dependencies.- Added
AutomationCondition.all_new_updates_have_run_tagsandAutomationCondition.any_new_update_has_run_tags, which allows automation conditions to be filtered to partitions that have been materialized since the last tick from runs with certain tags. This condition can be used to require or prevent certain run tags from triggering downstream declarative automation conditions. These conditions are similar toAutomationCondition.executed_with_tags, but look at all new runs since the most recent tick instead of just looking at the latest run.
Bugfixes
- Fixed a bug which would cause steps downstream of an asset with
skippable=Trueand a blocking asset check to execute as long as the asset check output was produced, even if the asset output was skipped. - When a backfill fails, it will now cancel all of its in-progress runs before terminating.
- Fixed an issue that would cause trailing whitespace to be added to env vars using dot notation (
{{ env.FOO }}) when listing the env vars used by a component. (Thanks, @edgarrmondragon!) - Fixed issue that would cause errors when using multi to single partition mappings with
DbIOManagers. - [ui] Fixed issue with the "Report materialization" dialog for non-partitioned assets.
- [ui] Typing large YAML documents in the launchpad when default config is present is now more performant.
- [ui] Fixed an issue where setting a FloatMetadataValue to float('inf') or float('-inf') would cause an error when loading that metadata over graphql.
- [ui] The "Clear" button in the dimension partition text input for multi-partitioned assets now clears invalid selections as expected.
- [dagster-dbt] Fixed an issue with the
DbtCloudWorkspaceClientthat would cause errors when callingtrigger_job_runwith nosteps_overrideparameter.
1.11.10 (core) / 0.27.10 (libraries)
New
- Added
inline-componentcommand to the publicly available scaffold commands in the Dagster CLI. - Added a new
require_upstream_step_successconfig param to all executors. If{"step_dependency_config": {"require_upstream_step_success": False}}is set, this will allow downstream steps to execute immediately after all required upstream outputs have finished, even if the upstream step has not completed in its entirety yet. This can be useful particularly in cases where there are large multi-assets with downstream assets that depend on only a subset of the assets in the upstream step. - The
logsForRun resolvers andeventConnection resolvers in the Dagster GraphQL API will now apply a default limit of 1000 to the number of logs returned from a single graphql query. Thecursor field in the response can be used to continue iterating through the logs for a given run. - [dagster-airbyte]
@airbyte_assetsandAirbyteWorkspaceComponent(previouslyAirbyteCloudWorkspaceComponent) now support Airbyte OSS and Enterprise.
Bugfixes
- Fixed an issue where the
dagster_dg_clipackage failed to import when using Python 3.9. - Fixed an issue with
AutomationCondition.eager()that could cause runs for materializable assets to be launched at the same time as an upstream observable source asset that had an automation condition, even if the upstream observation would not result in a new data version. - Fixed an issue which could, in some circumstances, cause errors during Declarative Automation evaluation after a dynamic partition was deleted.
- Fixed an issue that could cause confusing errors when attempting to supply
attributesconfiguration toComponentsubclasses that did not inherit fromResolvable. - Added a Matillion kind tag, thanks @RobBrownFreeAgent!
- [ui] Fixed an issue where the "Report materialization events" dialog for partitioned assets only worked if the partition was failed or missing.
- [ui] Fixed a browser crash which could occur in the global asset graph.
- [ui] Fixed a bug with the sensor preview behavior that would cause run requests contianing
run_keys that had already been submitted to show up in the preview result. - [dagster-dbt] Fixed an issue that would cause the DbtCloudWorkspace to error before yielding asset events if the associated dbt Cloud run failed. Now, it will raise the error after all relevant asset events have been produced.
- [dagster-dbt] Added the
dbt-coredependency back todagster-dbtas it is still required for the dbt Cloud integration. If bothdbt-coreanddbt Fusionare installed,dagster-dbtwill still prefer usingdbt Fusionby default.
Documentation
- Introduced a new "Post-processing components" guide.
- Fixed incorrect YAML code snippets for alert policies docs page.
- Fixed incorrect chart keys in Helm documentation. Thanks, @charlottevdscheun!
- Fixed incorrect owner tags in Components docs. Thanks, @aaronprice00!
Dagster Plus
- Improved the Dagster+ agent's retry behavior during when it experiences outbound connection timeouts while a code location is being deployed.
1.11.9 (core) / 0.27.9 (libraries)
New
- Subclasses of
Resolvednow support fields of typedict[str, T]. - [ui] Added a new 'arrow' icon to the set of supported kind tags (thanks @aleewen!)
Bugfixes
- Launching a backfill of a non-subsettable multi-asset without including every asset will now raise a clear error at backfill submission time, instead of failing with a confusing error after the backfill has started.
- Fixed an issue where passing in an empty list to the
assetKeysargument of theassetsOrErrorfield in the GraphQL API would return every asset instead of an empty list of assets. - [dagster-dbt] Fixed an issue that would cause the DbtCloudWorkspace to error before yielding asset events if the associated DBT Cloud run failed. Now, it will raise the error after all relevant asset events have been produced.
Dagster Plus
- Serverless pex builds now support pyproject.toml-based packages.
1.11.8 (core) / 0.27.8 (libraries)
New
- A param
exclusionswas added to time window partition definitions to support custom calendars. - The
dagsterlibrary now supportsprotobuf==6.x - [dg]
dg scaffold defs --helpnow shows descriptions for subcommands. - [dg] A new
dg check tomlcommand has been added to validate your TOML configuration files. - [dagster-databricks] The
DatabricksAssetBundleComponenthas been added in preview. Databricks tasks can now be represented as assets and submitted via Dagster. - [dagster-dbt] The DbtProjectComponent now takes an optional
cli_argsconfiguration to allow customizing the command that is run when your assets are executed. - [dagster-dbt] The polling interval and timeout used for runs triggered with the
DbtCloudWorkspaceresource can now be customized with theDAGSTER_DBT_CLOUD_POLL_INTERVALandDAGSTER_DBT_CLOUD_POLL_TIMEOUTenvironment variables. - [ui] Added the ability to filter to failed/missing partitions in the asset report events dialog.
- [ui] A tree view has been added in the Global Asset Lineage.
- [telemetry] Telemetry disclaimer now prints to stderr.
Bugfixes
- Fixed an issue that would require config provided to backfills to contain config for all assets in the code location rather than just the selected ones.
1.11.7 (core) / 0.27.7 (libraries)
New
dgwill now report multiple detected errors in a configuration file instead of failing on the first detected error.- It is now possible to supply run config when launching an asset backfill.
- Updated the root URL to display the Overview/Timeline view for locations with schedules/automations, but no jobs (thanks @dschafer!)
- Added
tzdataas a dependency todagster, to ensure that declaring timezones likeUS/Centralwork in all environments. - [dagster-dg-cli] Updated scaffolded file names to handle consecutive upper case letters (ACMEDatabricksJobComponent → acme_databricks_job_component.py not a_c_m_e_databricks_job_component.py)
- [dagster-dg-cli] Validating
requirements.envis now opt-in fordg check yaml. - [dagster-dbt]
DAGSTER_DBT_CLOUD_POLL_INTERVALandDAGSTER_DBT_CLOUD_POLL_TIMEOUTenvironment variables can now be used to configure the polling interval and timeout for fetching data from dbt Cloud.
Deprecations
- [components] Removed deprecated and non-functional
asset_post_processorsfields fromSlingReplicationCollectionComponentandAirflowInstanceComponent.
1.11.6 (core) / 0.27.6 (libraries)
New
- Allow explicit git
platformselection inlink_code_references_to_git, thanks @chazmo03!
Bugfixes
- Fixed issue causing
AutomationCondition.replaceto not update built-in sub-conditions that did not have an explicit label, thanks @dschafer! - Fixed an issue where assets were considered stubs if they were a stub in any code location.
- Projects using components no longer cause "job definitions changed while uploading" errors on older agent versions.
- [dagster-dbt] Fixed a bug that could cause execution to fail if
enable_code_referenceswas set toTrueon theDagsterDbtTranslatorSettings.
Documentation
- Updated documentation of
dagster.yamlto include thenuxoption, thanks @dwisdom0!
Dagster Plus
- Fix "Create a support ticket" dialog submissions.
1.11.5 (core) / 0.27.5 (libraries)
New
- Static functions on classes decorated with
@template_varcan now optionally accept aComponentLoadContextargument. - [dg] A MCP server is available to expose
dgCLI capabilities to MCP clients. See thedg mcpCLI group for details. - [dagster-dbt] The
dagster-dbtpackage no longer has a dependency ondbt-core. - [dagster-dbt][preview] Users of the dbt Fusion CLI can now use the
dagster-dbtpackage to run dbt commands with no changes to their existing dagster code. This support is still in preview as the format of the log messages produced by the dbt Fusion CLI is still subject to change. Let us know if you notice any incompatibilities. - [dagster-databricks] Added a
PipesDatabricksServerlessClientto support Databricks Serverless jobs with Dagster pipes. - [dagster-databricks] Added additional options for cluster configuration (thanks @jmccartin!)
Bugfixes
- Various bugfixes for backfills that target assets which change their partitions definition mid-backfill.
- [ui] Fixed issue that could cause errors related to the
ObjectMetadataValueclass.
Documentation
- Added docs for using Spark Connect and Databricks Connect with Dagster.
1.11.4 (core) / 0.27.4 (libraries)
New
- Schedules now support specifying a subset of asset checks to execute in a
RunRequest. - [dg] A new
docs integrationscli is available for viewing an index of available integrations. - [ui] Jobs can now be filtered with a selection syntax.
- [dagster-tableau] Dashboards containing hidden sheets are now correctly linked to upstream data sources.
- [dagster-tableau] Tableau sheets and dashboards now produce observation events instead of materialization events when using
refresh_and_pollinside the@tableau_assetsasset decorator.
Bugfixes
- Fixed a set of issues with the asset backfill system that could, in rare cases, cause runs to be kicked off out of order or never be kicked off.
- Fixed issue where additional args passed into a PermissiveConfig object could not be accessed via dot notation (thanks @CarlyAThomas and @BoLiuV5!)
- Duplicate definitions are no longer incorrectly created when including jobs for schedules & sensors when loading from a
defsfolder. - [components] Fixed an incorrect import being generated when scaffolding a component in Python. (thanks, @ajohnson5!)
- [dg] when assets are selected via
--assets, other definitions types will no longer be displayed.
Documentation
- Fixed typo in the
polars.mdexample doc (thanks @j1wilmot!) - Fixed a typo in the ETL tutorial docs (thanks @yumazak!)
1.11.3 (core) / 0.27.3 (libraries)
New
-
Introduced
AssetExecutionContext.load_asset_value, which enables loading asset values from the IO manager dynamically rather than requiring asset values be loaded as parameters to the asset function. For example:@dg.asset(deps=[the_asset])
def the_downstream_asset(context: dg.AssetExecutionContext):
return context.load_asset_value(dg.AssetKey("the_asset")) -
Expose asset_selection parameter for
submit_job_executionfunction in DagsterGraphQLClient, thanks @brunobbaraujo! -
Large error stack traces from Dagster events will be automatically truncated if the message or stack trace exceeds 500kb. The exact value of the truncation can be overridden by setting the
DAGSTER_EVENT_ERROR_FIELD_SIZE_LIMITenvironment variable. -
Added
databento,ax, andbotorchkind tags, thanks @aleewen and @CompRhys! -
[dagster-k8s] Added the option to include
ownerReferencess to k8s executor step jobs, ensuring that the step job and step pod are properly garbage collected if the run pod is deleted. These can be enabled by setting theenable_owner_referencesflag on the executor config. -
[components] Added
dg list component-treecommand which can be used to visualize the component tree of a project. -
[components] Added the ability to reference, load, and build defs for other components in the same project. In YAML, you may use the
load_component_at_pathandbuild_defs_at_pathfunctions:type: dagster.PythonScriptComponent
attributes:
execution:
path: my_script.py
assets:
- key: customers_export
deps:
- "{{ load_component_at_path('dbt_ingest').asset_key_for_model('customers') }}"
Bugfixes
- [components] Python component instances are now properly loaded from ordinary Python files.
- Fixed an issue that could cause asset backfills to request downstream partitions at the same time as their parent partitions in rare cases.
- Fixed a bug that could cause
@graph_assets to not properly apply theAllPartitionMappingorLastPartitionMappingto dependencies, thanks @BoLiuV5! - Fixed a bug that could cause code locations to fail to load when a custom python AutomationCondition was used as the operand of
AutomationCondition.any_deps_match()orAutomationCondition.all_deps_match(). - The
create-dagsterstandalone executable now works on all Linux versions using glibc 2.17 or later. - [ui] Partition tags are now properly shown on the runs page, thanks @HynekBlaha!
- [ui] Using the "Retry from Asset Failure" option when retrying a run that failed after materializing all of its assets will now correctly indicate that there is no work that needs to be retried.
- [ui] The timeline tab on the Overview page now shows runs by sensor when they were launched by an automation condition sensor, instead of showing every row in the same "Automation condition" row.
- [ui] Fixed an issue where filtering to an asset group on the lineage page did not apply the correct repository filter in code locations with multiple repositories.
- [ui] Fixed an issue where asset checks referencing asset keys that did not exist in the asset graph did not appear in the Dagster UI.
- [ui] Fixed occasional crashes of the asset graph on the asset lineage tab.
- [dagster-dbt] The
@dbt_assetsdecorator and associated APIs no longer error when parsing dbt projects that contain an owner with multiple emails.
Documentation
- Fixed typos in the ELT pipeline tutorial, thanks @aaronprice00 and @kevJ711!
- Fixed typos in components docs, thanks @tintamarre!
- Fixed error in Sling docs, thanks @nhuray!
- Updated the
AutomationCondition.replacetype signature to provide callers more information about the returnedAutomationCondition, thanks @dschafer!
Dagster Plus
- Catalog search now uses a similar syntax to the selection syntax for filtering by attribute (eg:
Code location: location->code_location: location.
1.11.2 (core) / 0.27.2 (libraries)
New
- The
dagsterpackage now supports Python 3.13. - [dagster-tableau] Tableau assets can now be subsetted and materialized individually. #31078
- [dagster-snowflake-polars] The new
dagster-snowflake-polarspackage adds aSnowflakePolarsIOManagerthat can be used to read and write Snowflake tables using Polars.
Bugfixes
- [ui] Fixed some cases where strings would be incorrectly middle-truncated.
Documentation
- [dbt] Fixed incorrect reference to
dbt_profiles.ymlin thedagster-dbttutorial (thanks @EFox2413!). - [dbt] Added documentation for the new dbt Cloud integration.
Dagster Plus
- [ui][observe] You can now bulk add/remove assets to/from your favorites.
1.11.1 (core) / 0.27.1 (libraries)
New
dagster definitions validatewill now raise an exception if there are invalid partition mappings between any assets in your asset graph (for example, an upstream and downstream asset with time-based partitions definitions using different timezones).- Performance improvements for run dequeuing when there are many queued runs using pools.
- [ui] For times in the last two days, Dagster UI now shows e.g. "47 hours ago" instead of "2 days ago."
- [ui] Asset checks now show whether they are
blocking. - [dagster-tableau] Tableau workbooks fetched in Dagster can now be filtered and selected using the WorkbookSelectorFn.
Bugfixes
@graphnow correctly allows omitting inputs when the destinations of an input mapping have a default value.@recordclasses no longer create problematic namespace conflicts with the symbol "check."- [ui] Filtering by partition on the Asset Events view now works as expected.
- [ui] Assets without definitions can now be properly wiped in the Asset Catalog.
Documentation
- Added clearer setup instructions for Windows and Linux users to the Contributing documentation, thanks @oohwooh!
- Fixed broken links in the Contributing documentation, thanks @emmanuel-ferdman!
Dagster Plus
- [ui] Fixed an issue that prevented status filtering from working within the selection syntax.
dg & Components
- Fixed an issue where
dg scaffold github-actionswould invoke thedgCLI with outdated parameters for serverless orgs. - [dagster-dlt] Fixed an issue where the default scaffolded dlt load led to an invalid asset key.
1.11.0 (core) / 0.27.0 (libraries)
Major changes since 1.10.0 (core) / 0.26.0 (libraries)
Components — Configurable, reusable building blocks for data pipelines (now stable)
Components, first released as Preview in 1.10.6, have reached Release Candidate status. APIs are stable, fully documented, and are the recommended, production-ready defaults for new Dagster projects.
- Simplified interface: A short YAML block in
defs.yaml, or a lightweightComponentsubclass in Python, lets you spin up arbitrary Dagster definitions (such as assets, resources, schedules, checks, and more), removing boilerplate while keeping every definition type-checked. - Custom components: Subclassing
Componentlets you wrap any internal script or third-party tool behind a strongly-typed interface; get the same autocompletion and docs as first-party integrations. - Pythonic templating: Register variables or helpers with
@template_varso pipeline authors edit parameters directly in YAML without touching Python. Optional inline components keep small bits of Python co-located. - Powerful tooling: High quality errors, strongly-typed schemas, rich CLI support, and auto-generated docs directly in the UI.
- Read the docs: https://docs.dagster.io/guides/build/components/
dg — the everything-CLI for developer experience (now stable)
The dg CLI provides a single surface for scaffolding, local iteration, execution, and static analysis; introduced as Preview in 1.10.6, it has also reached Release Candidate status.
- Scaffolding: Namespaced scaffold commands such as
dg scaffold defs dagster.asset assets.py,dg scaffold component …to quickly generate definitions without boilerplate. - Local development & ad-hoc execution:
dg devspins up local instance with UI;dg launchruns jobs and assets from the CLI. - Introspection & checks:
dg listenumerates definitions;dg checkvalidates YAML and Python code. - Utility bundle:
dg utilsprovides support for Cursor/VSCode schema setup, JSON-schema export, and deep component inspection. - CLI reference: https://docs.dagster.io/api/dg/dg-cli
create-dagster — one-shot project scaffold
create-dagster scaffolds a ready-to-run Dagster project or workspace in one command (pipx, uvx, brew, curl friendly).
create-dagster projectsupersedes thedagster project scaffoldflow with the modernsrc/+defs/layout and a pre-wired localdgCLI, with no active Python environment required.- Docs: https://docs.dagster.io/guides/build/projects/creating-a-new-project
Core Orchestration
- Retry from asset failure with multi‑assets – a new re‑execution option allows rerunning only failed assets in multi-asset steps, rather than all assets within a failed step.
- Checks emitted from ops –
AssetCheckEvaluationobjects can now be yielded from within ops. - Per‑asset hooks –
@assetnow accepts ahooksargument for success/failure callbacks. - Backfill improvements
BackfillPolicyis now GA- Backfills can now use a threadpool for more efficient run submission. By default, the daemon will now use 4 workers.
- Concurrency enhancements – run blocking is now on by default for concurrency pools, preventing oversubscription when scheduling runs.
- FreshnessPolicy — A new
FreshnessPolicyAPI is introduced, replacing the deprecatedFreshnessPolicyAPI (which has been renamed toLegacyFreshnessPolicy). The API is under active development, and will eventually also supersede freshness checks as the primary way of specifying and evaluating asset freshness. For more details, check out the GitHub announcement and the docs.
UI
- Unified asset selection syntax lets you combine lineage traversal, attribute filters, and boolean logic in a single expression; the same syntax powers Alerts, Insights, Saved Selections, the Asset Catalog, and Components YAML. An analogous op-selection syntax is available in the Gantt view of a single run. [docs]
- Redesigned, customizable asset-graph nodes with health overlays and deeper zoom.
- Runs › Backfills consolidates all backfill activity under the Runs page for faster navigation.
Integrations
- Fivetran integration GA: the
FivetranWorkspaceresource is now GA [docs]. - Airflow (Beta): Airflow Component lets you surface Airflow DAGs inside Dagster for mixed-orchestrator observability [docs].
- dbt Cloud (Beta): first-class job launches and lineage capture [docs].
- Apache Iceberg (Preview): Iceberg IOManager writes/reads lake-house tables [docs].
- Integrations Marketplace (Preview): “Integrations” tab to browse first- and third-party integrations natively in Dagster UI (enable via User Settings → “Display integrations marketplace”).
Changes since 1.10.21 (core) / 0.25.21 (libraries)
New
MaterializeResultnow optionally supports avalueparameter. If set, the asset's IOManager will be invoked. You may also optionally annotate your return types with-> MaterializeResult[T]to indicate the specific value type you expect.- Allow importing
FreshnessPolicyfromdagster.deprecated. - Adds a custom error message when importing
FreshnessPolicyfrom thedagstermodule. freshness_policyparameter now used to pass the new freshness policies (InternalFreshnessPolicy) to asset specs, asset decorator, etc.- Removed
@previewfrom@definitions. - [components] Introduce
build_defs_for_component, which can be used to build defs from a component instance outside of adefsfolder. - [components] Removed
@previewfromDefsFolderComponent. - [components] Removed
@previewdecorator fromload_from_defs_folderand enhanced its documentation with detailed usage instructions and examples. - [components] The
asset_post_processorsfield onSlingReplicationCollectionComponentandAirflowInstanceComponentis no longer supported, and has been replaced with the top-levelpost_processorsfield. - [dagster-tableau] Tableau workbooks fetched in Dagster can now be filtered and selected using the WorkbookSelectorFn.
- [dagster-dbt]
dagster-dbtnow supports dbt-core 1.10. - [dagster-dbt] dbt tests with error severity are now modeled as blocking asset checks, ensuring that if a run fails due to a dbt test failure, the connected model is included in a retried run if it is retried using the experimental "Enable retries from asset failure" feature. This change should not result in any behavior changes during execution since the dbt cli already fails the step and any downstream models if dbt tests fail with error severity, but could change the behavior that depends on blocking tests.
- [dagster-sigma] When fetching data from the sigma API, the
SigmaOrganizationresource will now use an exponential backoff strategy in response to getting rate limited instead of immediately failing. - [dagster-sling] Removed
asset_post_processorsonSlingReplicationCollectionComponentand uses genericpost_processingkey at top-level instead. - [dagster-pandera] Adds support for version 0.24.0 of the
panderalibrary todagster-pandera, dropping support for pandera 0.23.1 and below. - [ui] Show whether an asset check is
blocking.
Bugfixes
- [dagster-dlt] Fixed an issue where the default scaffolded dlt load led to an invalid asset key.
- Fixed a bug with
DAGSTER_GRPC_SENSOR_TIMEOUT_SECONDSnot being propagated through from daemon to code servers, resulting in the sensor still timing out at 60 seconds if thedagster code-server startentrypoint was used. - [dagster-sling] Fixed an issue with the
SlingResourcethat could cause values specified withEnvVars to provide the env var name instead of the env var value to the sling replication configuration. - [ui] Fix timestamps on the "Recent events" view on some assets.
- [ui] Fix "View" link color on code location status toasts.
Breaking Changes
DefinitionsandAssetsDefinitionwill now error if they get differentAssetSpecs with the same key.- Renamed
FreshnessPolicytoLegacyFreshnessPolicy.
Deprecations
- [dagster-sling] The
SlingReplicationCollectionComponentis now configured by passingconnectionsdirectly. This means that theslingyaml field and theresourcepython argument are both deprecated, and will be removed in a future release. Theconnectionsfield in yaml now shares a format with Sling'senv.yaml. - [components] The
load_defsentrypoint has been deprecated in favor ofload_from_defs_folder, which takes a single path for a folder to load definitions from rather than a module object. - [components] The no longer recommended
inline-componentsubcommand ofdg scaffold defsis now hidden from --help. - [components]
load_defsis no longer public.
Dagster Plus
- The billing page has been updated to show available plans front-and-center and recommend a plan based on trial usage.
- The trial "days remaining" banner and "choose a plan" CTAs have been re-designed.
1.10.21 (core) / 0.26.21 (libraries)
New
- [dagster-tableau] The
tableau_assetsdecorator is now available to create the asset definitions of all materializable assets in a given Tableau workspace. These assets can be subsetted and materialized using theTableauCloudWorkspace.refresh_and_pollmethod. - [dagster-tableau] The deprecated
get_*_asset_keymethods on theDagsterTableauTranslatorclass have been removed. - [ui] Show tags for a Job on the sidebar of the Job page. #30728
Bugfixes
- Fixed a bug where "falsey" defualt config values were not showing up in the launchpad. This has been fixed for all cases except the empty dictionary.
- Fixed an issue with the new "re-execute from asset failure" functionality that could cause additional steps to be included if the job was previously re-executed from step failure.
- Fixed an issue where the
staleStatusByPartition,staleCausesByPartition, anddataVersionByPartitionfields on the graphqlAssetNodewould fail when called on an asset with dynamic partitions. - [dagster-dbt] Fixed an issue where creating a DagsterDbtTranslator that didn't call the parent class's constructor in its
__init__method would raise an Exception during execution. - [dagster-sling] Removed upper-bound pin on the
slingdependency. - [dagster-sling] Fixed an issue with the
SlingResourcethat could cause values specified withEnvVars to provide the env var name instead of the env var value to the sling replication configuration. - [dagster-fivetran] Introduced a
dagster-fivetran snapshotcommand, allowing Fivetran workspaces to be captured to a file for faster subsequent loading.
Dagster Plus
- [ui] The integrations marketplace (currently behind a feature flag) now allows you to create, edit, and delete private packages.
dg & Components
- Added
FunctionComponent,PythonScriptComponent, andUvRunComponentto make it easier to define arbitrary computations that execute assets or asset checks when invoked. - Weekly and arbitrary time-window partitions can now be provided to the
partitions_defasset customization in YAML. - A clean and informative error message is now printed when an invalid set of parameters is passed to
dg scaffold defs .... - Component asset specs now allow specifying partition definitions through the
partitions_defkey. - The
dgcache is no longer operative, sincedgnow operates in the same python environment as the projects it manipulates. Config options for the cache have been removed. - The
load_defsentrypoint has been deprecated in favor ofload_from_defs_folder, which takes a single path for a folder to load definitions from rather than a module object. - The
asset_post_processorsfield onSlingReplicationCollectionComponentandAirflowInstanceComponentis no longer supported, and has been replaced with the top-levelpost_processorsfield. - Fixed an issue where dg projects using
autoload_defs=truecould not be deployed to Dagster+. - Removed
@previewfromComponent. ComponentLoadContextis now frozen and no longer in preview.Resolvedsubclasses now supportEnumfields.