Changelog
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_execution
function 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_LIMIT
environment variable. -
Added
databento
,ax
, andbotorch
kind tags, thanks @aleewen and @CompRhys! -
[dagster-k8s] Added the option to include
ownerReferences
s 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_references
flag on the executor config. -
[components] Added
dg list component-tree
command 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_path
andbuild_defs_at_path
functions: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_asset
s to not properly apply theAllPartitionMapping
orLastPartitionMapping
to 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-dagster
standalone 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_assets
decorator 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.replace
type 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
dagster
package now supports Python 3.13. - [dagster-tableau] Tableau assets can now be subsetted and materialized individually. #31078
- [dagster-snowflake-polars] The new
dagster-snowflake-polars
package adds aSnowflakePolarsIOManager
that 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.yml
in thedagster-dbt
tutorial (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 validate
will 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
@graph
now correctly allows omitting inputs when the destinations of an input mapping have a default value.@record
classes 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-actions
would invoke thedg
CLI 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 lightweightComponent
subclass 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
Component
lets 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_var
so 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 dev
spins up local instance with UI;dg launch
runs jobs and assets from the CLI. - Introspection & checks:
dg list
enumerates definitions;dg check
validates YAML and Python code. - Utility bundle:
dg utils
provides 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 project
supersedes thedagster project scaffold
flow with the modernsrc/
+defs/
layout and a pre-wired localdg
CLI, 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 –
AssetCheckEvaluation
objects can now be yielded from within ops. - Per‑asset hooks –
@asset
now accepts ahooks
argument for success/failure callbacks. - Backfill improvements
BackfillPolicy
is 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
FreshnessPolicy
API is introduced, replacing the deprecatedFreshnessPolicy
API (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
FivetranWorkspace
resource 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
MaterializeResult
now optionally supports avalue
parameter. 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
FreshnessPolicy
fromdagster.deprecated
. - Adds a custom error message when importing
FreshnessPolicy
from thedagster
module. freshness_policy
parameter now used to pass the new freshness policies (InternalFreshnessPolicy
) to asset specs, asset decorator, etc.- Removed
@preview
from@definitions
. - [components] Introduce
build_defs_for_component
, which can be used to build defs from a component instance outside of adefs
folder. - [components] Removed
@preview
fromDefsFolderComponent
. - [components] Removed
@preview
decorator fromload_from_defs_folder
and enhanced its documentation with detailed usage instructions and examples. - [components] The
asset_post_processors
field onSlingReplicationCollectionComponent
andAirflowInstanceComponent
is no longer supported, and has been replaced with the top-levelpost_processors
field. - [dagster-tableau] Tableau workbooks fetched in Dagster can now be filtered and selected using the WorkbookSelectorFn.
- [dagster-dbt]
dagster-dbt
now 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
SigmaOrganization
resource will now use an exponential backoff strategy in response to getting rate limited instead of immediately failing. - [dagster-sling] Removed
asset_post_processors
onSlingReplicationCollectionComponent
and uses genericpost_processing
key at top-level instead. - [dagster-pandera] Adds support for version 0.24.0 of the
pandera
library 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_SECONDS
not being propagated through from daemon to code servers, resulting in the sensor still timing out at 60 seconds if thedagster code-server start
entrypoint was used. - [dagster-sling] Fixed an issue with the
SlingResource
that could cause values specified withEnvVar
s 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
Definitions
andAssetsDefinition
will now error if they get differentAssetSpec
s with the same key.- Renamed
FreshnessPolicy
toLegacyFreshnessPolicy
.
Deprecations
- [dagster-sling] The
SlingReplicationCollectionComponent
is now configured by passingconnections
directly. This means that thesling
yaml field and theresource
python argument are both deprecated, and will be removed in a future release. Theconnections
field in yaml now shares a format with Sling'senv.yaml
. - [components] The
load_defs
entrypoint 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-component
subcommand ofdg scaffold defs
is now hidden from --help. - [components]
load_defs
is 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_assets
decorator 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_poll
method. - [dagster-tableau] The deprecated
get_*_asset_key
methods on theDagsterTableauTranslator
class 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
, anddataVersionByPartition
fields on the graphqlAssetNode
would 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
sling
dependency. - [dagster-sling] Fixed an issue with the
SlingResource
that could cause values specified withEnvVar
s to provide the env var name instead of the env var value to the sling replication configuration. - [dagster-fivetran] Introduced a
dagster-fivetran snapshot
command, 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
, andUvRunComponent
to 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_def
asset 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_def
key. - The
dg
cache is no longer operative, sincedg
now operates in the same python environment as the projects it manipulates. Config options for the cache have been removed. - The
load_defs
entrypoint 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_processors
field onSlingReplicationCollectionComponent
andAirflowInstanceComponent
is no longer supported, and has been replaced with the top-levelpost_processors
field. - Fixed an issue where dg projects using
autoload_defs=true
could not be deployed to Dagster+. - Removed
@preview
fromComponent
. ComponentLoadContext
is now frozen and no longer in preview.Resolved
subclasses now supportEnum
fields.
1.10.20 (core) / 0.26.20 (libraries)
New
- The
@asset
decorator now supports ahooks
argument 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_check
decorator now supports thepool
argument. - [dagster-dbt] The
DagsterDbtTranslator
class now has aget_asset_check_spec
method which can be overridden to customize theAssetCheckSpecs
that are produced for each individual dbt test.
Bugfixes
- Fixed an issue where setting the non-public
blocking
attribute on anAssetCheckSpec
would 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, theblocking
attribute onAssetCheckSpec
has been made a public attribute. If you were making use of theblocking
attribute 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 dev
was sometimes failing to load code locations with a "Deadline Exceeded" error unless the--use-legacy-code-server-behavior
flag 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.3
pin 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 yaml
where valid component type names were rejected if they were not registered (i.e. visible fromdg check components
). dg create-dagster
now warns when scaffolding a project or workspace if it is not the latest version.- The
project.registry_modules
configuration can now accept wildcards (e.g.foo_bar.components.*
). This will register any module matching the pattern withdg
. - The
env
YAML 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
dg
registry. - The
PipesSubprocessScriptCollectionComponent
has been removed. - Running dg commands such as
dg check defs
anddg dev
in 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.plugin
entry 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
dg
has been renamed fromdagster_dg_cli.plugin
todagster_dg_cli.registry_modules
(projects no longer need to define an entry point group at all). dg list plugin-modules
has been renamed todg list registry-modules
.dg list defs
now supports configuring output columns with the--columns/-c
option.- [dagster-airbyte] Introduced a
AirbyteCloudWorkspaceComponent
which 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
DbIOManager
is 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_context
can be used to build asset check contexts for direct invocation. - Changed
Definitions.get_all_asset_specs
to only return assets directly passed in as AssetSpecs or AssetsDefinitions. - Removed
selection
argument fromDefinitions.map_asset_specs
. If selection is needed use the newDefinitions.map_resolved_asset_specs
. Definitions.get_job_def
now warns when it finds an unresolved job or no job.- Changed
Definitions.get_assets_def
to return an AssetsDefinition without resolving if it was passed in directly. - [dagster-dbt]
build_schedule_from_dbt_selection
now supports aselector
argument, 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-name
label. - [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 defs
anddg dev
in 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 defs
now supports the--assets/-a
option, to show only assets matching the provided selection.dg list defs
now supports a--path
argument to subset the defs files shown.- The
create-dagster workspace
command now accepts the same required path argument as thecreate-dagster project
command, instead of defaulting to adagster-workspace
subfolder 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.plugin
todagster_dg_cli.registry_modules
(projects no longer need to define an entry point group at all). dg list plugin-modules
has been renamed todg list registry-modules
.- Newly scaffolded projects no longer contain a "components" directory or a Python
dagster_dg_cli.plugin
entry point. - Newly scaffolded components can now be placed anywhere within a project module hierarchy.
Resolvable
subclasses can now use baredict
andlist
as field types.- Resolving a
Resolvable
subclass will no longer change empty strings toNone
. - Users can define multiple
@definitions
-decorated functions in a single module in thedefs
hierarchy and they are automatically merged and incorporated into the project. - Added
@component_instance
to replace@component
. This allows multiple component instances in a python file. - Fixed an issue where
dg
commands would sometimes output extradagster_telemetry_logger
lines to stdout at the end of commands. - Added
@template_var
as an alternative approach for defining variables in a templating context.
1.10.18 (core) / 0.26.18 (libraries)
New
BackfillPolicy
is now marked as generally available (GA).- Optimized the order of the
@asset
decorator overloads to make custom wrappers around the asset decorator easier. Thanks @jonathanunderwood! - [dagster-slack] Added
get_client()
to SlackResource.
Bugfixes
Definitions
andAssetDefinition
will now warn if they get differentAssetSpec
s with the same key. This will become an exception in 1.11.- Functions that load all definitions from modules like
load_definitions_from_modules
now handle duplicateAssetSpec
s. - 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_instance
where 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_keys
in@sensor
. Thanks @seyf97!
Breaking Changes
Definitions
andAssetDefinition
will now warn if they get differentAssetSpec
s with the same key. This will become an exception in 1.11.
Dagster Plus
- [dagster-cloud-cli] Added a
--wait
to thedagster-cloud job launch
command that makes it wait until the launched run copmletes. Thanks @stevenayers! - [fix][dagster-cloud-cli] Fixed an issue where the
dagster-cloud
cli failed to deploy PEX projects on python 3.12 in certain environments without setuptools already installed.
dg & Components (Preview)
- The
dg
CLI is now installed in each project's Python environment instead of as a global tool. If you previously haddg
installed globally and are upgrading, first uninstall the global dg tool (uv tool uninstall dagster-dg
orpip uninstall dagster-dg
) and adddagster-dg-cli
as a dependency to each of your projects. Newly scaffolded projects will automatically include thedg
CLI going forward. - A new
create-dagster
CLI has been added for scaffolding projects instead of workspaces.uvx create-dagster project
has replaceddg scaffold project
, anduvx create-dagster workspace
has 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.yaml
file to specify a component instance is now called "defs.yaml". "component.yaml" will remain supported for several weeks, but is deprecated. - The
lib
folder in newly scaffolded projects has been renamed to "components". dg scaffold component-type
has been renamed todg scaffold component
.dg list plugins
has been renamed todg list plugin-modules
and now outputs only plugin module names, not plugin objects.dg list component
now lists component types instead of instances.- Exports from
dagster.components
are now available in the top-leveldagster
module. - Added
@component_instance
to 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 launch
now supports passing config files through--config/-c
.- Added
Component.from_attributes_dict
andComponent.from_yaml_path
to help with testing. - Added
dagster.components.testing.component_defs
utility to help with testing components. - Scaffolded schedules and sensors in
dg
are now loadable by default. dg scaffold defs inline-component
can now be used to create inline components and corresponding instances.dg list defs
now outputs resources.- [fix] The
dagster-dbt
cli flag--components
flag now correctly findsDbtProjectComponent
again. - [dagster-fivetran] Added a
FivetranAccountComponent
which 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_instance
or 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_extensions
is now pinned to>=4.11.0
instead 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
ExternalNotebookDataRequest
GRPC call that would allow it to access files outside of the current directory. - Fixed an issue that would cause
op_tags
set on@observable_source_asset
s to be dropped from the underlying step context object when executed. - Fixed an issue where
dagster dev
would 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
BoolSource
would evaluate to True. - Fixed an issue where specifying
executable_path
in 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
OpExecutionContext
was used as the type hint for the context. - [dagster-deltalake] Corrected the
timeout
property data type inClientConfig
to be str instead of int (thanks, @edsoncezar16!)
Documentation
- Added additional config fields to the
K8sRunLauncher
example (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
AssetKey
andAssetSpec
. dg list env
now displays whether env vars are configured in each Dagster Plus scope.- Introduced
Resolver.passthrough()
to avoid processing fields on a component model. ResolvedAssetKey
is now exported fromdagster.components
.dg init
has been removed.dg scaffold project
anddg scaffold workspace
should be used instead.- Fixed an issue where
dg dev
failed 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.yaml
to 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 failure
feature 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
FivetranWorkspace
resource 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
FivetranResource
resource is now deprecated. Use the newFivetranWorkspace
resource instead.
dg & Components (Preview)
- Changed
Scaffolder.scaffold
to have the params object as an attribute of theScaffoldRequest
object 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
@definitions
in thedefs
hierarchy. - 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.yaml
file in your editor. - [dagster-dbt]
DbtProjectComponent
fields now properly evaluate templates. - [dagster-sling] Updated the SlingReplicationCollectionComponent from using the
asset_attributes
parameter totranslation
, in order to match our other integration components. - Fixed an issue where
dg dev
failed 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_evaluation
which could cause it to returnFalse
for 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_checks
returning 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_run
has 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_path
method (seeresolve_dbt_project
inDbtProjectComponent
for an example). - Added
dagster.job
scaffolder. - [dagster-dbt] The
DbtProjectComponent
now has atranslation_settings
argument for adjustingDagsterDbtTranslatorSettings
. - [dagster-dbt][fix]
DbtProjectComponent
fields now properly evaluate templates. - Fixed docstring for
load_defs
entrypoint, 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_match
orAutomationCondition.all_dep_match
with 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 dev
is allowed to use to open subprocesses when running on Windows, by setting theDAGSTER_PORT_RANGE
env var to a string of the form<start>=<end>
- for example "20000-30000". - [dagster-aws] The S3 sensor's
get_objects
now returns an empty list if no new files can be found since thesince_last_modified
parameter. Thanks @bartcode! - [dagster-dbt]
@dbt_assets
andbuild_dbt_manifest_asset_selection
now support aselector
argument, 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_evaluation
which could cause it to returnFalse
for 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 toFalse
when evaluated on a self-dependency. - Fixed a bug in the
quickstart_aws
example. 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
.description
andexamples
arguments have been added toResolver
for documenting fields on non-pydantic model basedResolvable
classes.
1.10.12 (core) / 0.26.12 (libraries)
New
- [ui] Removed the
By partition
grouping 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=True
to error when usingdagster-pipes
if 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)
dg
will now fail with an error message if it's version is below the minimum supported version for the version ofdagster
in your environment.dg
now checks for new versions and prompts the user to update. The check runs automatically atdg
startup once per day.dg
will 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 defs
now collapses long system stacktraces #29507- Added
dagster.multi_asset
scaffolder - Added
dagster.asset_check
scaffolder - Fixed a bug where
dg list defs
would crash if anything was written to stdout while loading a project's definitions. - The default location for the
dg
user config file on Unix has been moved from~/.dg.toml
to~/.config/dg.toml
.~/.config
can be overridden by setting$XDG_CONFIG_HOME
. - Cache deserialization errors are now ignored. Previously, when the
dg
contents of the cache were in an outdated format,dg
could crash. Now it will just rebuild the cache. - The Components ETL Pipeline Tutorial now supports users of both
pip
anduv
. - The
dg
CLI 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
dg
settingcli.suppress_warnings
is 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_environment
previously 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_environment
to{active = true}
. This means by default, no virtual environment oruv.lock
will be created when scaffolding a new project (viadg init
ordg scaffold project
). You can pass--python-environment uv_managed
for the old behavior. - Removed the
--skip-venv
flag ondg scaffold project
anddg init
. - The
dagster_components
package has been merged intodagster
and use of thedagster-components
package has been deprecated.dagster-components
will remain as a stub package for the next few weeks, but code should be updated to import fromdagster.components
instead ofdagster_components
. - [dagster-dbt] the
dagster-dbt project prepare-and-package
cli now supports--components
for handlingDbtProjectComponent
- [dagster-dbt]
DbtProjectComponent
has been reworked, changing both the python api and the yaml schema.dbt
has been replaced withproject
with a slightly different schema, andasset_attributes
withtranslation
.
1.10.11 (core) / 0.26.11 (libraries)
New
- [ui] Runs launched from the Dagster UI get a
dagster/from_ui = true
tag, 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
AirflowFilter
API 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=True
to error when usingdagster-pipes
if not all outputs were emitted. - [dagster-dbt] the
state_path
argument toDbtCliResource
now 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_TIMEOUT
environment 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_RETRIES
environment 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
dg
CLI 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
dg
settingcli.suppress_warnings
is now available. This takes a list of warning types to suppress. - Changed configuration of project Python environments. The
tool.dg.project.python_environment
previously 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_environment
to{active = true}
. This means by default, no virtual environment oruv.lock
will be created when scaffolding a new project (viadg init
ordg scaffold project
). You can pass--python-environment uv_managed
for the old behavior. - Removed the
--skip-venv
flag ondg scaffold project
anddg init
. - Fixed a bug where new projects scaffolded with
dg scaffold project
were lackingdagster
as a dependency. - The "Creating a library of components" guide has been replaced by a new and more general "Creating a
dg
plugin" guide. - The arguments/options of the
dg init
command have changed. You may pass.
as an argument to initialize a project/workspace in the CWD. Seedg init --help
for more details. - The
dagster-components
package (which was converted to a stub package in the last release) is no longer being published. Alldagster-components
functionality is now part ofdagster
. - Projects should now expose custom component types under the
dagster_dg.plugin
entry point group instead ofdagster_dg.library
.dagster_dg.library
support is being kept for now for backcompatibility, but will be dropped in a few weeks. - Fixed formatting of line added to
project/lib/__init__.py
when scaffolding a component type. - The
dg env list
command is nowdg list env
- The
dg plus env pull
command is nowdg plus pull env
. - The
dg list component-type
command has been removed. There is a newdg list plugins
with output that is a superset ofdg list component-type
. - The
dg
user config file on Unix is now looked for at~/.dg.toml
instead of~/dg.toml
. - [dagster-dbt]
DbtProjectComponent
has been reworked, changing both the python api and the yaml schema.dbt
has been replaced withproject
with a slightly different schema, andasset_attributes
withtranslation
.
1.10.10 (core) / 0.26.10 (libraries)
New
- A new
blocking
parameter has been added tobuild_last_update_freshness_checks
andbuild_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_BYTES
andDAGSTER_GRPC_MAX_SEND_BYTES
environment variables on the gRPC client and server processes. - Added a new
Definitions.map_asset_specs
method, which allows for the transformation of properties on any AssetSpec or AssetsDefinition objects in theDefinitions
object which match a given asset selection. Definitions.validate_loadable
anddagster definitions validate
will now raise an error on assets with invalid partition mappings, like aTimeWindowPartitionMapping
between 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
PipesK8sClient
log streaming when transient networking errors occur. The default behavior of thePipesK8sClient
is 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_TIMEOUT
environment 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_RETRIES
environment variable.)
Bugfixes
- Fixed an issue where run monitoring sometimes didn't fail runs that were stuck in a
NOT_STARTED
status instead of aSTARTING
status. - 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_keys
argument 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 launch
command 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_components
package has been merged intodagster
. All symbols exported fromdagster_components
are now exported bydagster
. - Projects should now expose custom component types under the
dagster_dg.plugin
entry point group instead ofdagster_dg.library
.dagster_dg.library
support is being kept for now for backcompatibility, but will be dropped in a few weeks. Component.get_schema
has been renamed toComponent.get_model_cls
. Override that instead to customize the frontend of your component.Component.get_schema
will continue to work for the time being but will be removed at some point in the future.- Add support for
dg.toml
files.dg
settings inpyproject.toml
are set undertool.dg
, but indg.toml
they are set at the top level. Adg.toml
may be used in place ofpyproject.toml
at either the project or workspace level. dg
-scaffolded workspaces now include adg.toml
instead ofpyproject.toml
file.- Projects scaffolded using
dg init
ordg scaffold project
now follow modern Python packaging conventions, placing the root module in a top-levelsrc
directory and usehatchling
as build backend rather thansetuptools
. - Scaffolding a component type defaults to inheriting from
dagster.components.Model
instead of getting decorated with@dataclasses.dataclass
. - Assets scaffolded using
dg scaffold dagster.asset
will no longer be commented out. - The
dg list component-type
command has been removed. There is a newdg list plugins
with output that is a superset ofdg list component-type
. dg list defs
now includes infomation about asset checks.- Fix formatting of line added to
project/lib/__init__.py
when scaffolding a component type. - Fixed bug where schedules were displayed in the sensors section of
dg list defs
. - Fixed a bug where
dg
would 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.toml
files.dg
settings inpyproject.toml
are set undertool.dg
, but indg.toml
they are set at the top level. Adg.toml
may be used in place ofpyproject.toml
at either the project or workspace level. dg
-scaffolded workspaces now include adg.toml
instead ofpyproject.toml
file.dg
-scaffolded projects now place the root package in ansrc/
directory and usehatchling
as the build backend rather thansetuptools
.- Fixed a bug where
dg
would crash when working with Python packages with an src-based layout. dg check yaml
now 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_evaluation
condition 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_definitions
in a singleDefinitions
object 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
DefsModuleComponent
has been renamed toDefsFolderComponent
. - When scaffolding a component, the command is now
dg scaffold my_project.ComponentType
instead ofdg scaffold component my_project.ComponentType
. - [dagster-dg]
dagster list defs
will now read environment variables from a local .env file if present when constructing the definitions. dagster-components
has been merged intodagster
and use of thedagster-components
package has been deprecated.dagster-components
will remain as a stub package for the next few weeks, but code should be updated to import fromdagster.components
instead ofdagster_components
.- The
DbtProjectComponent
has been relocated to thedagster-dbt
package, importable asdagster_dbt.DbtProjectComponent
. - The
SlingReplicationCollectionComponent
has been relocated to thedagster-sling
package, 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_evaluation
condition 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
@validator
with@field_validator
in 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-gcp
version 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-aws
and/ordagster-spark
version 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_environment
andrequire_local_venv
controlled the environment used when launching project subprocesses. This is now configured at the project level. Thetool.dg.project.python_environment
setting takes a value of eitherpersistent_uv
oractive
.persistent_uv
will be used by default in new scaffolded projects and uses a uv-managed.venv
in the project root.active
is the default if notool.dg.project.python_environment
is set, and just uses the active python environment and opts out ofdg
management 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 init
command now accepts optional--workspace-name
and--project-name
options to allow scaffolding an initial workspace and project via CLI options instead of prompts. - Added a new
dagster_components.dagster.DefsFolderComponent
that 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. AssetCheckEvaluation
can now be yielded from Dagster ops to log an evaluation of an asset check outside of an asset context.- Added the
kinds
argument todagster.AssetOut
, allowing kinds to be specified in@multi_asset
. - [dagster-dbt]
AssetCheckEvaluations
are now yielded fromops
leveragingDbtCliResource.cli(...)
when asset checks are included in the dbt asset lineage. - [dagster-sling] The
SlingResource.replicate()
method now takes an optionstream
parameter, which allows events to be streamed as the command executes, instead of waiting until it completes (thanks, @natpatchara-w!). - [dagster-graphql] The
DagsterGraphQLClient
now supports anauth
keyword argument, which is passed to the underlyingRequestsHTTPTransport
constructor. - [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
deps
of anAssetSpec
from yaml, multi-part asset keys are now correctly parsed. (Thanks @stevenayers!) - The entrypoint group for dg projects has been renamed from
dagster.components
todagster_dg.library
. dg check yaml
is now run by default beforedg dev
anddg check defs
.
1.10.5 (core) / 0.26.5 (libraries)
New
async def yield_for_execution
is now supported onConfigurableResource
. Anevent_loop
argument has been added to context builders to support direct execution.dagster dev
deduplicates 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
deltalake
version has been bumped to0.25.0
; thePolarsDeltaIOManager
is now using therust
engine 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 dev
would fail to load code that took more than 45 seconds to import unless the--use-legacy-code-server-behavior
flag was used. - [dagster-airbyte] Fixed an issue that caused the group name of assets created using
build_airbyte_assets_definitions
function 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_definitions
function 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
tags
to the createdRunRequest
when usingbuild_sensor_for_freshness_checks()
. - [dagster-gcp] The
PickledObjectGCSIOManager
now 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
kinds
tag. (Thanks @dragos-pop!) - [ui] Added Weaviate icon for asset
kinds
tag. (Thanks @jjyeo!) - [ui] Made Alerts page visible to users with Viewer roles.
- [dagster-postgres] Removed the cap on
PostgresEventLogStorage
QueuePool
by settingmax_overflow
to-1
. (Thanks @axelwas!)
Bugfixes
- Fixed a bug where a sensor emitting multiple
RunRequests
with 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
CANCELED
state instead of aFAILURE
state when not every requested partition has been marked as materialized or failed by the backfill. - [dagster-dbt] Fixed a bug breaking
packaged_project_dir
since supportingprofiles_dir
inDbtProject
. - Fixed an issue with
DbIOManagers
being 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
kinds
tag. (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_schedule
sensor using theschedule_batch_size_hrs
parameter 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 fromtmp
to.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
AssetCheckResult
descriptions are rendered in the table making it easier to publish a summary of check evaluation. - [ui] The Materialize button appears more quickly on asset pages in the Dagster UI.
- [ui] The queue details modal for a run no longer closes as new runs arrive and links to the correct concurrency page.
Bugfixes
- Fixed an issue where if two separate code locations defined the same asset key with an automation condition, duplicate runs could be created by Declarative Automation.
- Fixed the
psycopg2.errors.UndefinedColumn
database error when trying to set a concurrency key without first having rundagster instance migrate
. - Fixed an issue where Declarative Automation sensors in code locations that included source assets referencing assets with automation conditions in other code locations would sometimes cause duplicate runs to be created.
- Fixed a bug in the enforcement of global op concurrency limits.
- Fixed an issue where when using
dagster dev
, some changes were not reflected in the UI after pressing the "Reload Definitions" button. - Fixed the issue where a resource initialization error within a sensor definition test incorrectly recommended using
build_schedule_context
instead ofbuild_sensor_context
. - Fixed migration issue where
dagster instance migrate
was failing for instances with non-empty concurrency limits tables. - [ui] Fixed an issue where a "Message: Cannot return null for non-nullable field PartitionKeys.partitionKeys." error was raised in the launchpad for jobs with unpartitioned assets.
- [ui] Fixed concurrency link escaping in the
View queue criteria
dialog. - [ui] Fixed an issue where the deployment switcher can become permanently "unset" when navigating from Org Settings back to a deployment.
- [ui] Fixed an issue with the traversal operators on the asset graph (
asset++
) not including assets connected to the target asset by paths of varying distance.
Dagster Plus
- A setting is available in agent configuration
direct_snapshot_uploads
(directSnapshotUploads
in helm) which opts in to a new more efficient scheme for how definitions are handled during code location updates. - Introduced new test utilities
event_log
anddagster_event
indagster-cloud-test-infra
to facilitate the creation of test data with sensible defaults for EventLogEntry and DagsterEvent objects. - [bigquery-insights][bugfix] Support querying for insights from the configured
execution_project
if defined. - [bigquery-insights][bugfix] When
execution_project
is defined in the dbt profile, fall back to fetching the dataset from the dbt profile'sproject
if the dataset cannot be found in theexecution_project
.
1.10.1 (core) / 0.26.1 (libraries)
Bugfixes
- Fixed an issue where runs containing pool-assigned ops without limits set got stuck in the run queue.
- Fixed an issue where a "Message: Cannot return null for non-nullable field PartitionKeys.partitionKeys." error was raised in the launchpad for jobs with unpartitioned assets.
- [ui] Updated "Queue criteria" modal to reference and link to pool concurrency settings pages.
- [ui] The "Queue criteria" modal for a run no longer closes as new runs arrive.
1.10.0 (core) / 0.26.0 (libraries)
New
- Added a new
AutomationCondition.data_version_changed()
condition. - [dagster-msteams] Added support for sending messages to PowerAutomate flows using AdaptiveCard formatting.
dagster definitions validate
is now less verbose, primarily highlighting load errors.- [ui] Made defunct code locations removable when editing environment variables.
- [ui] Added a warning icon to the Agents item in Deployment settings, indicating when there are no active agents.
- [dagster-tableau] Changed logic to show embedded data sources in case published data sources are not present. Also, pulled more metadata from Tableau. (Thanks @VenkyRules!)
- Added new decorators to reflect our new API lifecycle:
@preview
,@beta
and@superseded
. Also added new annotations and warnings to match these new decorators.
Bugfixes
- [ui] Fixed persistence of the group-by setting in the run timeline view.
- [ui] Fixed timestamped links to asset pages from asset check evaluations in run logs.
- [ui] Fixed excessive rendering and querying on the Concurrency configuration page.
- Fixed the step stats calculations for steps that fail and request a retry before the step starts. This happened if a failure occurred in the step worker before the compute function began execution. This should help with sporadic hanging of step retries.
- Fixed an issue where the Concurrency UI was broken for keys with slashes.
- Fixed an issue with emitting
AssetResult
with ops or multi-assets that are triggered multiple times in the same run. - [dagster-dbt] Fixed a bug introduced in dagster-dbt 0.25.7 that would cause execution to fail when using the
@dbt_assets
decorator with anio_manager_key
specified. - [dagster-dbt] Refactored
UnitTestDefinition
instantiation to address failure to initialize dbt models with unit tests. (Thanks @kang8!) - Fixed issue where
dagster instance migrate
was failing for instances with tables having non-empty concurrency limits. - Fixed an issue where Declarative Automation sensors in code locations that included source assets referencing assets with automation conditions in other code locations would sometimes cause duplicate runs to be created.
- Turned on run blocking for concurrency keys/pools by default. For op granularity, runs are dequeued if there exists at least one op that can execute once the run has started. For run granularity, runs are dequeued if all pools have available slots.
- [dagster-dbt] Added pool support.
- [dagster-dlt] Added pool support.
- [dagster-sling] Added pool support.
Documentation
- Corrected docs on managing concurrency.
- Fixed a Markdown link to "assets metadata." (Thanks @rchrand!)
- Fixed a
pip install
command for Zsh. (Thanks @aimeecodes!)
Breaking Changes
-
The
include_sources
param on allAssetSelection
APIs has been renamed toinclude_external_assets
. -
Disallowed invalid characters (i.e. anything other than letters, numbers, dashes, and underscores) in pool names.
-
Changed the default run coordinator to be the queued run coordinator. This requires the Dagster daemon to be running for runs to be launched. To restore the previous behavior, you can add the following configuration block to your
dagster.yaml
:run_coordinator:
module: dagster.core.run_coordinator.sync_in_memory_run_coordinator
class: SyncInMemoryRunCoordinator
Deprecations
- [dagster-sdf] Moved the
dagster-sdf
library to the community-supported repo. - [dagster-blueprints] Removed the
dagster-blueprints
package. We are actively developing a project, currently named Components, that has similar goals to Blueprints of increasing the accessibility of Dagster. - Removed the
@experimental
decorator in favor of the@preview
and@beta
decorators. Also removed annotations and warnings related to the@experimental
decorator.
Dagster Plus
- Shipped a range of improvements to alerts in Dagster+, including more granular targeting, streamlined UIs, and more helpful content. Stay tuned for some final changes and a full announcement in the coming weeks!
1.9.13 (core) / 0.25.13 (libraries)
Dagster Plus
- Fixed a bug where runs using global op concurrency would raise an exception when claiming a concurrency slot.
1.9.12 (core) / 0.25.12 (libraries)
New
- Adds a top-level argument
pool
to asset/op definitions to replace the use of op tags to specify concurrency conditions. - The
dagster definitions validate
command now loads locations in-process by default, which speeds up runtime. - All published dagster libraries now include a
py.typed
file, which means their type annotations will be used by static analyzers. Previously a few libraries were missing this file. - Adds concurrency pool information in the UI for asset / op definitions that use concurrency pools.
- Optional data migration to improve performance of the Runs page. Run
dagster instance migrate
to run the data migration. The migration will update serialized backfill objects in the database with an end timestamp attribute computed by querying the runs launched by that backfill to determine when the last run completed. - Added the ability to distinguish between explicitly set concurrency pool limits and default-set pool limits. Requires a schema migration using
dagster instance migrate
. - Moves run queue configuration from its standalone deployment setting into the
concurrency
deployment setting, along with new settings for concurrency pools. - Enabled run granularity concurrency enforcement of concurrency pool limits.
- [dagster-dbt] Specifying a dbt profiles directory and profile is now supported in
DbtProject
. - [dagster-dlt]
DagsterDltTranslator.get_*
methods have been superseded in favor ofDagsterDltTranslator.get_asset_spec
. - [dagster-gcp] Added
PipesDataprocJobClient
, a Pipes client for running workloads on GCP Dataproc in Job mode. - [dagster-looker]
DagsterLookerLkmlTranslator.get_*
methods have been superseded in favor ofDagsterLookerLkmlTranslator.get_asset_spec
. - [dagster-pipes] Dagster Pipes now support passing messages and Dagster context via Google Cloud Storage.
- [ui] Created a standalone view for concurrency pools under the Deployment tab.
- [ui] When launching partitioned assets in the launchpad from the global graph, Dagster will now warn you if you have not made a partition selection.
- [ui] When viewing Runs, allow freeform search for filtering to view runs launched by schedules and sensors.
- [ui] Remove misleading run status dot from the asset events list.
- [ui] Introduce a stepped workflow for creating new Alerts.
Bugfixes
- Fixed an issue where querying for Asset Materialization events from multi-partition runs would assign incorrect partition keys to the events.
- Fixed an issue where partition keys could be dropped when converting a list of partition keys for a
MultiPartitionsDefinition
to aPartitionSubset
. - Fixed an issue where the "Reload definitions" button didn't work when using
dagster dev
on Windows, starting in the 1.9.10 release. - Fixed an issue where dagster could not be imported alongside some other libraries using gRPC with an 'api.proto' file.
- [ui] Fixed an issue where non-
None
default config fields weren't being displayed in the Launchpad view. - [ui] Fixed an issue with the search bar on the Asset partitions page incorrectly filtering partitions when combined with a status filter.
- [ui] Fixed Asset page header display of long key values.
- [ui] Fixed Slack tag in alert creation review step for orgs that have Slack workspaces connected.
- [dagster-dbt] Fixed a bug introduced in
dagster-dbt
0.25.7 which would cause execution to fail when using the@dbt_assets
decorator with anio_manager_key
specified. - [dagster-databricks] Fixed an issue with Dagster Pipes log capturing when running on Databricks.
Documentation
- Fixed a mistake in the docs concerning configuring asset concurrency tags in Dagster+.
- Added a tutorial for using GCP Dataproc with Dagster Pipes.
Dagster Plus
- Relaxed pins on the 'opentelemetry-api' dependency in the 'dagster-cloud' package to
>=1.27.0
to allow usingdagster-cloud
withprotobuf
versions 3 and 4.