Changelog
1.13.0 (core) / 0.29.0 (libraries)
Major Changes Since 1.12.0
- AI-assisted development: Released dagster-io/skills, a collection of Dagster-focused AI skills for coding agents like Claude Code, OpenAI Codex, and others. Expanded
dg apicommands for programmatic inspection of assets, runs, jobs, schedules, and more. - Partitioned asset checks: Asset checks can now target specific partitions of an upstream asset, aligning data quality logic with how partitioned data is produced and monitored.
- State-backed components enabled by default: Integrations that depend on external metadata (dbt, Fivetran, Airbyte, Tableau, Looker, etc.) now use persisted local state by default, providing a more predictable code location loading experience.
- Virtual assets (preview): New
is_virtualparameter on@assetandAssetSpecfor modeling assets like database views that automatically reflect upstream changes without explicit materialization. - 20+ new components: Added or expanded components for dbt Cloud, Spark, Azure (Blob Storage, ADLS2), GCP (BigQuery, GCS, Dataproc), Databricks, Tableau, Looker, Census, Polytomic, and more. Integrations gained richer observability, metadata, and operational support.
- Deeper integration support: dbt Cloud supports partitioned assets; Databricks gained job-level subsetting and auto-cancel on run termination; Fivetran added polling sensors, retry-on-reschedule, and resync support; BI integrations auto-enrich assets with table metadata for cross-system lineage.
- Dagster+ improvements: Organization-level timezone settings, service users for Pro accounts, more resilient code server redeploy behavior, improved agent failure recovery, and expanded insights and alerting workflows.
Breaking Changes
- Removed deprecated
external_asset_from_specandexternal_assets_from_specs. UseAssetSpecinputs directly toDefinitions(...)orAssetsDefinition(specs=[...])instead. - Removed deprecated single-
AssetKeydepsargument support from asset dependencies. Use a sequence ofAssetDepobjects instead. - Removed deprecated
get_all_asset_specsfromDefinitions. - Removed deprecated
legacy_freshness_policyparameter from@observable_source_asset. - Removed deprecated
auto_observe_interval_minutesparameter from@observable_source_asset. - Removed deprecated
legacy_freshness_policies_by_output_nameparameter fromAssetsDefinition. - Removed deprecated
load_component_at_pathfromComponentLoadContext. Usecontext.load_componentinstead. - Removed deprecated
build_defs_at_pathfromComponentLoadContext. - [dagster-airbyte] Removed deprecated
AirbyteStateenum (useAirbyteJobStatusTypeinstead) and removed deprecatedlegacy_freshness_policyandauto_materialize_policyparameters frombuild_airbyte_assets(). - [dagster-looker] Removed deprecated
DagsterLookerResource.build_defs,get_asset_key,get_dashboard_asset_key,get_explore_asset_key,get_view_asset_keymethods, andType[DagsterLookerApiTranslator]support from API helpers. - [dagster-powerbi] Removed deprecated
PowerBIWorkspace.build_defs(), translator key helpers (useget_asset_spec()instead), andType[DagsterPowerBITranslator]support inload_powerbi_asset_specs()(pass an instance instead). - [dagster-sigma] Removed deprecated
SigmaOrganization.build_defs(),DagsterSigmaTranslator.get_asset_key()(useget_asset_spec(...).keyinstead), andType[DagsterSigmaTranslator]support inload_sigma_asset_specs()(pass an instance instead).
New
- (Preview) Added support for virtual assets. The
@assetdecorator andAssetSpecnow accept anis_virtualparameter for defining assets that represent views or derived tables that don't need to be materialized. Virtual assets are supported in staleness calculations, execution planning, and declarative automation. - Job-level config defaults are now applied when partial config is provided to a run.
- [dagster-dbt] Added
enable_dbt_views_as_virtual_assetssetting toDbtTranslatorSettingsfor automatically treating dbt views as virtual assets.
Bugfixes
- Fixed an issue where a sensor targeting a job with
run_tagsand specifying anasset_selectionin theRunRequestwould not apply the job'srun_tagsto the resulting run. - Fixed a potential error in YAML config snapshot conversion when encountering
Nonefields. - [dg] Fixed
dg plus deploy configuregenerating a GitHub Action that used Docker instead of the PEX build strategy. - [dagster-cloud-cli] PR comments in CI are now scoped by deployment name, preventing overwrites across deployments.
- [ui] Fixed "Missing" partition selection for time-based partitioned assets.
- [ui] Fixed raw log display rendering after
ansi-to-reactlibrary update. - [ui] "Terminate all runs" dialog now handles extremely large sets of runs more reliably.
Documentation
- Added Dagster+ agent configuration page for serverless and hybrid deployments.
- Added data portability documentation page.
- Reorganized run isolation documentation for hybrid and serverless deployments.
- Added ELT pipeline example with dlt and Sling.
Dagster Plus
- Added SCIM Groups filter support for
members.value eqqueries. - Fixed an issue where the Dagster+ Kubernetes agent would emit log noise about
DAGSTER_CLOUD_RAW_GIT_URLandDAGSTER_CLOUD_GIT_URLenvironment variables whenonlyAllowUserDefinedK8sConfigFieldswas set. - Fixed incorrect alert type label for metrics alerts.
1.12.22 (core) / 0.28.22 (libraries)
New
- [dg]
dgprojects can now configureagent_queueandimageinpyproject.tomlunder[tool.dg.project], which are included in the generateddagster_cloud.yamlwhen runningdg plus deploy. - [dg] Added
dg api job listanddg api job getcommands for querying job metadata including schedules, sensors, and tags. - [dg] Added
dg api asset-check list,dg api asset-check get-executions, anddg api asset get-partition-statuscommands. - [ui] The asset overview page now shows a loading spinner for "Latest materialization" while data is loading, instead of a dash.
- [ui] Removed the legacy asset catalog component and the
flagAssetCatalogSidebarfeature flag. The asset catalog sidebar is now always enabled. - [ui] The pipeline snapshot link is no longer shown in the Run Actions Menu for hidden asset group jobs.
- [dagster-aws] The
EcsRunLauncherand Dagster+ ECS agent now supply idempotency tokens when creating ECS services and tasks, improving retry behavior after transient failures. - [dagster-dbt]
DbtCloudComponentnow supports an option to include a polling sensor for monitoring dbt Cloud job runs.
Bugfixes
- Fixed
snap_to_yamlincorrectly removing empty dicts that represent valid config values forPermissive,Map, andNoneableconfig types. - Fixed an issue where resources defined in parent components could incorrectly trigger
DagsterInvalidDefinitionErrorduring nested componentpost_processingresolution. (Thanks, @vidiyala99!) - [dagster-aws] Fixed
PipesECSClientincorrectly treating a task that failed to start as a successful execution. - [dagster-fivetran] Fixed an incorrect connector URL format generated by the Fivetran integration.
- [ui] Fixed a performance issue where canceling a backfill before any runs executed would unnecessarily fetch the entire asset materialization history.
- [dg] Fixed
dg plus deploynot correctly pulling in environment variables when refreshing definitions state for state-backed components. - [ui] Fixed ANSI color rendering in run logs.
- [ui] Fixed a visual rendering issue with the graph depth input field.
Documentation
- Added a migration guide for moving from sensors to declarative automation.
- Added documentation for the ECS executor.
Dagster Plus
- Alert policies can now be muted for a configurable duration. Muted policies do not send notifications and show when they will resume.
- [dagster-dbt] Added
dg plus integrations dbt download-manifestcommand to download dbt manifests from Dagster Plus for local development.
1.12.21 (core) / 0.28.21 (libraries)
New
- Removed the
setuptools<82pin from thedagsterpackage. - Added support for the
partitionsattribute in asset selection syntax to filter assets by partition definition type (e.g.,partitions:"static"). - [dagster-spark] Added Spark Declarative Pipeline support in feature preview.
- [ui] Added a date range picker to the backfill modal for date-formatted partitions.
- [ui] The "Report evaluation" action for asset checks has been moved to a consolidated dropdown menu.
Bugfixes
- [dagster-dbt] Fixed issue that could cause
DbtProjectComponents with custom translation methods to not work with utilities likebuild_schedule_from_dbt_selection. - [ui] Fixed asset catalog sidebar not clearing key prefix filters when navigating back to root.
- [ui] Fixed deployment switcher button text color in Light Mode.
- [ui] Fixed duplicate "Catalog" breadcrumb on asset detail pages.
- [ui] Fixed lineage graph edges disappearing when zoomed out by increasing the maximum visible edge limit.
Documentation
- Added cross-account service discovery documentation for ECS agents, including the
service_discovery_role_arnconfiguration parameter. - Added Snowflake EL ingestion pattern documentation.
1.12.20 (core) / 0.28.20 (libraries)
New
- Execution context classes (
OpExecutionContext,AssetExecutionContext,AssetCheckExecutionContext) now expose amulti_partition_keyproperty that returns aMultiPartitionKeywhen the current run is a multi-partition run. - Added
BrazeandRunpodkind tags. (Thanks, @dragos-pop!) - [dagster-databricks] The Databricks job run URL is now rendered as a clickable link in the Dagster UI.
- [dagster-dbt] Added
DbtCloudComponentfor loading dbt Cloud projects as Dagster assets using the Components API. - [dagster-dbt] The
dbt_cloud_assetsdecorator now supports partitioned assets via thepartitions_defparameter. - [dagster-fivetran] Added a polling sensor for Fivetran observability, which detects externally-triggered syncs and emits materialization events.
- [dagster-fivetran]
FivetranWorkspacenow supports aretry_on_rescheduleoption to automatically retry syncs rescheduled by Fivetran due to quota limits, as well asresyncoperations. - [dagster-fivetran] The Fivetran translator now includes sync schedule and custom report metadata on connector assets.
- [dagster-k8s] The Dagster Helm chart and Dagster+ Kubernetes Agent Helm chart now support
k8sApiCaBundlePathto configure a custom CA certificate path for Kubernetes API communication. - [dagster-k8s] Code location server Kubernetes Services now support a
service_spec_configfield for arbitrary Kubernetes Service spec overrides (for example,clusterIP: Nonefor headless services).
Bugfixes
- Fixed an issue where time window partitions with exclusions would sometimes create more runs than needed when using single-run backfills.
- Fixed a "Cannot access partition_key for a non-partitioned run" error that could occur with multi-asset definitions that included non-partitioned assets or asset checks alongside partitioned ones.
- [dagster-aws] Fixed
s3_pickle_io_managerfailing with dynamic outputs when step keys contain bracket characters in the generated S3 object path. - [dagster-aws] Fixed an issue in
PipesEMRServerlessClientwhere a custom CloudWatch log group name configured inmonitoringConfiguration.cloudWatchLoggingConfiguration.logGroupNamewas ignored, causing log streaming to always use the default/aws/emr-serverlesslog group. (Thanks, @kchainani-figma!) - [ui] Fixed the asset recent updates trend visualization when multiple event types share the same run ID.
- [ui] Fixed text wrapping and spacing in the asset event detail view for long partition names and run titles.
Documentation
- Added a troubleshooting guide for Kubernetes agent network connectivity issues, including TCP keepalive configuration recommendations for Helm chart deployments.
1.12.19 (core) / 0.28.19 (libraries)
New
- Added a "Report Execution" dialog to the asset checks detail view, allowing users to manually record check evaluation results.
- Added database pool configuration options (
--db-pool-recycle,--db-pool-pre-ping, and others) todg devanddagster dev. - Added
dg plus config viewcommand for inspecting the current CLI configuration. - [ui] Updated the Usage dialog and Run timeline to display "Jobless asset materializations" (previously "Ad hoc materializations") with a tooltip describing what is grouped within this category.
- [ui] Planned run events are now excluded from the event count shown in the run log filter.
- [dagster-azure] Added component support for
dagster-azure, includingAzureBlobStorageResourceComponentandADLS2ResourceComponentfor declarative YAML configuration of Azure resources. - [dagster-databricks]
DatabricksAssetBundleComponentis now subsettable at the job level, enabling selective execution of individual Databricks tasks. - [dagster-databricks]
DatabricksAssetBundleComponentnow uses the Databricks CLI to resolve variable references to task and job names in bundle templates. - [dagster-databricks] Databricks jobs are now cancelled when the corresponding Dagster run is terminated in
DatabricksWorkspaceComponent. - [dagster-dbt]
dagster-dbtnow prefersdbt-corefor manifest parsing when it is installed. - [dagster-gcp] Added
BigQueryResourceComponent,GCSResourceComponent,GCSFileManagerResourceComponent, andDataprocResourceComponentfor declarative YAML configuration of GCP resources. - [dagster-gcp]
BigQueryIOManagernow supports a configurablewrite_modeparameter (truncate,replace, orappend).
Bugfixes
- Fixed an issue where auto-run reexecution would attempt to rerun jobs belonging to already-completed or cancelled backfills.
- Fixed an issue where backfill errors that were subsequently retried would remain incorrectly associated with the backfill.
dg plus pull envnow merges pulled secrets into the existing.envfile instead of replacing it, preserving any locally-set variables not present in Dagster Plus.- [ui] Fixed rendering of newlines in markdown blockquotes in the UI.
- [dagster-databricks] Fixed a
KeyErrorforrun_page_urlinDatabricksWorkspaceComponent. - [dagster-databricks] Fixed asset mapping in
DatabricksAssetBundleComponentandDatabricksWorkspaceComponentto use job and task key combinations, preventing conflicts when task keys are not unique across jobs.
Dagster Plus
- The Dagster+ agent now automatically redeploys local code servers that enter a failure state when the control plane expects them to be loaded.
1.12.18 (core) / 0.28.18 (libraries)
New
- Added event type filtering to the asset Recent Updates timeline, allowing users to toggle between Materializations and Observations when both event types are present. Filter preference is persisted to local storage.
psycopg2-binaryhas been removed as a dependency fromdagster-postgres. If you were previously relying on this transitive dependency, you may need to explicitly addpsycopg2-binaryto your project.- [ui] The launchpad UI no longer prefills optional resource defaults in the config editor. To see and edit the defaults, click "Scaffold all default config".
- [ui] For op jobs in code locations that have reloaded, the launchpad now always shows a message indicating that the config may be stale.
- [ui] Asset health status indicators now distinguish between loading, unknown, and no data states for improved debugging.
- [ui] The asset overview timeline now correctly displays the most recent event without cutting it off.
- [dagster-dbt]
DbtProjectandDbtProjectComponentnow exposeprepare_project_cli_argsto allow customizing CLI arguments used to generate the manifest. - [dagster-looker, dagster-omni, dagster-powerbi, dagster-sigma, dagster-tableau] BI integration assets are now automatically enriched with
dagster/table_namemetadata. Additionally,dagster-tableauanddagster-lookerassets now populatedagster/storage_kindbased on the upstream connection type. - [dagster-sling] The
slingpackage import is now deferred to improve import-time performance.
Bugfixes
- Fixed a bug where Dagster incorrectly called
__enter__on nested resource attributes annotated withdagster.ResourceDependencyduring parent resource setup. (Thanks, @danielgafni!) - [ui] Fixed text wrapping and layout for long URIs in asset storage metadata section.
Documentation
- Added documentation for custom metrics in Dagster+ Insights.
- Added and enhanced webhook alerting documentation, including a guide for incident.io integration.
Dagster Plus
- Organization-level timezone settings are now supported, allowing organizations to set a default timezone for users who haven't explicitly set a preference.
- [ui] Asset job run data is now included in Job insights.
- [ui] Code locations with loaded but failed agents now display a warning icon with agent status details in a popover.
- [ui] Added run queue time metric visualization to Job insights.
- [ui] Updated Alert policy list style for improved scannability and legibility.
1.12.17 (core) / 0.28.17 (libraries)
Bugfixes
- Fix bug with inclusion of built webapp in
dagster-webserverthat caused the Dagster UI to fail to load.
1.12.16 (core) / 0.28.16 (libraries) (YANKED)
This version of Dagster inadvertently did not include the webapp code in the published dagster-webserver package.
Bugfixes
- [ui] Fixed redirect to login when the user's session expires.
- [ui] Fixed console error noise during asset lineage navigation.
Dagster Plus
- [ui] Improved loading states and autoscroll behavior in the AI chat UI.
- [ui] Fixed the icon selector in the saved selection creation flow.
1.12.15 (core) / 0.28.15 (libraries)
New
- Pool names can now be any non-whitespace character, instead of requiring alphanumbeic characters, slashes, and underscores.
- [dagster-aws] The
EcsRunLauncherwill now retry a task launch when a RunTask API call fails due to a throttling error in an underlying EC2 API call. - [dagster-tableau] Tableau workbooks and projects can now be filtered using the
workbook_selectorandproject_selectorinTableauComponent.
Bugfixes
- [ui] Fixed issue where saved launchpad config was not used for single-partition asset materializations.
- [ui] Fix console error noise during asset lineage navigation.
- [ui] Fixed an issue where the "Start X Automations" and "Stop X Automations" menu options on the Automations tab were sometimes incorrectly disabled.
- [dagster-dbt] The
DbtProjectconstructor now correctly accepts strings for thetarget_pathparameter.
1.12.14 (core) / 0.28.14 (libraries)
New
@asset_checkandAssetCheckSpecnow support apartitions_defparameter, allowing checks to execute against specific partitions of their upstream asset rather than the entire contents. If set, the partition definition must match the definition of the targeted asset.- [ui] The "Select all" checkbox has been restored to the Automations list.
Bugfixes
- Fixed performance issue where the partition selector would freeze for 30+ seconds when selecting "All" on assets with large (100k+) partition sets. (Thanks, @ljodea!)
- Fixed an issue with cron schedules using step patterns (like
*/10or*/30) in the day-of-month field where invalid days weren't properly skipped. - [ui] Fixed an issue that could cause incorrect partition statuses to be displayed in the UI.
- [ui] Partition percentages now round in a more intuitive way.
- [ui] Row count metadata is now displayed even when set to zero.
- [dagster-databricks] Fixed an issue where op name generation would occasionally lead to collisions.
- [dagster-sigma] When building assets for Sigma workbooks that depend on tables unknown to Dagster, an error is logged instead of throwing an exception.
- [dagster-k8s] Fixed an issue where
PipesK8sClientwould sometimes fail when containers in theignored_containerslist failed. - [dagster-github] Ensured compatibility with
pyjwt>=2.11.0,which introduced breaking changes.
Documentation
- Added an example of censoring PII in run logs.
- Updated branch deployment docs to include single-agent setup.
1.12.13 (core) / 0.28.13 (libraries)
New
- [dagster-polytomic]
PolytomicComponenthas been added and can be used to represent your Polytomic bulk sync schemas as external assets in Dagster - [dagster-fivetran] Added warning log when no Fivetran groups are found to help users troubleshoot permission issues.
1.12.12 (core) / 0.28.12 (libraries)
New
dg plus deploy startnow validates deployment akin todagster-cloud ci check.- [dagster-aws] Added a suite of new components that map to all existing resources in the library.
- [dagster-k8s] Increased the maximum version of kubernetes to 35.x.x.
- [ui] You can now unpin asset groups that no longer contain any assets.
Bugfixes
- Fixed type errors reported by Pyright's strict mode when using
@asset,@multi_asset, and@graph_assetdecorators. - Running
dg launch --partition-rangefor an asset without an explicitly defined single-run-backfill policy now provides a clean error message. - Fixed issue where the celery_executor
config_sourcevalues were ignored. (Thanks, @danielbitzer!) - Fixed issue with
dg plus deploy refresh-defs-stateURL construction for EU regions. - Fixed helm chart validation error when enabling
concurrencyconfig with defaultqueuedRunCoordinatorvalues. dg list defsnow correctly shows labels for automation conditions.- [dagster-dbt] Fixed issue with the
dagster-dbt project prepare-and-packagecommand where user files nameddbt.pycould shadow thedbtmodule. (Thanks, @alexaustin007!) - [dagster-dbt] Fix errors raised when dbt functions are present in dbt manifest. (Thanks, @eso-xyme!)
- [ui] Fixes a bug where creating an alert policy from your Favorites would crash the app.
Dagster Plus
- Fixed an issue while using the 'isolated_agents' configuration parameter in Dagster+ where runs that were terminated due to exceeding a maximum runtime would sometimes fail to terminate the run worker process after the run was marked as failed.
1.12.11 (core) / 0.28.11 (libraries)
New
- The
dagster-cloud ci checkcommand is now marked as deprecated. Usedg plus deploy startinstead, which now validates configuration during deployment initialization. - [dagster-fivetran]
FivetranWorkspacenow supports arequest_backoff_factorparameter for enabling exponential backoff on request failures.
Bugfixes
- [dagster-dbt] Fixed an issue where the
excludeparameter of@dbt_assetscould be ignored if the selection was too large. - [ui] The Asset Partitions page and the launch Materializations modal now correctly handle asset partitions that contain JSON or irregular characters.
- [ui] Fixed an issue where
dagster/row_countmetadata was sometimes not displayed on the Asset Overview page if it was being set by an asset observation rather than a materialization.
Dagster Plus
- The ECS agent now waits for 10 minutes by default before timing out during a code location deploy instead of 5 minutes, to ensure that large images have enough time to be pulled by the agent. See https://docs.dagster.io/deployment/dagster-plus/hybrid/amazon-ecs/configuration-reference#user_code_launcher-properties for more information on changing this default.
- [ui] The Job Insights tab now shows a metric breakdown by job
1.12.10 (core) / 0.28.10 (libraries)
Bugfixes
- [ui] Fixed an issue introduced in 1.12.9 where the "Catalog" tab in the Dagster UI sometimes failed to display any assets.
1.12.9 (core) / 0.28.9 (libraries)
New
- The core
dagsterpackage (and most libraries) are now compatible with Python 3.14. - Added support for using python version 3.13 when running
dg plus deploy. dg plus loginnow supports aregionflag for eu-based users:dg plus login --region eu.- Updated the
bulk_actionstablebodycolumn fromTexttoLongTextfor Mysql storage. To take advantage of this migration rundagster instance migrate. (Thanks, @jenkoian!) - Updated the
asset_keystablecached_status_datacolumn fromTexttoLongTextfor Mysql storage. To take advantage of this migration rundagster instance migrate. (Thanks, @jenkoian!) - Runs now automatically include a
dagster/code_locationtag when created with aremote_job_origin, enabling filtering and concurrency control by code location. (Thanks, @ssup2!) - [ui] the Asset > Partitions page now shows historical "Failed to materialize" events for consistency with the Asset > Events page.
- [helm] Added a
concurrencysetting to the helm chart to configure concurrency pools. - [dagster-azure] The
ADLS2PickleIOManagernow overwrites blob keys when the same asset is materialized twice, instead of deleting then writing the blob. - [dagster-aws] An
ecs/container_overridestag can now be set on jobs (or on runs in the launchpad) to customize container-level overrides (like GPU resource requirements) for runs using theEcsRunLauncher. - [dagster-dbt]
dagster-dbtnow supports dbt-core 1.11. (Thanks, @nicoa!) - [dagster-dlt] update url in README (Thanks, @Miesjell!)
- [dagster-databricks] Introduced
DatabricksWorkspaceComponentto automatically discover Databricks jobs as Dagster assets. - [dagster-looker] Added option PDT asset support to
LookerComponent.
Bugfixes
- Fixed an issue where a transient issue caused a step health check to fail when using the
k8s_job_executor. - Fixed an issue where a health check failure while using the
k8s_job_executorcould result in a step continuing to run after the run failed. - Invalid
TimeWindowPartitionsDefinitionsthat contain multiple time windows that map to the same partition key (for example, an hourly partitions definition with a daily format key) will now raise anExceptionduringdagster definitions validate, instead of being allowed but causing undefined behavior. - [ui] Entering the asset launchpad by right-clicking on the asset graph no longer causes keyboard navigation issues.
- [ui] Fixed an issue where removing an asset prevented rendering status information for backfills involving that asset in the Dagster UI.
- [dagster-dbt] Fixed issue that could cause the
DbtCliEventMessageiterator to error while parsing certain error messages produced bydbt-core.
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.