Changelog
1.12.8 (core) / 0.28.8 (libraries)
New
dg plus deploycommands now support Python 3.13 and Python 3.14.
Bugfixes
- Fixed an issue where the Dagster Helm chart and Dagster+ agent helm chart could no longer deploy using Helm without adding the
--skip-schema-validationflag to the Helm deploy command. Thanks @kang8!
1.12.7 (core) / 0.28.7 (libraries)
New
- Optimized performance of calculating partition keys for time window partitions with exclusions.
timedeltaanddatetimeare now available via thedatetimecontext when rendering components (Thanks, @stevenayers!)FreshnessPolicyis now available via thedgcontext when rendering components. (Thanks, @stevenayers!)- Assets may now be annotated with up to 10 kinds (limit was previously 3).
- Arbitrary resource parameters may now be hidden in the UI by setting
json_schema_extra={"dagster__is_secret": True}on the correspondingFielddefinition in the resource class. - The
dg docscli group has been removed. Theintegrationssubcommand has been moved todg utils integrations. - Bumped the
gqldependency indagster-graphqlto be inclusive of v4 for broader transitive dependency compatibility - [dagster-omni] Fix issue where retries would terminate while asynchronously gathering metadata.
- [dagster-tableau] The value of resource parameter
TableauWorkspace.connected_app_secret_valueis now hidden in the UI. - [dagster-tableau] Updated extraction logic to handle hidden sheets. The materializable data sources connected to these sheets are now successfully detected and included as materializable data assets. (Thanks, @miriamcastel!)
Bugfixes
- Fix an AttributeError when calling
map_asset_specson assets defined using theinsparameter. (Thanks, @Jongwan93!) - Fix an issue where backfill runs that incorrectly created unpartitioned materializations of a partitioned asset, or partitioned materializations of an unpartitioned asset due to incorrect asset business logic would move the backfill into an invalid state. Now, the backfill will detect this case and fail the backfill.
- Fixed an issue with
dg plus deploy refresh-defs-statewhich could cause errors when refreshing state for components that required CLIs that were only available in the project environment. - [dagster-dbt] Fixed issue that could cause errors when emitting events for a dbt Cloud job run.
Dagster Plus
- Dagster Plus Pro users can now create service users. Service users are accounts that can authenticate API requests but that are not tied to any particular human user.
1.12.6 (core) / 0.28.6 (libraries)
New
- All CLI commands under
dagster projecthave been removed.create-dagstershould be used instead. - [ui] Added a new Partitions facet to the Asset Lineage Graph.
- [ui] More details are now displayed for
SINCEconditions in evaluation tables for automation conditions. - [dagster-dbt] Added dbt cloud logs to stdout after the run completes in dbt cloud.
- [dagster-tableau] Improved resilience when fetching Tableau workspace data. The integration now skips individual workbooks that fail to return data and logs a warning, rather than failing the entire operation. (Thanks, @miriamcastel!)
Bugfixes
- Fixed an issue that would cause errors when attempting to create subclasses of
Resolvedthat had fields usingdefault_factoryarguments. - Fixed an issue with
dg plus deploy refresh-defs-statewhich could cause errors when refreshing state for components that required CLIs that were only available in the project environment. - [ui] Fixed Snowflake connection by changing the private key encoding from PEM to DER format. Snowflake requires unencrypted RSA private keys to be in DER format as bytes.
- [dagster-dbt] Updated
DbtCliResourceto use theproject_dirattribute from theDbtProjectinstance rather than passing the entireDbtProjectobject. - [dagster-tableau][dagster-sigma] Fixed bug that would cause templated env vars to not be resolved when specified in yaml.
1.12.5 (core) / 0.28.5 (libraries)
New
- Increased the version of NextJS used by the Dagster webserver and the
dg docs servecommand to15.5.7. While these applications are unaffected by https://nextjs.org/blog/CVE-2025-66478 due to not using React 19, this upgrade ensures that dagster packages will not be flagged for that CVE by vulnerability scanners.
1.12.4 (core) / 0.28.4 (libraries)
New
- CI workflows for Gitlab projects can now be scaffolded using
dg plus deploy configure. - "/" characters are now allowed in concurrency pool names.
- Pod wait timeout for K8sPipeClient can now be specified (Thanks, @abhinavDhulipala!)
- New
kindtag icon for Zendesk (Thanks, @kporter13!) - [dagster-tableau] Added
enable_embedded_datasource_refreshandenable_published_datsource_refreshoptions to theTableauComponent, which allow creating materializable assets for the associated datasource types.
Bugfixes
- Fixed an issue where passing in JSON serializable enums to JsonMetadataValue would sometimes result in an error.
- Fixed an issue that would cause
SensorDefinitionsubclasses (e.g.AutomationConditionSensorDefinition,RunStatusSensorDefinition) to be converted to having the wrongsensor_typeproperty when produced from aComponent. - Fixed an issue where the
Flowerconfig map was included in the Helm chart even whenFlowerwas disabled (Thanks, @LoHertel!) - [dagster-dbt] Fixed a
FileExistsErroron Windows when reloadingdbtproject definitions by ensuring the local project directory creation handles pre-existing directories (Thanks, @Jongwan93!) - [dagster-tableau] Fixed a KeyError that occurred when using
workbook_selector_fnto filter assets. Now dependencies are only accessed if they exist in the workspace data. (Thanks, @miriamcastel!) - [dagster-tableau] Fixed an issue where
workbook_selector_fnwas only applied to the first 100 workbooks. - [dagster-tableau] The workbook is now part of the asset key prefix to avoid naming collisions.
- [dagster-tableau] Fixed an issue where workbook names with dots
.were improperly handled.
Documentation
- Updated
dagster-icebergdocs to include recently-added features. (Thanks, @zyd14!)
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.
1.10.20 (core) / 0.26.20 (libraries)
New
- The
@assetdecorator now supports ahooksargument to allow for functions to be executed on asset success / failure (thanks @brunobbaraujo)! - The log message produced when an asset check is evaluated now includes its pass / fail state.
- The
@multi_asset_checkdecorator now supports thepoolargument. - [dagster-dbt] The
DagsterDbtTranslatorclass now has aget_asset_check_specmethod which can be overridden to customize theAssetCheckSpecsthat are produced for each individual dbt test.
Bugfixes
- Fixed an issue where setting the non-public
blockingattribute on anAssetCheckSpecwould halt execution of the step as soon as any asset check failure was emitted, even if the step still had asset materializations or check evaluations to emit that were not downstream of the failed asset check. Now that this issue has been fixed, theblockingattribute onAssetCheckSpechas been made a public attribute. If you were making use of theblockingattribute on AssetCheckSpec before it was public and relying on the previous behavior, you should exit from your asset evaluation function after emitting an AssetCheckFailure from within your multi-asset in order to halt further execution of the step. - Fixed a bug where
GraphDefinition.to_job()would not work if an op had a custom IO manager key. - Fixed an issue that would cause
.allow()and.ignore()applications to not propagate through.since()automation conditions. - Fixed a bug where assets with cross-location dependencies could sometimes be incorrectly reported as "Unsynced".
- Fixed an issue where
dagster devwas sometimes failing to load code locations with a "Deadline Exceeded" error unless the--use-legacy-code-server-behaviorflag was set. - The backfill daemon can now be configured to use a threadpool executor via helm (thanks @hynekblaha)!
- [dagster-gcp] Added a
google-cloud-bigquery>=1.28.3pin to correctly reflect the lowest compatible version.
Breaking Changes
- [ui] Moved legacy Auto-materialize (global AMP) tab from Overview to Automations.
Dagster Plus
- Fixed an issue where certain rare network conditions could cause steps to hang while uploading compute logs after a step finished.
- [ui] For users with the new Observe UIs enabled, the Asset Health and Resources tabs are no longer shown on the Timeline page.
dg & Components (Preview)
- Fix a bug with
dg check yamlwhere valid component type names were rejected if they were not registered (i.e. visible fromdg check components). dg create-dagsternow warns when scaffolding a project or workspace if it is not the latest version.- The
project.registry_modulesconfiguration can now accept wildcards (e.g.foo_bar.components.*). This will register any module matching the pattern withdg. - The
envYAML function now errors if the specified env var is unset. Default values can be provided as an additional argument:{{ env('MY_ENV_VAR', 'default') }} - defs.yaml files can now specify a component in the module where it is defined, as opposed to just the module where it is exposed in the
dgregistry. - The
PipesSubprocessScriptCollectionComponenthas been removed. - Running dg commands such as
dg check defsanddg devin a project folder that is part of the workspace will now only apply to that project, instead of every project in the workspace. - Scaffolded projects no longer contain a "components" directory or a Python
dagster_dg_cli.pluginentry point. - Scaffolded components can now be placed anywhere within a project module hierarchy.
- The entry point group used by shared libraries exposing custom components to
dghas been renamed fromdagster_dg_cli.plugintodagster_dg_cli.registry_modules(projects no longer need to define an entry point group at all). dg list plugin-moduleshas been renamed todg list registry-modules.dg list defsnow supports configuring output columns with the--columns/-coption.- [dagster-airbyte] Introduced a
AirbyteCloudWorkspaceComponentwhich can be used to pull in Airbyte Cloud connections into Dagster
1.10.19 (core) / 0.26.19 (libraries)
New
- The database table used by the
DbIOManageris now configurable via"table"output (asset) metadata key #30310 - Changed default settings for backfill daemon to
use_threads=True,num_workers=4. Thanks @HynekBlaha! - A new function
build_asset_check_contextcan be used to build asset check contexts for direct invocation. - Changed
Definitions.get_all_asset_specsto only return assets directly passed in as AssetSpecs or AssetsDefinitions. - Removed
selectionargument fromDefinitions.map_asset_specs. If selection is needed use the newDefinitions.map_resolved_asset_specs. Definitions.get_job_defnow warns when it finds an unresolved job or no job.- Changed
Definitions.get_assets_defto return an AssetsDefinition without resolving if it was passed in directly. - [dagster-dbt]
build_schedule_from_dbt_selectionnow supports aselectorargument, allowing you to use yaml-based selectors. - [dagster-k8s] Pods created by the Kubernetes run launcher and executor from Dagster Plus now include the
dagster/deployment-namelabel. - [dagster-pipes] Pipes execution errors are no longer treated as framework errors, meaning they properly invoke RetryPolicies.
- [helm] Backfill daemon configuration now supported. Thanks @HynekBlaha!
- [ui] Show relative start time on runs in run timeline hover lists. #30327
Bugfixes
- [ui] Fixed live updating of asset materialization statuses in asset graph.
dg & Components (Preview)
- Running dg commands like
dg check defsanddg devin a project folder that is part of the workspace will now only apply to that project, instead of every project in the workspace. dg list defsnow supports the--assets/-aoption, to show only assets matching the provided selection.dg list defsnow supports a--pathargument to subset the defs files shown.- The
create-dagster workspacecommand now accepts the same required path argument as thecreate-dagster projectcommand, instead of defaulting to adagster-workspacesubfolder of the current working directory. - The entry point group used by shared libraries exposing custom components to dg has been renamed from
dagster_dg_cli.plugintodagster_dg_cli.registry_modules(projects no longer need to define an entry point group at all). dg list plugin-moduleshas been renamed todg list registry-modules.- Newly scaffolded projects no longer contain a "components" directory or a Python
dagster_dg_cli.pluginentry point. - Newly scaffolded components can now be placed anywhere within a project module hierarchy.
Resolvablesubclasses can now use baredictandlistas field types.- Resolving a
Resolvablesubclass will no longer change empty strings toNone. - Users can define multiple
@definitions-decorated functions in a single module in thedefshierarchy and they are automatically merged and incorporated into the project. - Added
@component_instanceto replace@component. This allows multiple component instances in a python file. - Fixed an issue where
dgcommands would sometimes output extradagster_telemetry_loggerlines to stdout at the end of commands. - Added
@template_varas an alternative approach for defining variables in a templating context.
1.10.18 (core) / 0.26.18 (libraries)
New
BackfillPolicyis now marked as generally available (GA).- Optimized the order of the
@assetdecorator overloads to make custom wrappers around the asset decorator easier. Thanks @jonathanunderwood! - [dagster-slack] Added
get_client()to SlackResource.
Bugfixes
DefinitionsandAssetDefinitionwill now warn if they get differentAssetSpecs with the same key. This will become an exception in 1.11.- Functions that load all definitions from modules like
load_definitions_from_modulesnow handle duplicateAssetSpecs. - Fixed typo in logging. Thanks @eli-b!
- [dagster-dbt] An issue occurring when using dbt selection arguments with a dbt project using saved queries and semantic models has been fixed.
- [dagster-fivetran] Fixed an issue with
load_assets_from_fivetran_instancewhere assets whose asset keys have been customized using a Fivetran translator would lead to an exception.
Documentation
- Fixed grammar issues in GCP docs. Thanks @D1n0!
- Fixed missing docs for
required_resource_keysin@sensor. Thanks @seyf97!
Breaking Changes
DefinitionsandAssetDefinitionwill now warn if they get differentAssetSpecs with the same key. This will become an exception in 1.11.
Dagster Plus
- [dagster-cloud-cli] Added a
--waitto thedagster-cloud job launchcommand that makes it wait until the launched run copmletes. Thanks @stevenayers! - [fix][dagster-cloud-cli] Fixed an issue where the
dagster-cloudcli failed to deploy PEX projects on python 3.12 in certain environments without setuptools already installed.
dg & Components (Preview)
- The
dgCLI is now installed in each project's Python environment instead of as a global tool. If you previously haddginstalled globally and are upgrading, first uninstall the global dg tool (uv tool uninstall dagster-dgorpip uninstall dagster-dg) and adddagster-dg-clias a dependency to each of your projects. Newly scaffolded projects will automatically include thedgCLI going forward. - A new
create-dagsterCLI has been added for scaffolding projects instead of workspaces.uvx create-dagster projecthas replaceddg scaffold project, anduvx create-dagster workspacehas replaceddg scaffold workspace. The commands take identical arguments. - Definitions and component instances are now scaffolded with
dg scaffold defs <scaffolder>instead ofdg scaffold <scaffolder>. - The
component.yamlfile to specify a component instance is now called "defs.yaml". "component.yaml" will remain supported for several weeks, but is deprecated. - The
libfolder in newly scaffolded projects has been renamed to "components". dg scaffold component-typehas been renamed todg scaffold component.dg list pluginshas been renamed todg list plugin-modulesand now outputs only plugin module names, not plugin objects.dg list componentnow lists component types instead of instances.- Exports from
dagster.componentsare now available in the top-leveldagstermodule. - Added
@component_instanceto replace@component, which allows multiple component instances in a python file. - If you type a partial component name for
dg scaffold defs <component>, you will now be prompted with possible matches. - When component classnames are unique, you can now use just the classname as an alias for the fully qualified name when running
dg scaffold defs <component>. dg launchnow supports passing config files through--config/-c.- Added
Component.from_attributes_dictandComponent.from_yaml_pathto help with testing. - Added
dagster.components.testing.component_defsutility to help with testing components. - Scaffolded schedules and sensors in
dgare now loadable by default. dg scaffold defs inline-componentcan now be used to create inline components and corresponding instances.dg list defsnow outputs resources.- [fix] The
dagster-dbtcli flag--componentsflag now correctly findsDbtProjectComponentagain. - [dagster-fivetran] Added a
FivetranAccountComponentwhich can be used to pull in Fivetran connections into Dagster. - [dagster-dlt] The DltLoadCollectionComponent scaffolder no longer attempts to automatically construct loads for the given source and destination type.
- Fixed an issue where components failed to load when using
load_assets_from_airbyte_instanceor other APIs that return aCacheableAssetsDefinition.
1.10.17 (core) / 0.26.17 (libraries)
Bugfixes
- Fixed an issue where an error was displayed in the UI while viewing run logs
- [dagster-dbt] Fixed an issue occurring when using dbt selection arguments with a dbt project using semantic models.
1.10.16 (core) / 0.26.16 (libraries)
New
typing_extensionsis now pinned to>=4.11.0instead of>=4.10.0.- [ui] Viewing an automation condition evaluation now automatically expands the set of applicable sub-conditions.
- [ui] Added the ability to navigate from an automation condition evaluation to upstream automation condition evaluations.
- [ui] Added an asset graph node facet for viewing automation conditions and the most recent evaluation. This can be enabled in the user settings via a feature flag (
Enable faceted asset nodes). - [ui] A new experimental integrations marketplace tab is now available and can be enabled in your user settings via a feature flag (
Display integrations marketplace). It provides easy access to the gallery of dagster-supported plugins.
Bugfixes
- Fixed an issue with the
ExternalNotebookDataRequestGRPC call that would allow it to access files outside of the current directory. - Fixed an issue that would cause
op_tagsset on@observable_source_assets to be dropped from the underlying step context object when executed. - Fixed an issue where
dagster devwould sometimes raise a gRPC error when loading several code locations at once. - Fixed an issue where setting an environment variable to the string "false", "0" or "None" for a dagster config field using a
BoolSourcewould evaluate to True. - Fixed an issue where specifying
executable_pathin a workspace.yaml file to run code locations in a different virtual environment would not correctly inherit the PATH of that virtual environment in the code location. - [dagster-dbt] Fixed an issue causing dbt CLI invocation to fail when materializing assets when
OpExecutionContextwas used as the type hint for the context. - [dagster-deltalake] Corrected the
timeoutproperty data type inClientConfigto be str instead of int (thanks, @edsoncezar16!)
Documentation
- Added additional config fields to the
K8sRunLauncherexample (thanks, @nishan-soni!) - Corrected broken links on the automation landing page (thanks, @briandailey!)
Dagster Plus
- [ui] Alert policy event tags no longer appear red and yellow outside of the policy notification history.
dg & Components (Preview)
- Added suggestions to component model error messages when using built-in models for common classes such as
AssetKeyandAssetSpec. dg list envnow displays whether env vars are configured in each Dagster Plus scope.- Introduced
Resolver.passthrough()to avoid processing fields on a component model. ResolvedAssetKeyis now exported fromdagster.components.dg inithas been removed.dg scaffold projectanddg scaffold workspaceshould be used instead.- Fixed an issue where
dg devfailed with a temporarily file permissions error when running on Windows. Thanks @polivbr!
1.10.15 (core) / 0.26.15 (libraries)
New
- Added a config section to
dagster.yamlto enable submitting backfill runs in a threadpool. - Expanded definition time validation for partition mappings to avoid runtime errors querying asset status.
- [ui][beta] You can now re-execute a run that targeted a multi-asset from the point of asset failure instead of step failure, meaning only assets that failed or were skipped will be re-executed. To enable this option, turn on the
Enable retries from asset failurefeature flag in your user settings. - [ui] Made it easier to select and copy image names for code locations.
- [ui] Added asset lineage navigation within the automation condition evaluation tree.
- [ui] Viewing an evaluation tick now auto-expands the set of applicable automation conditions.
- [ui] Added an asset graph node facet for viewing automation conditions and the most recent evaluation in the global asset graph.
- [dagster-fivetran] The
FivetranWorkspaceresource is now marked as generally available (GA).
Bugfixes
- Changed asset wipes to also wipe associated asset check evaluations.
- [dagster-fivetran] Fixed an issue causing the Fivetran integration to fail when the schema config does not exist for a connector.
Documentation
- Fixed a broken link in the airflow migration docs. Thanks @jjyeo!
- Updated example snippet to include a missing type hint. Thanks @agrueneberg!
Deprecations
- [dagster-fivetran] The
FivetranResourceresource is now deprecated. Use the newFivetranWorkspaceresource instead.
dg & Components (Preview)
- Changed
Scaffolder.scaffoldto have the params object as an attribute of theScaffoldRequestobject instead of a dictionary. This is a breaking change for those who have implemented a custom scaffolder. - Added support for scaffolding resources via
dg scaffold dagster.resources path/to/resources.py. - Added support for the usage of
@definitionsin thedefshierarchy. - Dagster components now include code references by default. When viewing an asset emitted by a component in the asset catalog, this will allow you to jump to the backing
component.yamlfile in your editor. - [dagster-dbt]
DbtProjectComponentfields now properly evaluate templates. - [dagster-sling] Updated the SlingReplicationCollectionComponent from using the
asset_attributesparameter totranslation, in order to match our other integration components. - Fixed an issue where
dg devfailed with a temporary file permissions error when running on Windows. Thanks @polivbr!
1.10.14 (core) / 0.26.14 (libraries)
New
- [dagster-tableau] Refined Tableau integration for API 3.25 or greater.
- [dagster-tableau] Data sources with extracts can now be materialized in Tableau assets created with
build_tableau_materializable_assets_definition. - [ui] Added kinds tag for treasuredata.
- [ui] Add Supabase kind icon.
Bugfixes
- Fixed a bug which could cause an error when calling
MultiPartitionsDefinition.has_partition_key()on invalid keys. - Fixed a bug where the default multiprocess executor would fail runs where the child process for a step crashed, even if a retry policy resulted in a successful retry of that crashed step.
- Fixed a bug with
AutomationCondition.initial_evaluationwhich could cause it to returnFalsefor an asset that went from having a condition, to having no condition at all, back to having the original condition again. - [ui] Fixed an issue which could cause the "Target" field of AutomationConditionSensorDefinitions to render incorrectly when exactly one asset check was defined in a code location.
- [dagster-dbt] Fix
DagsterDbtTranslatorSettings.enable_source_tests_as_checksreturning duplicate asset checks.
Documentation
- Added a sample Dagster+ ECS CloudFormation template which incorporates private subnets.
- Fixed incorrect storage values in the Fargate task section of the AWS deployment guide, thanks @alexpotv!
- Updated log stream docs, thanks @jjyeo!
- Fixed broken code in the configurable resources guide, thanks @nightscape!
Deprecations
dagster.InitResourceContext.dagster_runhas been deprecated in favor ofInitResourceContext.run.
dg & Components (Preview)
- [dagster-k8s] PipesK8sComponent has been added.
- Dagster components no longer change the working directory while they are being loaded. This allows components to store relative paths and ensure that they will still work when accessed outside of the component loading codepath. This change may affect user-defined components that depend on
Path.cwd()oros.getcwd(). Instead, you should use a path relative to the current source file when loading paths in a component, using thecontext.resolve_source_relative_pathmethod (seeresolve_dbt_projectinDbtProjectComponentfor an example). - Added
dagster.jobscaffolder. - [dagster-dbt] The
DbtProjectComponentnow has atranslation_settingsargument for adjustingDagsterDbtTranslatorSettings. - [dagster-dbt][fix]
DbtProjectComponentfields now properly evaluate templates. - Fixed docstring for
load_defsentrypoint, thanks @mattgiles!
1.10.13 (core) / 0.26.13 (libraries)
New
- If an unselected asset check is executed during a run, the system will now warn instead of throwing a hard error.
- When evaluating
AutomationCondition.any_deps_matchorAutomationCondition.all_dep_matchwith an allow / ignore specified, an error will no longer be produced if the provided asset selection references an asset key that does not exist. - Added the ability to restrict the list of ports that
dagster devis allowed to use to open subprocesses when running on Windows, by setting theDAGSTER_PORT_RANGEenv var to a string of the form<start>=<end>- for example "20000-30000". - [dagster-aws] The S3 sensor's
get_objectsnow returns an empty list if no new files can be found since thesince_last_modifiedparameter. Thanks @bartcode! - [dagster-dbt]
@dbt_assetsandbuild_dbt_manifest_asset_selectionnow support aselectorargument, allowing you to use yaml-based selectors. - [dagster-k8s] improved run monitoring when running with increased backoff limits. Thanks @adam-bloom!
Bugfixes
- Fixed a bug with
AutomationCondition.initial_evaluationwhich could cause it to returnFalsefor an asset that went from having a condition, to having no condition at all, back to having the original condition again. - Fixed a bug that would cause the
AutomationCondition.any_deps_updated()condition to evaluate toFalsewhen evaluated on a self-dependency. - Fixed a bug in the
quickstart_awsexample. Thanks @Thenkei! - [ui] Fixed navigation between asset tabs by no longer preserving query parameters from one tab to the next.
- [ui] Fixed an issue where the asset graph looked like it was still loading when it wasn't.
Documentation
- Added Scala Spark / Dagster Pipes guide.
dg & Components (Preview)
- [dg] Error message when an invalid configuration file is detected is now shorter and more clear.
- [components] Descriptions and examples have been restored for core models such as
ResolvedAssetSpec.descriptionandexamplesarguments have been added toResolverfor documenting fields on non-pydantic model basedResolvableclasses.
1.10.12 (core) / 0.26.12 (libraries)
New
- [ui] Removed the
By partitiongrouping view for recent events for assets that do not have a definition in the workspace. - [ui] The asset graph now displays asset health information when the new Observe UI feature flag is enabled.
- [ui] A new feature flag allows you to customize the appearance of assets on the asset graph by enabling and disabling individual facets.
- [ui] Fixed a bug that prevented filtering asset events by type.
- [dagster-k8s] K8sPipeClient failures will now include the last 100 lines of the logs of the pod that failed, instead of the full log output.
Bugfixes
- Fixed an issue which caused multi assets that were automatically broken apart in some contexts to remain separated even in cases where this was not necessary to maintain execution dependencies.
- Fixed a bug that would cause multi-assets defined with
can_subset=Trueto error when usingdagster-pipesif not all outputs were emitted. - [ui] Fixed an issue where the asset graph looked like it was still loading when it wasn't.
Documentation
dg & Components (Preview)
dgwill now fail with an error message if it's version is below the minimum supported version for the version ofdagsterin your environment.dgnow checks for new versions and prompts the user to update. The check runs automatically atdgstartup once per day.dgwill now emit a warning prompting the user to reinstall the package if it detects an entry point in project metadata that does not show up when running indg list plugins.dg list defsnow collapses long system stacktraces #29507- Added
dagster.multi_assetscaffolder - Added
dagster.asset_checkscaffolder - Fixed a bug where
dg list defswould crash if anything was written to stdout while loading a project's definitions. - The default location for the
dguser config file on Unix has been moved from~/.dg.tomlto~/.config/dg.toml.~/.configcan be overridden by setting$XDG_CONFIG_HOME. - Cache deserialization errors are now ignored. Previously, when the
dgcontents of the cache were in an outdated format,dgcould crash. Now it will just rebuild the cache. - The Components ETL Pipeline Tutorial now supports users of both
pipanduv. - The
dgCLI will now emit a warning if you are using "active" mode for your project python environment, there is a virtual environment at<project_root>/.venv, and the activated venv is not<project_root>/.venv - A new
dgsettingcli.suppress_warningsis available. This takes a list of warning types to suppress. - Added a warning message to inform users they need to install their project package when skipping automatic environment setup.
- Changed configuration of project Python environments. The
tool.dg.project.python_environmentpreviously accepted a string,"active"or"persistent_uv". Now it accepts a table with one of two keys:{active = true}: equivalent of previous"active"{uv_managed = true}: equivalent of previous"persistent_uv"
- Changed the default python environment for newly scaffolded projects to
tool.dg.project.python_environmentto{active = true}. This means by default, no virtual environment oruv.lockwill be created when scaffolding a new project (viadg initordg scaffold project). You can pass--python-environment uv_managedfor the old behavior. - Removed the
--skip-venvflag ondg scaffold projectanddg init. - The
dagster_componentspackage has been merged intodagsterand use of thedagster-componentspackage has been deprecated.dagster-componentswill remain as a stub package for the next few weeks, but code should be updated to import fromdagster.componentsinstead ofdagster_components. - [dagster-dbt] the
dagster-dbt project prepare-and-packagecli now supports--componentsfor handlingDbtProjectComponent - [dagster-dbt]
DbtProjectComponenthas been reworked, changing both the python api and the yaml schema.dbthas been replaced withprojectwith a slightly different schema, andasset_attributeswithtranslation.
1.10.11 (core) / 0.26.11 (libraries)
New
- [ui] Runs launched from the Dagster UI get a
dagster/from_ui = truetag, making it easy to filter for them. - [ui] The run page now shows the number of log levels selected as well as the number of log levels available.
- Added
AirflowFilterAPI for use withdagster-airlift, allows you to filter down the set of dags retrieved up front for perf improvements.
Bugfixes
- [ui] Fixed a bug that prevented filtering asset events by type.
- Fixed a bug that would cause multi-assets defined with
can_subset=Trueto error when usingdagster-pipesif not all outputs were emitted. - [dagster-dbt] the
state_pathargument toDbtCliResourcenow resolves relative to the project directory as documented. - [dagster-k8s] Made reliability improvements to PipesK8sClient log streaming when transient networking errors occur. The default behavior of the PipesK8sClient is now to reconnect to the stream of logs every hour (this value can be overridden by setting the
DAGSTER_PIPES_K8S_CONSUME_POD_LOGS_REQUEST_TIMEOUTenvironment variable) and to retry up to 5 times if an error occurs while streaming logs from the launched Kubernetes pod (this value can be overridden by setting theDAGSTER_PIPES_K8S_CONSUME_POD_LOGS_RETRIESenvironment variable.) - [dagster-dbt] Fixed a bug where dbt jobs would fail due to unparseable logs causing errors in
DbtCliInvocation.stream_raw_events. (Thanks @ross-whatnot!)
Dagster Plus
- [ui] It is now possible to roll back a code location to a version that had previously been in an errored state.
dg & Components (Preview)
- The
dgCLI will now emit a warning if you are using "active" mode for your project python environment, there is a virtual environment at<project_root>/.venv, and the activated venv is not<project_root>/.venv - A new
dgsettingcli.suppress_warningsis now available. This takes a list of warning types to suppress. - Changed configuration of project Python environments. The
tool.dg.project.python_environmentpreviously accepted a string,"active"or"persistent_uv". Now it accepts a table with one of three keys: -{active = true}: equivalent of previous"active"-{uv_managed = true}: equivalent of previous"persistent_uv" - Changed the default python environment for newly scaffolded projects to
tool.dg.project.python_environmentto{active = true}. This means by default, no virtual environment oruv.lockwill be created when scaffolding a new project (viadg initordg scaffold project). You can pass--python-environment uv_managedfor the old behavior. - Removed the
--skip-venvflag ondg scaffold projectanddg init. - Fixed a bug where new projects scaffolded with
dg scaffold projectwere lackingdagsteras a dependency. - The "Creating a library of components" guide has been replaced by a new and more general "Creating a
dgplugin" guide. - The arguments/options of the
dg initcommand have changed. You may pass.as an argument to initialize a project/workspace in the CWD. Seedg init --helpfor more details. - The
dagster-componentspackage (which was converted to a stub package in the last release) is no longer being published. Alldagster-componentsfunctionality is now part ofdagster. - Projects should now expose custom component types under the
dagster_dg.pluginentry point group instead ofdagster_dg.library.dagster_dg.librarysupport is being kept for now for backcompatibility, but will be dropped in a few weeks. - Fixed formatting of line added to
project/lib/__init__.pywhen scaffolding a component type. - The
dg env listcommand is nowdg list env - The
dg plus env pullcommand is nowdg plus pull env. - The
dg list component-typecommand has been removed. There is a newdg list pluginswith output that is a superset ofdg list component-type. - The
dguser config file on Unix is now looked for at~/.dg.tomlinstead of~/dg.toml. - [dagster-dbt]
DbtProjectComponenthas been reworked, changing both the python api and the yaml schema.dbthas been replaced withprojectwith a slightly different schema, andasset_attributeswithtranslation.
1.10.10 (core) / 0.26.10 (libraries)
New
- A new
blockingparameter has been added tobuild_last_update_freshness_checksandbuild_time_partition_freshness_checks. - The default byte size limit for gRPC requests and responses is now 100MB instead of 50MB. This value can be adjusted by setting the
DAGSTER_GRPC_MAX_RX_BYTESandDAGSTER_GRPC_MAX_SEND_BYTESenvironment variables on the gRPC client and server processes. - Added a new
Definitions.map_asset_specsmethod, which allows for the transformation of properties on any AssetSpec or AssetsDefinition objects in theDefinitionsobject which match a given asset selection. Definitions.validate_loadableanddagster definitions validatewill now raise an error on assets with invalid partition mappings, like aTimeWindowPartitionMappingbetween two time-based partitions definitions with different timezones. Previously, these invalid partition mappings would not raise an error until they were used to launch a run.- [dagster-k8s] Reliability improvements to
PipesK8sClientlog streaming when transient networking errors occur. The default behavior of thePipesK8sClientis now to reconnect to the stream of logs every 3600 seconds (this value can be overridden by setting theDAGSTER_PIPES_K8S_CONSUME_POD_LOGS_REQUEST_TIMEOUTenvironment variable) and to retry up to 5 times if an error occurs while streaming logs from the launched Kubernetes pod (this value can be overridden by setting theDAGSTER_PIPES_K8S_CONSUME_POD_LOGS_RETRIESenvironment variable.)
Bugfixes
- Fixed an issue where run monitoring sometimes didn't fail runs that were stuck in a
NOT_STARTEDstatus instead of aSTARTINGstatus. - Fixed an issue where Dagster run metrics produced large amounts of error lines when running in containers without a CPU limit set on the container.
- Fixed an issue where using partial resources in Pydantic >= 2.5.0 could result in an unexpected keyword argument TypeError. (Thanks @HynekBlaha!)
- Fixed an issue with new
AutomationCondition.executed_with_tags()that would cause thetag_keysargument to not be respected. Updated the display name ofAutomationCondition.executed_with_tags()to contain the relevant tag_keys and tag_values. - [ui] Fixed a bug preventing filtering on the asset events page.
- [ui] Fix custom time datepicker filter selection for users with custom Dagster timezone settings.
- [dagster-fivetran] Fixed a bug causing the Fivetran integration to fetch only 100 connectors per destination.
- [dagster-fivetran] Paused connectors no longer raise an exception in
FivetranWorkspace.sync_and_poll(...). Instead, they skip and a warning message is logged. - [dagster-fivetran] Fixed an issue where new runs of code locations using Fivetran assets would sometimes raise a "Failure condition: No metadata found for CacheableAssetsDefinition" error if the run was started immediately after a new version of the code location was deployed.
- [dagster-cloud] Reliability improvements to the
dagster-cloud job launchcommand when launching runs targeting large numbers of assets or asset checks.
Dagster Plus
Fixed an issue with the identification of the base repository URL the DAGSTER_CLOUD_GIT_URL. The raw URL is now exposed as DAGSTER_CLOUD_RAW_GIT_URL.
dg & Components (Preview)
- The
dagster_componentspackage has been merged intodagster. All symbols exported fromdagster_componentsare now exported bydagster. - Projects should now expose custom component types under the
dagster_dg.pluginentry point group instead ofdagster_dg.library.dagster_dg.librarysupport is being kept for now for backcompatibility, but will be dropped in a few weeks. Component.get_schemahas been renamed toComponent.get_model_cls. Override that instead to customize the frontend of your component.Component.get_schemawill continue to work for the time being but will be removed at some point in the future.- Add support for
dg.tomlfiles.dgsettings inpyproject.tomlare set undertool.dg, but indg.tomlthey are set at the top level. Adg.tomlmay be used in place ofpyproject.tomlat either the project or workspace level. dg-scaffolded workspaces now include adg.tomlinstead ofpyproject.tomlfile.- Projects scaffolded using
dg initordg scaffold projectnow follow modern Python packaging conventions, placing the root module in a top-levelsrcdirectory and usehatchlingas build backend rather thansetuptools. - Scaffolding a component type defaults to inheriting from
dagster.components.Modelinstead of getting decorated with@dataclasses.dataclass. - Assets scaffolded using
dg scaffold dagster.assetwill no longer be commented out. - The
dg list component-typecommand has been removed. There is a newdg list pluginswith output that is a superset ofdg list component-type. dg list defsnow includes infomation about asset checks.- Fix formatting of line added to
project/lib/__init__.pywhen scaffolding a component type. - Fixed bug where schedules were displayed in the sensors section of
dg list defs. - Fixed a bug where
dgwould crash when working with Python packages with an src-based layout.
1.10.9 (core) / 0.26.9 (libraries)
Bugfixes
- [ui] Fix custom time datepicker filter selection for users with custom Dagster timezone settings.
dg & Components (Preview)
- Add support for
dg.tomlfiles.dgsettings inpyproject.tomlare set undertool.dg, but indg.tomlthey are set at the top level. Adg.tomlmay be used in place ofpyproject.tomlat either the project or workspace level. dg-scaffolded workspaces now include adg.tomlinstead ofpyproject.tomlfile.dg-scaffolded projects now place the root package in ansrc/directory and usehatchlingas the build backend rather thansetuptools.- Fixed a bug where
dgwould crash when working with Python packages with an src-based layout. dg check yamlnow properly validates component files in nested subdirectories of thedefs/folder.
1.10.8 (core) / 0.26.8 (libraries)
New
- [ui] The Dagster UI now allows you to specify extra tags when re-executing runs from failure from the runs feed re-execute dialog, or by holding shift when clicking Re-execute menu items throughout the app.
- [ui] Performance improvements for loading the partitions page for multi-partitioned assets.
- [ui] Fix link in toast messages that appear when launching backfills.
- [ui] Dagster's UI now allows you to copy run tags as a YAML block from the Tags and Configuration modals.
- [ui] The Dagster Run UI now allows you to view the execution plan of a queued run.
Bugfixes
- The
AutomationCondition.initial_evaluationcondition has been updated to become true for all partitions of an asset whenever the PartitionsDefinition of that asset changes, rather than whenever the structure of the condition changes. - [dagster-fivetran] Fixed an issue where new runs of code locations using fivetran assets would sometimes raise a "Failure condition: No metadata found for CacheableAssetsDefinition" error if the run was started immediately after a new version of the code location was deployed.
- [dagster-fivetran] Fixed an issue where including multiple sets of assets from
build_fivetran_assets_definitionsin a singleDefinitionsobject would result in "duplicate node" errors when launching a run. - [ui] Fixed line charts for colorblind themes.
- [ui] Fixed an issue with querystring parsing that can arise when selecting a large number of items in the selection syntax input.
- [ui] Fixed tag filtering on automations list.
- [ui] Fixed hover state on focused inputs.
- [ui] Fixed an issue with the Run step selection input autocomplete where it would suggest
key:"*substring*"instead ofname:"*substring*". - [ui] Fixed the "View run" link shown when launching runs
Documentation
- Fix a bug in example code for pyspark.
dg & Components (Preview)
- Added the ability to scaffold Python components.
- The
DefsModuleComponenthas been renamed toDefsFolderComponent. - When scaffolding a component, the command is now
dg scaffold my_project.ComponentTypeinstead ofdg scaffold component my_project.ComponentType. - [dagster-dg]
dagster list defswill now read environment variables from a local .env file if present when constructing the definitions. dagster-componentshas been merged intodagsterand use of thedagster-componentspackage has been deprecated.dagster-componentswill remain as a stub package for the next few weeks, but code should be updated to import fromdagster.componentsinstead ofdagster_components.- The
DbtProjectComponenthas been relocated to thedagster-dbtpackage, importable asdagster_dbt.DbtProjectComponent. - The
SlingReplicationCollectionComponenthas been relocated to thedagster-slingpackage, importable asdagster_sling.SlingReplicationCollectionComponent.
1.10.7 (core) / 0.26.7 (libraries)
New
- Applying changes from sensor test results now also applies changes from dynamic partition requests.
- When merging assets from multiple code locations, autogenerated specs are now prioritized lower than customized external asset specs.
- [ui] Allowed using command-click to view a run from the toast message that appears when starting a materialization of an asset.
- [ui] Asset graph can now zoom out a lot more.
- [ui] Added a kind tag for dbt Cloud.
- [dagster-dlt] Added backfill policy to dlt_assets, defaulting to single-run. (Thanks @neuromantik33!)
Bugfixes
- Updated
AutomationCondition.initial_evaluationcondition to become true for all partitions of an asset whenever the PartitionsDefinition of that asset changes, rather than whenever the structure of the condition changes. - Fixed a bug with several integrations that caused data fetched from external APIs not to be properly cached during code server initialization, leading to unnecessary API calls in run and step worker processes. This affected
dagster-airbyte,dagster-dlift,dagster-dbt,dagster-fivetran,dagster-looker,dagster-powerbi,dagster-sigma, anddagster-tableau. - [ui] Fixed an issue with the Run step selection input autocomplete where it would suggest
key:"*substring*"instead ofname:"*substring*". - [ui] Fixed the "View run" link shown when launching runs.
- [ui] Fixed an issue where updating a catalog view caused an infinite loading state.
- Fixed an issue which could cause asset check evaluations emitted from the body of the op to not impact the check status of an asset in the UI.
- Fixed an issue that could cause an asset backfill created by re-executing another backfill from the point of failure to error on the first tick in rare cases.
- Fixed an issue that could cause automation condition evaluations to fail to render in the UI in rare cases.
- [ui] Fixed a regression in the "Cancel Backfill" option for job backfills that have finished queuing runs.
- [ui] Fixed overflow of long runs feed table on backfill page.
- [dagster-dbt] Replaced
@validatorwith@field_validatorin dagster_dbt/core/resource.py to prevent Pydantic deprecation warnings. (Thanks @tintamarre!)
Documentation
- Updated the "Asset versioning and caching" guide to reflect the current Dagster UI and "Unsynced" labels.
- Removed a few repeated lines in documentation on customizing automation conditions. (Thanks @zero-stroke!)
- Fixed example in TableRecord documentation to use the new input format.
Configuration
- [dagster-gcp] Updated Dataproc configuration to the latest version. If necessary, consider pinning your
dagster-gcpversion while you migrate config. Please see the full list of changed fields: https://gist.github.com/deepyaman/b4d562e04fe571e40037a344b7a9937d - [dagster-aws][dagster-spark] Updated Spark configuration to the latest version (3.5.5). If necessary, consider pinning your
dagster-awsand/ordagster-sparkversion while you migrate config. Please see the full list of changed fields: https://gist.github.com/deepyaman/f358f5a70fea28d5f164aca8da3dee04
Dagster Plus
- [ui] Fixed filtering for multiple tags on list view pages, including Automations.
- [ui] Fixed an issue where the urls generated by catalog filtering would remove all filters if loaded directly.
- [ui] Added a warning on the sign-in page indicating that the sign-in and signup flows will be changing soon.
- [ui] Require confirmation when rolling back a code location to a previous version.
dg & Components (Preview)
- Virtual environment detection settings for projects have changed. Previously, the global settings
use_dg_managed_environmentandrequire_local_venvcontrolled the environment used when launching project subprocesses. This is now configured at the project level. Thetool.dg.project.python_environmentsetting takes a value of eitherpersistent_uvoractive.persistent_uvwill be used by default in new scaffolded projects and uses a uv-managed.venvin the project root.activeis the default if notool.dg.project.python_environmentis set, and just uses the active python environment and opts out ofdgmanagement of the environment. - A new base class,
Resolvable, has been added. This can be used to simplify the process of defining a yaml schema for your components. Instead of manually defining a manualResolvedFrom[...]andResolvableModel, the framework will automatically derive the model schema for you based off of the annotations of your class. - Python files with Pythonic Components (i.e. defined with
@component) can now contain relative imports. - The
dg initcommand now accepts optional--workspace-nameand--project-nameoptions to allow scaffolding an initial workspace and project via CLI options instead of prompts. - Added a new
dagster_components.dagster.DefsFolderComponentthat can be used at any level of yourdefs/folder to apply asset attributes to the definitions at or below that level. This was previously nameddagster_components.dagster.DefsModuleComponent.
1.10.6 (core) / 0.26.6 (libraries)
New
- Added a new
AutomationCondition.executed_with_tags()condition that makes it possible to filter for updates from runs with particular tags. AssetCheckEvaluationcan now be yielded from Dagster ops to log an evaluation of an asset check outside of an asset context.- Added the
kindsargument todagster.AssetOut, allowing kinds to be specified in@multi_asset. - [dagster-dbt]
AssetCheckEvaluationsare now yielded fromopsleveragingDbtCliResource.cli(...)when asset checks are included in the dbt asset lineage. - [dagster-sling] The
SlingResource.replicate()method now takes an optionstreamparameter, which allows events to be streamed as the command executes, instead of waiting until it completes (thanks, @natpatchara-w!). - [dagster-graphql] The
DagsterGraphQLClientnow supports anauthkeyword argument, which is passed to the underlyingRequestsHTTPTransportconstructor. - [ui] The asset selection syntax input now allows slashes "/" in the freeform search.
- [ui] The backfill pages now show summary information on all tabs for easier backfill monitoring.
Bugfixes
- Fixed issue with
AutomationCondition.newly_requested()which could cause it to fail when nested withinAutomationCondition.any_deps_match()orAutomationCondition.all_deps_match(). - Fixed a bug with
AutomationCondition.replace()that would cause it to not effectAutomationCondition.since()conditions. - Fixed a bug with several integrations that caused data fetched from external APIs not to be properly cached during code server initialization, leading to unnecessary API calls in run and step worker processes. This affected:
dagster-airbyte,dagster-dlift,dagster-dbt,dagster-fivetran,dagster-looker,dagster-powerbi,dagster-sigma, anddagster-tableau. - Fixed a bug that could cause invalid circular dependency errors when using asset checks with additional dependencies.
- [dagster-fivetran] Loading assets for a Fivetran workspace containing incomplete and broken connectors now no longer raises an exception.
- [ui] Fixed the colorblind (no red/green) theme behavior when in dark mode.
- [ui] The Asset > Partitions page no longer displays an error in some cases when creating dynamic partitions.
- [ui] The Launch and Report Events buttons no longer error if you click it immediately after creating a new dynamic partition.
dg & Components (Preview)
__pycache__files are no longer included in the output ofdg list component. (Thanks @stevenayers!)- When resolving the
depsof anAssetSpecfrom yaml, multi-part asset keys are now correctly parsed. (Thanks @stevenayers!) - The entrypoint group for dg projects has been renamed from
dagster.componentstodagster_dg.library. dg check yamlis now run by default beforedg devanddg check defs.
1.10.5 (core) / 0.26.5 (libraries)
New
async def yield_for_executionis now supported onConfigurableResource. Anevent_loopargument has been added to context builders to support direct execution.dagster devdeduplicates stacktraces when code locations fail to load, and will by default truncate them to highlight only user code frames.- Improved error message experience for resources expecting an env var which was not provided.
- [ui] An updated asset selection syntax is now available in the asset graph, insights, and alerts. The new syntax allows combining logical operators, lineage operators, and attribute filters.
- [dagster-polars] The minimal compatible
deltalakeversion has been bumped to0.25.0; thePolarsDeltaIOManageris now using therustengine for writing DeltaLake tables by default.
Bugfixes
- Fixed a bug with AutomationCondition.replace() that would cause it to not effect
AutomationCondition.since()conditions. - Fixed a bug that could cause invalid circular dependency errors when using asset checks with additional dependencies.
- Fixed an issue in Dagster OSS where failed runs of multiple partitions didn't update those partitions as failed in the Dagster UI or trigger failure automation conditions.
- Fixed an issue where
dagster devwould fail to load code that took more than 45 seconds to import unless the--use-legacy-code-server-behaviorflag was used. - [dagster-airbyte] Fixed an issue that caused the group name of assets created using
build_airbyte_assets_definitionsfunction to error when attempting to modify the default group name. - [dagster-fivetran] Fixed an issue that caused the group name of assets created using
build_fivetran_assets_definitionsfunction to error when attempting to modify the default group name.
1.10.4 (core) / 0.26.4 (libraries)
New
- [ui] The asset overview tab for a partitioned asset now shows metadata and schema of the most recent materialization, not today's partition.
- [ui] In run logs, asset materialization and observation events now show the output partition as well as the asset key.
- [ui] The backfills view has moved to Runs > Backfills and is no longer available on the Overview tab.
- [ui] Pool event information from a run now links to the pool configuration page.
- Added support for passing
tagsto the createdRunRequestwhen usingbuild_sensor_for_freshness_checks(). - [dagster-gcp] The
PickledObjectGCSIOManagernow replaces the underlying blob when the same asset is materialized multiple times, instead of deleting and then re-uploading the blob. - [docs] Added docs covering run-scoped op concurrency.
- [dagster-fivetran] Fivetran connectors fetched in Dagster can now be filtered and selected using the ConnectorSelectorFn.
Bugfixes
- Fixed a bug where if a run was deleted while the re-execution system was determining whether the run should be retried an error was raised. Now, if a run is deleted while the re-execution system is determining whether the run should be retried, the run will not be retried.
- [ui] Fixed an issue where assets with automation conditions wouldn't show the jobs/sensors/schedules targeting them.
- [ui] Steps properly transition to failed in the Run gantt chart when resource initialization fails.
1.10.3 (core) / 0.26.3 (libraries)
New
- Added links from pool info in run event logs to the respective pool configuration pages.
- Added queued run information on the pool info page, even if the pool granularity is set to
run. - [ui] Added information about asset partitions that fail to materialize due to run cancellations to the asset partition detail page.
- [ui] Added two new themes for users with reduced sensitivity to red and green light.
- [ui] Added Not Diamond icon for asset
kindstag. (Thanks @dragos-pop!) - [ui] Added Weaviate icon for asset
kindstag. (Thanks @jjyeo!) - [ui] Made Alerts page visible to users with Viewer roles.
- [dagster-postgres] Removed the cap on
PostgresEventLogStorageQueuePoolby settingmax_overflowto-1. (Thanks @axelwas!)
Bugfixes
- Fixed a bug where a sensor emitting multiple
RunRequestswith the same run key within a single tick would cause two runs with the same key to be executed. Now, only the first run will be executed. (Thanks @Gw1p!) - Fixed a bug where run step selections were not affecting which pools limit a given run.
- Fixed an issue where seeding the random number generator during code import or when initializing a resource could cause every step to write to the same stdout or stderr key.
- [ui] Fixed an issue where certain jobs weren't showing the assets they targeted.
- Asset backfills will now move into a
CANCELEDstate instead of aFAILUREstate when not every requested partition has been marked as materialized or failed by the backfill. - [dagster-dbt] Fixed a bug breaking
packaged_project_dirsince supportingprofiles_dirinDbtProject. - Fixed an issue with
DbIOManagersbeing unable to process subclasses of handled types. - [ui] Preserved asset selection filters when navigating folders in the asset catalog.
- [ui] Corrected PostgreSQL SVG icon for asset
kindstag. (Thanks @dragos-pop!) - [ui] Fixed an issue that caused Markdown with code blocks in languages not supported for syntax highlighting to crash the page.
- Fixed an issue where asset backfills included failed partitions in the in-progress list in logging output.
Documentation
- Fixed broken image links in quickstart examples. (Thanks @stevenayers!)
- [dagster-dbt] Made several fixes to the "Using dbt with Dagster" page. (Thanks @jjyeo!)
- Fixed broken link in defining-assets.md. (Thanks @Exlll!)
- Fixed link in CONTRIBUTING.md leading to a 404. (Thanks @Exlll!)
- Fixed typo in managing-code-locations-with-definitions.md. (Thanks @kgeis!)
- Fixed typo in asset-versioning-and-caching.md. (Thanks @petrusek!)
Dagster Plus
- [ui] Enabled setting long-running job alerts in minutes instead of hours.
- [dagster-insights] Fix links to branch deployments in the deployment list UI.
- [dagster-insights] Adjusted the way batching runs from the
create_snowflake_insights_asset_and_schedulesensor using theschedule_batch_size_hrsparameter works to yield a single partition range run instead of individual runs per partition.
1.10.2 (core) / 0.26.2 (libraries)
New
- Turned on run-blocking for concurrency keys / pools by default. For op granularity, runs are dequeued if there exists at least one op that can execute once the run has started. For run granularity, runs are dequeued if all pools have available slots.
- Performance improvements for backfills of large partition sets.
- The prefix of temporary directories created when running a temporary Dagster instance (as with
dagster dev) has been changed fromtmpto.tmp_dagster_home_. (Thanks @chazmo03!) - Added sanitation checks on valid pool names.
- [dagster-aws] Added sample Terraform modules for Dagster deployment on AWS ECS.
- [dagster-dbt] Added pool support for dbt integrations.
- [dagster-dlt] Added pool support for dlt integrations.
- [dagster-sling] Added pool support for sling integrations.
- [dagster-aws] Added AWS RDSResource. (Thanks @shimon-cherrypick!)
- [dagster-mysql] Added MySQLResource. (Thanks @shimon-cherrypick!)
- [dagster-azure] Added Azure Blob Storage Resource. (Thanks @shimon-cherrypick!)
- [ui] Expanding/collapsing groups in the Asset Graph will no longer reset your zoom.
- [ui] Changed the queue criteria dialog to reference pools instead of concurrency keys.
- [ui] The Instance Backfills page is being removed in the upcoming March 6 release in favor of the new Runs > Backfills view.
- [ui] When re-executing a run that is part of a backfill that has completed, Dagster UI notifies you that the re-execution will not update the backfill stats.
- [ui] The backfill actions menu now includes "Re-execute" and "Re-execute from failure", which create new backfills targeting the same partitions, and the partitions which failed to materialize, respectively.
- [ui] The latest asset check evaluation is shown in the Evaluation History tab, and
AssetCheckResultdescriptions are rendered in the table making it easier to publish a summary of check evaluation. - [ui] The Materialize button appears more quickly on asset pages in the Dagster UI.
- [ui] The queue details modal for a run no longer closes as new runs arrive and links to the correct concurrency page.
Bugfixes
- Fixed an issue where if two separate code locations defined the same asset key with an automation condition, duplicate runs could be created by Declarative Automation.
- Fixed the
psycopg2.errors.UndefinedColumndatabase error when trying to set a concurrency key without first having rundagster instance migrate. - Fixed an issue where Declarative Automation sensors in code locations that included source assets referencing assets with automation conditions in other code locations would sometimes cause duplicate runs to be created.
- Fixed a bug in the enforcement of global op concurrency limits.
- Fixed an issue where when using
dagster dev, some changes were not reflected in the UI after pressing the "Reload Definitions" button. - Fixed the issue where a resource initialization error within a sensor definition test incorrectly recommended using
build_schedule_contextinstead ofbuild_sensor_context. - Fixed migration issue where
dagster instance migratewas failing for instances with non-empty concurrency limits tables. - [ui] Fixed an issue where a "Message: Cannot return null for non-nullable field PartitionKeys.partitionKeys." error was raised in the launchpad for jobs with unpartitioned assets.
- [ui] Fixed concurrency link escaping in the
View queue criteriadialog. - [ui] Fixed an issue where the deployment switcher can become permanently "unset" when navigating from Org Settings back to a deployment.
- [ui] Fixed an issue with the traversal operators on the asset graph (
asset++) not including assets connected to the target asset by paths of varying distance.
Dagster Plus
- A setting is available in agent configuration
direct_snapshot_uploads(directSnapshotUploadsin helm) which opts in to a new more efficient scheme for how definitions are handled during code location updates. - Introduced new test utilities
event_loganddagster_eventindagster-cloud-test-infrato facilitate the creation of test data with sensible defaults for EventLogEntry and DagsterEvent objects. - [bigquery-insights][bugfix] Support querying for insights from the configured
execution_projectif defined. - [bigquery-insights][bugfix] When
execution_projectis defined in the dbt profile, fall back to fetching the dataset from the dbt profile'sprojectif the dataset cannot be found in theexecution_project.
1.10.1 (core) / 0.26.1 (libraries)
Bugfixes
- Fixed an issue where runs containing pool-assigned ops without limits set got stuck in the run queue.
- Fixed an issue where a "Message: Cannot return null for non-nullable field PartitionKeys.partitionKeys." error was raised in the launchpad for jobs with unpartitioned assets.
- [ui] Updated "Queue criteria" modal to reference and link to pool concurrency settings pages.
- [ui] The "Queue criteria" modal for a run no longer closes as new runs arrive.
1.10.0 (core) / 0.26.0 (libraries)
New
- Added a new
AutomationCondition.data_version_changed()condition. - [dagster-msteams] Added support for sending messages to PowerAutomate flows using AdaptiveCard formatting.
dagster definitions validateis now less verbose, primarily highlighting load errors.- [ui] Made defunct code locations removable when editing environment variables.
- [ui] Added a warning icon to the Agents item in Deployment settings, indicating when there are no active agents.
- [dagster-tableau] Changed logic to show embedded data sources in case published data sources are not present. Also, pulled more metadata from Tableau. (Thanks @VenkyRules!)
- Added new decorators to reflect our new API lifecycle:
@preview,@betaand@superseded. Also added new annotations and warnings to match these new decorators.
Bugfixes
- [ui] Fixed persistence of the group-by setting in the run timeline view.
- [ui] Fixed timestamped links to asset pages from asset check evaluations in run logs.
- [ui] Fixed excessive rendering and querying on the Concurrency configuration page.
- Fixed the step stats calculations for steps that fail and request a retry before the step starts. This happened if a failure occurred in the step worker before the compute function began execution. This should help with sporadic hanging of step retries.
- Fixed an issue where the Concurrency UI was broken for keys with slashes.
- Fixed an issue with emitting
AssetResultwith ops or multi-assets that are triggered multiple times in the same run. - [dagster-dbt] Fixed a bug introduced in dagster-dbt 0.25.7 that would cause execution to fail when using the
@dbt_assetsdecorator with anio_manager_keyspecified. - [dagster-dbt] Refactored
UnitTestDefinitioninstantiation to address failure to initialize dbt models with unit tests. (Thanks @kang8!) - Fixed issue where
dagster instance migratewas failing for instances with tables having non-empty concurrency limits. - Fixed an issue where Declarative Automation sensors in code locations that included source assets referencing assets with automation conditions in other code locations would sometimes cause duplicate runs to be created.
- Turned on run blocking for concurrency keys/pools by default. For op granularity, runs are dequeued if there exists at least one op that can execute once the run has started. For run granularity, runs are dequeued if all pools have available slots.
- [dagster-dbt] Added pool support.
- [dagster-dlt] Added pool support.
- [dagster-sling] Added pool support.
Documentation
- Corrected docs on managing concurrency.
- Fixed a Markdown link to "assets metadata." (Thanks @rchrand!)
- Fixed a
pip installcommand for Zsh. (Thanks @aimeecodes!)
Breaking Changes
-
The
include_sourcesparam on allAssetSelectionAPIs has been renamed toinclude_external_assets. -
Disallowed invalid characters (i.e. anything other than letters, numbers, dashes, and underscores) in pool names.
-
Changed the default run coordinator to be the queued run coordinator. This requires the Dagster daemon to be running for runs to be launched. To restore the previous behavior, you can add the following configuration block to your
dagster.yaml:run_coordinator:
module: dagster.core.run_coordinator.sync_in_memory_run_coordinator
class: SyncInMemoryRunCoordinator
Deprecations
- [dagster-sdf] Moved the
dagster-sdflibrary to the community-supported repo. - [dagster-blueprints] Removed the
dagster-blueprintspackage. We are actively developing a project, currently named Components, that has similar goals to Blueprints of increasing the accessibility of Dagster. - Removed the
@experimentaldecorator in favor of the@previewand@betadecorators. Also removed annotations and warnings related to the@experimentaldecorator.
Dagster Plus
- Shipped a range of improvements to alerts in Dagster+, including more granular targeting, streamlined UIs, and more helpful content. Stay tuned for some final changes and a full announcement in the coming weeks!
1.9.13 (core) / 0.25.13 (libraries)
Dagster Plus
- Fixed a bug where runs using global op concurrency would raise an exception when claiming a concurrency slot.
1.9.12 (core) / 0.25.12 (libraries)
New
- Adds a top-level argument
poolto asset/op definitions to replace the use of op tags to specify concurrency conditions. - The
dagster definitions validatecommand now loads locations in-process by default, which speeds up runtime. - All published dagster libraries now include a
py.typedfile, which means their type annotations will be used by static analyzers. Previously a few libraries were missing this file. - Adds concurrency pool information in the UI for asset / op definitions that use concurrency pools.
- Optional data migration to improve performance of the Runs page. Run
dagster instance migrateto run the data migration. The migration will update serialized backfill objects in the database with an end timestamp attribute computed by querying the runs launched by that backfill to determine when the last run completed. - Added the ability to distinguish between explicitly set concurrency pool limits and default-set pool limits. Requires a schema migration using
dagster instance migrate. - Moves run queue configuration from its standalone deployment setting into the
concurrencydeployment setting, along with new settings for concurrency pools. - Enabled run granularity concurrency enforcement of concurrency pool limits.
- [dagster-dbt] Specifying a dbt profiles directory and profile is now supported in
DbtProject. - [dagster-dlt]
DagsterDltTranslator.get_*methods have been superseded in favor ofDagsterDltTranslator.get_asset_spec. - [dagster-gcp] Added
PipesDataprocJobClient, a Pipes client for running workloads on GCP Dataproc in Job mode. - [dagster-looker]
DagsterLookerLkmlTranslator.get_*methods have been superseded in favor ofDagsterLookerLkmlTranslator.get_asset_spec. - [dagster-pipes] Dagster Pipes now support passing messages and Dagster context via Google Cloud Storage.
- [ui] Created a standalone view for concurrency pools under the Deployment tab.
- [ui] When launching partitioned assets in the launchpad from the global graph, Dagster will now warn you if you have not made a partition selection.
- [ui] When viewing Runs, allow freeform search for filtering to view runs launched by schedules and sensors.
- [ui] Remove misleading run status dot from the asset events list.
- [ui] Introduce a stepped workflow for creating new Alerts.
Bugfixes
- Fixed an issue where querying for Asset Materialization events from multi-partition runs would assign incorrect partition keys to the events.
- Fixed an issue where partition keys could be dropped when converting a list of partition keys for a
MultiPartitionsDefinitionto aPartitionSubset. - Fixed an issue where the "Reload definitions" button didn't work when using
dagster devon Windows, starting in the 1.9.10 release. - Fixed an issue where dagster could not be imported alongside some other libraries using gRPC with an 'api.proto' file.
- [ui] Fixed an issue where non-
Nonedefault config fields weren't being displayed in the Launchpad view. - [ui] Fixed an issue with the search bar on the Asset partitions page incorrectly filtering partitions when combined with a status filter.
- [ui] Fixed Asset page header display of long key values.
- [ui] Fixed Slack tag in alert creation review step for orgs that have Slack workspaces connected.
- [dagster-dbt] Fixed a bug introduced in
dagster-dbt0.25.7 which would cause execution to fail when using the@dbt_assetsdecorator with anio_manager_keyspecified. - [dagster-databricks] Fixed an issue with Dagster Pipes log capturing when running on Databricks.
Documentation
- Fixed a mistake in the docs concerning configuring asset concurrency tags in Dagster+.
- Added a tutorial for using GCP Dataproc with Dagster Pipes.
Dagster Plus
- Relaxed pins on the 'opentelemetry-api' dependency in the 'dagster-cloud' package to
>=1.27.0to allow usingdagster-cloudwithprotobufversions 3 and 4.
1.9.11 (core) / 0.25.11 (libraries)
Bugfixes
- Fixed an issue where running
dagster devwould fail on Windows machines. - Fixed an issue where partially resolved config with default values were not able to be overridden at runtime.
- Fixed an issue where default config values at the top level were not propagated to nested config values.
1.9.10 (core) / 0.25.10 (libraries)
New
- Added a new
.replace()method toAutomationCondition, which allows sub-conditions to be modified in-place. - Added new
.allow()and.ignore()methods to the booleanAutomationConditionoperators, which allow asset selections to be propagated to sub-conditions such asAutomationCondition.any_deps_match()andAutomationCondition.all_deps_match(). - When using the
DAGSTER_REDACT_USER_CODE_ERRORSenvironment variable to mask user code errors, the unmasked log lines are now written using adagster.maskedPython logger instead of being written to stderr, allowing the format of those log lines to be customized. - Added a
get_partition_key()helper method that can be used on hourly/daily/weekly/monthly partitioned assets to get the partition key for any given partition definition. (Thanks @Gw1p!) - [dagster-aws] Added a
task_definition_prefixargument toEcsRunLauncher, allowing the name of the task definition families for launched runs to be customized. Previously, the task definition families always started withrun. - [dagster-aws] Added the
PipesEMRContainersClientDagster Pipes client for running and monitoring workloads on AWS EMR on EKS with Dagster. - [dagster-pipes] Added support for setting timestamp metadata (e.g.
{"my_key": {"raw_value": 111, "type": "timestamp"}}). - [dagster-databricks, dagster-pipes] Databricks Pipes now support log forwarding when running on existing clusters. It can be enabled by setting
PipesDbfsMessageReader(include_stdio_in_messages=True). - [dagster-polars] Added
rustengine support when writing a Delta Lake table using native partitioning. (Thanks @Milias!)
Bugfixes
- Fixed a bug where setting an
AutomationConditionon an observable source asset could sometimes result in invalid backfills being launched. - Using
AndAutomationCondition.without()no longer removes the condition's label. - [ui] Sensors targeting asset checks now list the asset checks when you click to view their targets.
- [dagster-aws] Fixed the execution of EMR Serverless jobs using
PipesEMRServerlessClientfailing if a job is in theQUEUEDstate. - [dagster-pipes] Fixed Dagster Pipes log capturing when running on Databricks.
- [dagster-snowflake] Fixed a bug where passing a non-base64-encoded private key to a
SnowflakeResourceresulted in an error. - [dagster-openai] Updated
openaikinds tag to be "OpenAI" instead of "Open AI" in line with the OpenAI branding.
Documentation
- [dagster-pipes] Added a tutorial for using Dagster Pipes with PySpark.
1.9.9 (core) / 0.25.9 (libraries)
New
- Added a new function
load_definitions_from_module, which can load all the assets, checks, schedules, sensors, and job objects within a module scope into a single Definitions object. Check out the documentation to learn more. - When using the
DAGSTER_REDACT_USER_CODE_ERRORSenvironment variable to mask user code errors, the unmasked log lines are now written using adagster.redacted_errorsPython logger instead of being written to stderr, allowing the format of those log lines to be customized. - The
croniterpackage is now vendored in dagster. - [ui] Corrected the
minstraltypo and updated the Mistral logo for assetkindstag. - [ui] The relevant runs are now shown within the same dialog when viewing details of an automation evaluation.
- [ui] Clicking to view runs with a specific status from the backfill overview now switches to the new backfill runs tab with your filters applied, instead of the global runs page.
- [ui] In the run timeline, all run ids and timings are now shown in the hover popover.
- [ui] Added a new tab on the Runs page that shows a filterable list of recent backfills.
- [dagster-airlift] Added support for Python 3.7.
- [dagster-aws] Added a
task_definition_prefixargument toEcsRunLauncher, allowing the name of the task definition families for launched runs to be customized. Previously, the task definition families always started withrun. - [dagster-azure] Moved azure fake implementations to its own submodule, paving the way for fake implementations to not be imported by default. (Thanks @futurewasfree!)
- [dagster-dlt] The
dagster-dltlibrary is added. It replaces the dlt module ofdagster-embedded-elt. - [dagster-sling] The
dagster-slinglibrary is added. It replaces the Sling module ofdagster-embedded-elt. - [helm] Added support for sidecar containers for all Dagster pods, for versions of K8s after 1.29 (Native Sidecars). (Thanks @hom3r!)
Bugfixes
- Fixed an issue where the tick timeline wouldn't load for an automation condition sensor that emitted a backfill.
- Fixed a bug with asset checks where additional_deps/additional_ins were not being threaded through properly in certain cases, and would result in errors at job creation.
- Fixed a bug where the UI will hit an unexpected error when loading details for a run containing a step retry before the step has started.
- Fixed a bug with load_assets_from_x functions where we began erroring when a spec and AssetsDefinition had the same key in a given module. We now only error in this case if include_specs=True.
- Fixed a bug with
load_assets_from_moduleswhere AssetSpec objects were being given the key_prefix instead of the source_key_prefix. Going forward, when load_specs is set to True, only the source_key_prefix will affect AssetSpec objects. - Fixed a bug with the run queue criteria UI for branch deployments in Dagster Plus.
- [ui] Fixed the "View evaluation" links from the "Automation condition" tag popover on Runs.
- [dagster-aws] Fixed an issue with the EcsRunLauncher where it would sometimes create a new task definition revision for each run if the "task_role_arn" or "execution_role_arn" parameters were specified without the
arn:aws:iam:prefix. - [dagster-aws] Fixed a bug with
PipesEMRServerlessClienttrying to get the dashboard URL for a run before it transitions to RUNNING state. - [dagster-dbt] Fixed an issue where group names set on partitioned dbt assets created using the
@dbt_assetsdecorator would be ignored. - [dagster-azure] Fixed the default configuration for the
show_url_onlyparameter on theAzureBlobComputeLogManager. (Thanks @ion-elgreco!) - [dagster-aws] Fixed an issue handling null
networkConfigurationparameters for the ECS run launcher. (Thanks @markgrin!)
Documentation
- Added example potential use cases for sensors. (Thanks @gianfrancodemarco!)
- Updated the tutorial to match the outlined structure. (Thanks @vincent0426!)
Deprecations
- [dagster-embedded-elt] the
dagster-embedded-eltlibrary is deprecated in favor ofdagster-dltanddagster-sling.
Dagster Plus
- The Alert Policies page will now show a warning if a slack channel for a policy no longer exists.
1.9.8 (core) / 0.25.8 (libraries)
Bugfixes
- Fixed a bug with
load_assets_from_xfunctions where we began erroring when a spec and AssetsDefinition had the same key in a given module. We now only error in this case ifinclude_specs=True. - [dagster-azure] Fixed a bug in 1.9.6 and 1.9.7 where the default behavior of the compute log manager switched from showing logs in the UI to showing a URL. You can toggle the
show_url_onlyoption toTrueto enable the URL showing behavior. - [dagster-dbt] Fixed an issue where group names set on partitioned dbt assets created using the
@dbt_assetsdecorator would be ignored
1.9.7 (core) / 0.25.7 (libraries)
New
- Added new function
load_definitions_from_module, which can load all the assets, checks, schedules, sensors, and job objects within a module scope into a single Definitions object. Check out the documentation to learn more: https://docs.dagster.io/_apidocs/definitions#dagster.load_definitions_from_module. - Previously, asset backfills could only target selections of assets in which all assets had a
BackfillPolicy, or none of them did. Mixed selections are now supported. AssetSpecsmay now contain apartitions_def. DifferentAssetSpecspassed to the same invocation of@multi_assetcan now have differentPartitionsDefinitions, as long ascan_subset=True.- Added the option to use a thread pool to process backfills in parallel.
- Exceptions that are raised when a schedule or sensor is writing to logs will now write an error message to stdout instead of failing the tick.
- Added validation of
titlefor asset backfills (not just for job backfills). - [ui] Design tweaks to the asset Automations tab.
- [ui] Asset selection filtering is now case insensitive.
- [ui] Add Teradata icon for kind tags.
- [ui] When creating and editing alerts, when the form is in an invalid state, display the reason on the disabled buttons.
- [ui] Add Automation history to asset checks.
- [ui] Improve performance of Run page for very long-running runs.
- [dagster-airbyte] The
airbyte_assetsdecorator has been added. It can be used with theAirbyteCloudWorkspaceresource andDagsterAirbyteTranslatortranslator to load Airbyte tables for a given connection as assets in Dagster. Thebuild_airbyte_assets_definitionsfactory can be used to create assets for all the connections in your Airbyte workspace. - [dagster-airbyte] Airbyte Cloud assets can now be materialized using the
AirbyteCloudWorkspace.sync_and_poll(…)method in the definition of a@airbyte_assetsdecorator. - [dagster-airlift] Airflow imports are now compatible with Airflow 1.
- [dagster-aws] new
ecs_executorwhich executes Dagster steps via AWS ECS tasks. This can be used in conjunction withECSRunLauncher. - [dagster-dbt]
dbt-core>=1.9is now supported. - [dagster-dbt] Adds SQL syntax highlighting to raw sql code in dbt asset descriptions.
- [dagster-looker]
load_looker_asset_specsandbuild_looker_pdt_assets_definitionsare updated to accept an instance ofDagsterLookerApiTranslatoror custom subclass. - [dagster-looker] Type hints in the signature of
DagsterLookerApiTranslator.get_asset_spechave been updated - the parameterlooker_structureis now of typeLookerApiTranslatorStructureDatainstead ofLookerStructureData. Custom Looker API translators should be updated. - [dagster-powerbi]
load_powerbi_asset_specshas been updated to accept an instance ofDagsterPowerBITranslatoror custom subclass. - [dagster-powerbi] Type hints in the signature of
DagsterPowerBITranslator.get_asset_spechave been updated - the parameterdatais now of typePowerBITranslatorDatainstead ofPowerBIContentData. Custom Power BI translators should be updated. - [dagster-sigma]
load_sigma_asset_specshas been updated to accept an instance ofDagsterSigmaTranslatoror a custom subclass. - [dagster-sigma] Type hints in the signature of
DagsterLookerApiTranslator.get_asset_spechave been updated - the parameterdatais now of typeUnion[SigmaDatasetTranslatorData, SigmaWorkbookTranslatorData]instead ofUnion[SigmaDataset, SigmaWorkbook]. Custom Looker API translators should be updated. - [dagster-sigma] Added the option to filter to specific workbooks in addition to folders.
- [dagster-sigma] Added the option to skip fetching lineage for workbooks in cases where users want to build this information themselves.
- [dagster-tableau]
load_tableau_asset_specshas been updated to accept an instance ofDagsterTableauTranslatoror custom subclass. - [dagster-tableau] Type hints in the signature of
DagsterTableauTranslator.get_asset_spechave been updated - the parameterdatais now of typeTableauTranslatorDatainstead ofTableauContentData. Custom Tableau translators should be updated.