Changelog
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 (Preview)
- 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+.
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.
1.9.11 (core) / 0.25.11 (libraries)
Bugfixes
- Fixed an issue where running
dagster dev
would fail on Windows machines. - Fixed an issue where partially resolved config with default values were not able to be overridden at runtime.
- Fixed an issue where default config values at the top level were not propagated to nested config values.
1.9.10 (core) / 0.25.10 (libraries)
New
- Added a new
.replace()
method toAutomationCondition
, which allows sub-conditions to be modified in-place. - Added new
.allow()
and.ignore()
methods to the booleanAutomationCondition
operators, which allow asset selections to be propagated to sub-conditions such asAutomationCondition.any_deps_match()
andAutomationCondition.all_deps_match()
. - When using the
DAGSTER_REDACT_USER_CODE_ERRORS
environment variable to mask user code errors, the unmasked log lines are now written using adagster.masked
Python logger instead of being written to stderr, allowing the format of those log lines to be customized. - Added a
get_partition_key()
helper method that can be used on hourly/daily/weekly/monthly partitioned assets to get the partition key for any given partition definition. (Thanks @Gw1p!) - [dagster-aws] Added a
task_definition_prefix
argument toEcsRunLauncher
, allowing the name of the task definition families for launched runs to be customized. Previously, the task definition families always started withrun
. - [dagster-aws] Added the
PipesEMRContainersClient
Dagster Pipes client for running and monitoring workloads on AWS EMR on EKS with Dagster. - [dagster-pipes] Added support for setting timestamp metadata (e.g.
{"my_key": {"raw_value": 111, "type": "timestamp"}}
). - [dagster-databricks, dagster-pipes] Databricks Pipes now support log forwarding when running on existing clusters. It can be enabled by setting
PipesDbfsMessageReader(include_stdio_in_messages=True)
. - [dagster-polars] Added
rust
engine support when writing a Delta Lake table using native partitioning. (Thanks @Milias!)
Bugfixes
- Fixed a bug where setting an
AutomationCondition
on an observable source asset could sometimes result in invalid backfills being launched. - Using
AndAutomationCondition.without()
no longer removes the condition's label. - [ui] Sensors targeting asset checks now list the asset checks when you click to view their targets.
- [dagster-aws] Fixed the execution of EMR Serverless jobs using
PipesEMRServerlessClient
failing if a job is in theQUEUED
state. - [dagster-pipes] Fixed Dagster Pipes log capturing when running on Databricks.
- [dagster-snowflake] Fixed a bug where passing a non-base64-encoded private key to a
SnowflakeResource
resulted in an error. - [dagster-openai] Updated
openai
kinds tag to be "OpenAI" instead of "Open AI" in line with the OpenAI branding.
Documentation
- [dagster-pipes] Added a tutorial for using Dagster Pipes with PySpark.
1.9.9 (core) / 0.25.9 (libraries)
New
- Added a new function
load_definitions_from_module
, which can load all the assets, checks, schedules, sensors, and job objects within a module scope into a single Definitions object. Check out the documentation to learn more. - When using the
DAGSTER_REDACT_USER_CODE_ERRORS
environment variable to mask user code errors, the unmasked log lines are now written using adagster.redacted_errors
Python logger instead of being written to stderr, allowing the format of those log lines to be customized. - The
croniter
package is now vendored in dagster. - [ui] Corrected the
minstral
typo and updated the Mistral logo for assetkinds
tag. - [ui] The relevant runs are now shown within the same dialog when viewing details of an automation evaluation.
- [ui] Clicking to view runs with a specific status from the backfill overview now switches to the new backfill runs tab with your filters applied, instead of the global runs page.
- [ui] In the run timeline, all run ids and timings are now shown in the hover popover.
- [ui] Added a new tab on the Runs page that shows a filterable list of recent backfills.
- [dagster-airlift] Added support for Python 3.7.
- [dagster-aws] Added a
task_definition_prefix
argument toEcsRunLauncher
, allowing the name of the task definition families for launched runs to be customized. Previously, the task definition families always started withrun
. - [dagster-azure] Moved azure fake implementations to its own submodule, paving the way for fake implementations to not be imported by default. (Thanks @futurewasfree!)
- [dagster-dlt] The
dagster-dlt
library is added. It replaces the dlt module ofdagster-embedded-elt
. - [dagster-sling] The
dagster-sling
library is added. It replaces the Sling module ofdagster-embedded-elt
. - [helm] Added support for sidecar containers for all Dagster pods, for versions of K8s after 1.29 (Native Sidecars). (Thanks @hom3r!)
Bugfixes
- Fixed an issue where the tick timeline wouldn't load for an automation condition sensor that emitted a backfill.
- Fixed a bug with asset checks where additional_deps/additional_ins were not being threaded through properly in certain cases, and would result in errors at job creation.
- Fixed a bug where the UI will hit an unexpected error when loading details for a run containing a step retry before the step has started.
- Fixed a bug with load_assets_from_x functions where we began erroring when a spec and AssetsDefinition had the same key in a given module. We now only error in this case if include_specs=True.
- Fixed a bug with
load_assets_from_modules
where AssetSpec objects were being given the key_prefix instead of the source_key_prefix. Going forward, when load_specs is set to True, only the source_key_prefix will affect AssetSpec objects. - Fixed a bug with the run queue criteria UI for branch deployments in Dagster Plus.
- [ui] Fixed the "View evaluation" links from the "Automation condition" tag popover on Runs.
- [dagster-aws] Fixed an issue with the EcsRunLauncher where it would sometimes create a new task definition revision for each run if the "task_role_arn" or "execution_role_arn" parameters were specified without the
arn:aws:iam:
prefix. - [dagster-aws] Fixed a bug with
PipesEMRServerlessClient
trying to get the dashboard URL for a run before it transitions to RUNNING state. - [dagster-dbt] Fixed an issue where group names set on partitioned dbt assets created using the
@dbt_assets
decorator would be ignored. - [dagster-azure] Fixed the default configuration for the
show_url_only
parameter on theAzureBlobComputeLogManager
. (Thanks @ion-elgreco!) - [dagster-aws] Fixed an issue handling null
networkConfiguration
parameters for the ECS run launcher. (Thanks @markgrin!)
Documentation
- Added example potential use cases for sensors. (Thanks @gianfrancodemarco!)
- Updated the tutorial to match the outlined structure. (Thanks @vincent0426!)
Deprecations
- [dagster-embedded-elt] the
dagster-embedded-elt
library is deprecated in favor ofdagster-dlt
anddagster-sling
.
Dagster Plus
- The Alert Policies page will now show a warning if a slack channel for a policy no longer exists.
1.9.8 (core) / 0.25.8 (libraries)
Bugfixes
- Fixed a bug with
load_assets_from_x
functions where we began erroring when a spec and AssetsDefinition had the same key in a given module. We now only error in this case ifinclude_specs=True
. - [dagster-azure] Fixed a bug in 1.9.6 and 1.9.7 where the default behavior of the compute log manager switched from showing logs in the UI to showing a URL. You can toggle the
show_url_only
option toTrue
to enable the URL showing behavior. - [dagster-dbt] Fixed an issue where group names set on partitioned dbt assets created using the
@dbt_assets
decorator would be ignored
1.9.7 (core) / 0.25.7 (libraries)
New
- Added new function
load_definitions_from_module
, which can load all the assets, checks, schedules, sensors, and job objects within a module scope into a single Definitions object. Check out the documentation to learn more: https://docs.dagster.io/_apidocs/definitions#dagster.load_definitions_from_module. - Previously, asset backfills could only target selections of assets in which all assets had a
BackfillPolicy
, or none of them did. Mixed selections are now supported. AssetSpecs
may now contain apartitions_def
. DifferentAssetSpecs
passed to the same invocation of@multi_asset
can now have differentPartitionsDefinitions
, as long ascan_subset=True
.- Added the option to use a thread pool to process backfills in parallel.
- Exceptions that are raised when a schedule or sensor is writing to logs will now write an error message to stdout instead of failing the tick.
- Added validation of
title
for asset backfills (not just for job backfills). - [ui] Design tweaks to the asset Automations tab.
- [ui] Asset selection filtering is now case insensitive.
- [ui] Add Teradata icon for kind tags.
- [ui] When creating and editing alerts, when the form is in an invalid state, display the reason on the disabled buttons.
- [ui] Add Automation history to asset checks.
- [ui] Improve performance of Run page for very long-running runs.
- [dagster-airbyte] The
airbyte_assets
decorator has been added. It can be used with theAirbyteCloudWorkspace
resource andDagsterAirbyteTranslator
translator to load Airbyte tables for a given connection as assets in Dagster. Thebuild_airbyte_assets_definitions
factory can be used to create assets for all the connections in your Airbyte workspace. - [dagster-airbyte] Airbyte Cloud assets can now be materialized using the
AirbyteCloudWorkspace.sync_and_poll(…)
method in the definition of a@airbyte_assets
decorator. - [dagster-airlift] Airflow imports are now compatible with Airflow 1.
- [dagster-aws] new
ecs_executor
which executes Dagster steps via AWS ECS tasks. This can be used in conjunction withECSRunLauncher
. - [dagster-dbt]
dbt-core>=1.9
is now supported. - [dagster-dbt] Adds SQL syntax highlighting to raw sql code in dbt asset descriptions.
- [dagster-looker]
load_looker_asset_specs
andbuild_looker_pdt_assets_definitions
are updated to accept an instance ofDagsterLookerApiTranslator
or custom subclass. - [dagster-looker] Type hints in the signature of
DagsterLookerApiTranslator.get_asset_spec
have been updated - the parameterlooker_structure
is now of typeLookerApiTranslatorStructureData
instead ofLookerStructureData
. Custom Looker API translators should be updated. - [dagster-powerbi]
load_powerbi_asset_specs
has been updated to accept an instance ofDagsterPowerBITranslator
or custom subclass. - [dagster-powerbi] Type hints in the signature of
DagsterPowerBITranslator.get_asset_spec
have been updated - the parameterdata
is now of typePowerBITranslatorData
instead ofPowerBIContentData
. Custom Power BI translators should be updated. - [dagster-sigma]
load_sigma_asset_specs
has been updated to accept an instance ofDagsterSigmaTranslator
or a custom subclass. - [dagster-sigma] Type hints in the signature of
DagsterLookerApiTranslator.get_asset_spec
have been updated - the parameterdata
is now of typeUnion[SigmaDatasetTranslatorData, SigmaWorkbookTranslatorData]
instead ofUnion[SigmaDataset, SigmaWorkbook]
. Custom Looker API translators should be updated. - [dagster-sigma] Added the option to filter to specific workbooks in addition to folders.
- [dagster-sigma] Added the option to skip fetching lineage for workbooks in cases where users want to build this information themselves.
- [dagster-tableau]
load_tableau_asset_specs
has been updated to accept an instance ofDagsterTableauTranslator
or custom subclass. - [dagster-tableau] Type hints in the signature of
DagsterTableauTranslator.get_asset_spec
have been updated - the parameterdata
is now of typeTableauTranslatorData
instead ofTableauContentData
. Custom Tableau translators should be updated.
Bugfixes
- Fixed an issue where sensor and schedule tick logs would accumulate disk over time on Dagster code servers.
- [ui] Fixed an issue where the app sometimes loads with styles missing.
- [ui] Fix search string highlighting in global search results.
- Fixed a race condition where immediately after adding a new asset to the graph, a freshness check sensor targeting that asset might raise an InvalidSubsetError in its first one.
- [ui] Fixed a bug where backfills launched by Declarative Automation were not being shown in the table of launched runs.
- The
dagster-airlift
package erroneously introduced a dependency ondagster
. This has been rectified -dagster
is only required for thedagster-airlift[core]
submodule.
Deprecations
- Deprecation of
@multi_asset_sensor
has been rolled back.
Dagster Plus
- Introduce the Catalog Viewer role for Users and Teams.
- Slack, MS Teams, and email alerts for run failures will list the steps that were successful or not executed.
- [experimental] The option
blobStorageSnapshotUploads
has been added which enables a new process for how definition snapshots are uploaded to Dagster Cloud. - Fixed a catalog search issue where exact prefix matches are not prioritized in the search results.
- Fixed a bug with Insights metric customization.
1.9.6 (core) / 0.25.6 (libraries)
New
- Updated
cronitor
pin to allow versions>= 5.0.1
to enable use ofDayOfWeek
as 7. Cronitor4.0.0
is still disallowed. (Thanks, @joshuataylor!) - Added flag
checkDbReadyInitContainer
to optionally disable db check initContainer. - Added job name filtering to increase the throughput for run status sensors that target jobs.
- [ui] Added Google Drive icon for
kind
tags. (Thanks, @dragos-pop!) - [ui] Renamed the run lineage sidebar on the Run details page to
Re-executions
. - [ui] Sensors and schedules that appear in the Runs page are now clickable.
- [ui] Runs targeting assets now show more of the assets in the Runs page.
- [dagster-airbyte] The destination type for an Airbyte asset is now added as a
kind
tag for display in the UI. - [dagster-gcp]
DataprocResource
now receives an optional parameterlabels
to be attached to Dataproc clusters. (Thanks, @thiagoazcampos!) - [dagster-k8s] Added a
checkDbReadyInitContainer
flag to the Dagster Helm chart to allow disabling the default init container behavior. (Thanks, @easontm!) - [dagster-k8s] K8s pod logs are now logged when a pod fails. (Thanks, @apetryla!)
- [dagster-sigma] Introduced
build_materialize_workbook_assets_definition
which can be used to build assets that run materialize schedules for a Sigma workbook. - [dagster-snowflake]
SnowflakeResource
andSnowflakeIOManager
both acceptadditional_snowflake_connection_args
config. This dictionary of arguments will be passed to thesnowflake.connector.connect
method. This config will be ignored if you are using thesqlalchemy
connector. - [helm] Added the ability to set user-deployments labels on k8s deployments as well as pods.
Bugfixes
- Assets with self dependencies and
BackfillPolicy
are now evaluated correctly during backfills. Self dependent assets no longer result in serial partition submissions or disregarded upstream dependencies. - Previously, the freshness check sensor would not re-evaluate freshness checks if an in-flight run was planning on evaluating that check. Now, the freshness check sensor will kick off an independent run of the check, even if there's already an in flight run, as long as the freshness check can potentially fail.
- Previously, if the freshness check was in a failing state, the sensor would wait for a run to update the freshness check before re-evaluating. Now, if there's a materialization later than the last evaluation of the freshness check and no planned evaluation, we will re-evaluate the freshness check automatically.
- [ui] Fixed run log streaming for runs with a large volume of logs.
- [ui] Fixed a bug in the Backfill Preview where a loading spinner would spin forever if an asset had no valid partitions targeted by the backfill.
- [dagster-aws]
PipesCloudWatchMessageReader
correctly identifies streams which are not ready yet and doesn't fail onThrottlingException
. (Thanks, @jenkoian!) - [dagster-fivetran] Column metadata can now be fetched for Fivetran assets using
FivetranWorkspace.sync_and_poll(...).fetch_column_metadata()
. - [dagster-k8s] The k8s client now waits for the main container to be ready instead of only waiting for sidecar init containers. (Thanks, @OrenLederman!)
Documentation
- Fixed a typo in the
dlt_assets
API docs. (Thanks, @zilto!)
1.9.5 (core) / 0.25.5 (libraries)
New
- The automatic run retry daemon has been updated so that there is a single source of truth for if a run will be retried and if the retry has been launched. Tags are now added to run at failure time indicating if the run will be retried by the automatic retry system. Once the automatic retry has been launched, the run ID of the retry is added to the original run.
- When canceling a backfill of a job, the backfill daemon will now cancel all runs launched by that backfill before marking the backfill as canceled.
- Dagster execution info (tags such as
dagster/run-id
,dagster/code-location
,dagster/user
and Dagster Cloud environment variables) typically attached to external resources are now available underDagsterRun.dagster_execution_info
. SensorReturnTypesUnion
is now exported for typing the output of sensor functions.- [dagster-dbt] dbt seeds now get a valid code version (Thanks @marijncv!).
- Manual and automatic retries of runs launched by backfills that occur while the backfill is still in progress are now incorporated into the backfill's status.
- Manual retries of runs launched by backfills are no longer considered part of the backfill if the backfill is complete when the retry is launched.
- [dagster-fivetran] Fivetran assets can now be materialized using the FivetranWorkspace.sync_and_poll(…) method in the definition of a
@fivetran_assets
decorator. - [dagster-fivetran]
load_fivetran_asset_specs
has been updated to accept an instance ofDagsterFivetranTranslator
or custom subclass. - [dagster-fivetran] The
fivetran_assets
decorator was added. It can be used with theFivetranWorkspace
resource andDagsterFivetranTranslator
translator to load Fivetran tables for a given connector as assets in Dagster. Thebuild_fivetran_assets_definitions
factory can be used to create assets for all the connectors in your Fivetran workspace. - [dagster-aws]
ECSPipesClient.run
now waits up to 70 days for tasks completion (waiter parameters are configurable) (Thanks @jenkoian!) - [dagster-dbt] Update dagster-dbt scaffold template to be compatible with uv (Thanks @wingyplus!).
- [dagster-airbyte] A
load_airbyte_cloud_asset_specs
function has been added. It can be used with theAirbyteCloudWorkspace
resource andDagsterAirbyteTranslator
translator to load your Airbyte Cloud connection streams as external assets in Dagster. - [ui] Add an icon for the
icechunk
kind. - [ui] Improved ui for manual sensor/schedule evaluation.
Bugfixes
- Fixed database locking bug for the
ConsolidatedSqliteEventLogStorage
, which is mostly used for tests. - [dagster-aws] Fixed a bug in the ECSRunLauncher that prevented it from accepting a user-provided task definition when DAGSTER_CURRENT_IMAGE was not set in the code location.
- [ui] Fixed an issue that would sometimes cause the asset graph to fail to render on initial load.
- [ui] Fix global auto-materialize tick timeline when paginating.
1.9.4 (core) / 0.25.4 (libraries)
New
- Global op concurrency is now enabled on the default SQLite storage. Deployments that have not been migrated since
1.6.0
may need to rundagster instance migrate
to enable. - Introduced
map_asset_specs
to enable modifyingAssetSpec
s andAssetsDefinition
s in bulk. - Introduced
AssetSpec.replace_attributes
andAssetSpec.merge_attributes
to easily alter properties of an asset spec. - [ui] Add a "View logs" button to open tick logs in the sensor tick history table.
- [ui] Add Spanner kind icon.
- [ui] The asset catalog now supports filtering using the asset selection syntax.
- [dagster-pipes, dagster-aws]
PipesS3MessageReader
now has a new parameterinclude_stdio_in_messages
which enables log forwarding to Dagster via Pipes messages. - [dagster-pipes] Experimental: A new Dagster Pipes message type
log_external_stream
has been added. It can be used to forward external logs to Dagster via Pipes messages. - [dagster-powerbi] Opts in to using admin scan APIs to pull data from a Power BI instance. This can be disabled by passing
load_powerbi_asset_specs(..., use_workspace_scan=False)
. - [dagster-sigma] Introduced an experimental
dagster-sigma snapshot
command, allowing Sigma workspaces to be captured to a file for faster subsequent loading.
Bugfixes
- Fixed a bug that caused
DagsterExecutionStepNotFoundError
errors when trying to execute an asset check step of a run launched by a backfill. - Fixed an issue where invalid cron strings like "0 0 30 2 *" that represented invalid dates in February were still allowed as Dagster cron strings, but then failed during schedule execution. Now, these invalid cronstrings will raise an exception when they are first loaded.
- Fixed a bug where
owners
added toAssetOut
s when defining a@graph_multi_asset
were not added to the underlyingAssetsDefinition
. - Fixed a bug where using the
&
or|
operators onAutomationCondition
s with labels would cause that label to be erased. - [ui] Launching partitioned asset jobs from the launchpad now warns if no partition is selected.
- [ui] Fixed unnecessary middle truncation occurring in dialogs.
- [ui] Fixed timestamp labels and "Now" line rendering bugs on the sensor tick timeline.
- [ui] Opening Dagster's UI with a single job defined takes you to the Overview page rather than the Job page.
- [ui] Fix stretched tags in backfill table view for non-partitioned assets.
- [ui] Open automation sensor evaluation details in a dialog instead of navigating away.
- [ui] Fix scrollbars in dark mode.
- [dagster-sigma] Workbooks filtered using a
SigmaFilter
no longer fetch lineage information. - [dagster-powerbi] Fixed an issue where reports without an upstream dataset dependency would fail to translate to an asset spec.
Deprecations
- [dagster-powerbi]
DagsterPowerBITranslator.get_asset_key
is deprecated in favor ofDagsterPowerBITranslator.get_asset_spec().key
- [dagster-looker]
DagsterLookerApiTranslator.get_asset_key
is deprecated in favor ofDagsterLookerApiTranslator.get_asset_spec().key
- [dagster-sigma]
DagsterSigmaTranslator.get_asset_key
is deprecated in favor ofDagsterSigmaTranslator.get_asset_spec().key
- [dagster-tableau]
DagsterTableauTranslator.get_asset_key
is deprecated in favor ofDagsterTableauTranslator.get_asset_spec().key
1.9.3 (core) / 0.25.3 (libraries)
New
-
Added
run_id
to therun_tags
index to improve database performance. Rundagster instance migrate
to update the index. (Thanks, @HynekBlaha!) -
Added icons for
kind
tags: Cassandra, ClickHouse, CockroachDB, Doris, Druid, Elasticsearch, Flink, Hadoop, Impala, Kafka, MariaDB, MinIO, Pinot, Presto, Pulsar, RabbitMQ, Redis, Redpanda, ScyllaDB, Starrocks, and Superset. (Thanks, @swrookie!) -
Added a new icon for the Denodo kind tag. (Thanks, @tintamarre!)
-
Errors raised from defining more than one
Definitions
object at module scope now include the object names so that the source of the error is easier to determine. -
[ui] Asset metadata entries like
dagster/row_count
now appear on the events page and are properly hidden on the overview page when they appear in the sidebar. -
[dagster-aws]
PipesGlueClient
now attaches AWS Glue metadata to Dagster results produced during Pipes invocation. -
[dagster-aws]
PipesEMRServerlessClient
now attaches AWS EMR Serverless metadata to Dagster results produced during Pipes invocation and adds Dagster tags to the job run. -
[dagster-aws]
PipesECSClient
now attaches AWS ECS metadata to Dagster results produced during Pipes invocation and adds Dagster tags to the ECS task. -
[dagster-aws]
PipesEMRClient
now attaches AWS EMR metadata to Dagster results produced during Pipes invocation. -
[dagster-databricks]
PipesDatabricksClient
now attaches Databricks metadata to Dagster results produced during Pipes invocation and adds Dagster tags to the Databricks job. -
[dagster-fivetran] Added
load_fivetran_asset_specs
function. It can be used with theFivetranWorkspace
resource andDagsterFivetranTranslator
translator to load your Fivetran connector tables as external assets in Dagster. -
[dagster-looker] Errors are now handled more gracefully when parsing derived tables.
-
[dagster-sigma] Sigma assets now contain extra metadata and kind tags.
-
[dagster-sigma] Added support for direct workbook to warehouse table dependencies.
-
[dagster-sigma] Added
include_unused_datasets
field toSigmaFilter
to disable pulling datasets that aren't used by a downstream workbook. -
[dagster-sigma] Added
skip_fetch_column_data
option to skip loading Sigma column lineage. This can speed up loading large instances. -
[dagster-sigma] Introduced an experimental
dagster-sigma snapshot
command, allowing Sigma workspaces to be captured to a file for faster subsequent loading.Introducing:
dagster-airlift
(experimental)dagster-airlift
is coming out of stealth. See the initial Airlift RFC here, and the following documentation to learn more:- A full Airflow migration tutorial.
- A tutorial on federating between Airflow instances.
More Airflow-related content is coming soon! We'd love for you to check it out, and post any comments / questions in the
#airflow-migration
channel in the Dagster slack.
Bugfixes
- Fixed a bug in run status sensors where setting incompatible arguments
monitor_all_code_locations
andmonitored_jobs
did not raise the expected error. (Thanks, @apetryla!) - Fixed an issue that would cause the label for
AutomationCondition.any_deps_match()
andAutomationCondition.all_deps_match()
to render incorrectly whenallow_selection
orignore_selection
were set. - Fixed a bug which could cause code location load errors when using
CacheableAssetsDefinitions
in code locations that containedAutomationConditions
- Fixed an issue where the default multiprocess executor kept holding onto subprocesses after their step completed, potentially causing
Too many open files
errors for jobs with many steps. - [ui] Fixed an issue introduced in 1.9.2 where the backfill overview page would sometimes display extra assets that were targeted by the backfill.
- [ui] Fixed "Open in Launchpad" button when testing a schedule or sensor by ensuring that it opens to the correct deployment.
- [ui] Fixed an issue where switching a user setting was immediately saved, rather than waiting for the change to be confirmed.
- [dagster-looker] Unions without unique/distinct criteria are now properly handled.
- [dagster-powerbi] Fixed an issue where reports without an upstream dataset dependency would fail to translate to an asset spec.
- [dagster-sigma] Fixed an issue where API fetches did not paginate properly.
Documentation
- Added an Airflow Federation Tutorial.
- Added
dagster-dingtalk
to the list of community supported libraries. - Fixed typos in the
dagster-wandb
(Weights and Biases) documentation. (Thanks, @matt-weingarten!) - Updated the Role-based Access Control (RBAC) documentation.
- Added additional information about filtering to the
dagster-sigma
documentation.
Dagster Plus
- [ui] Fixed an issue with filtering and catalog search in branch deployments.
- [ui] Fixed an issue where the asset graph would reload unexpectedly.
1.9.2 (core) / 0.25.2 (libraries)
New
- Introduced a new constructor,
AssetOut.from_spec
, that will construct anAssetOut
from anAssetSpec
. - [ui] Column tags are now displayed in the
Column name
section of the asset overview page. - [ui] Introduced an icon for the
gcs
(Google Cloud Storage) kind tag. - [ui] Introduced icons for
report
andsemanticmodel
kind tags. - [ui] The tooltip for a tag containing a cron expression now shows a human-readable, timezone-aware cron string.
- [ui] Asset check descriptions are now sourced from docstrings and rendered in the UI. (Thanks, @marijncv!)
- [dagster-aws] Added option to propagate tags to ECS tasks when using the
EcsRunLauncher
. (Thanks, @zyd14!) - [dagster-dbt] You can now implement
DagsterDbtTranslator.get_code_version
to customize the code version for your dbt assets. (Thanks, @Grzyblon!) - [dagster-pipes] Added the ability to pass arbitrary metadata to
PipesClientCompletedInvocation
. This metadata will be attached to all materializations and asset checks stored during the pipes invocation. - [dagster-powerbi] During a full workspace scan, owner and column metadata is now automatically attached to assets.
Bugfixes
- Fixed an issue with
AutomationCondition.execution_in_progress
which would cause it to evaluate toTrue
for unpartitioned assets that were part of a run that was in progress, even if the asset itself had already been materialized. - Fixed an issue with
AutomationCondition.run_in_progress
that would cause it to ignore queued runs. - Fixed an issue that would cause a
default_automation_condition_sensor
to be constructed for user code servers running on dagster version< 1.9.0
even if the legacyauto_materialize: use_sensors
configuration setting was set toFalse
. - [ui] Fixed an issue when executing asset checks where the wrong job name was used in some situations. The correct job name is now used.
- [ui] Selecting assets with 100k+ partitions no longer causes the asset graph to temporarily freeze.
- [ui] Fixed an issue that could cause a GraphQL error on certain pages after removing an asset.
- [ui] The asset events page no longer truncates event history in cases where both materialization and observation events are present.
- [ui] The backfill coordinator logs tab no longer sits in a loading state when no logs are available to display.
- [ui] Fixed issue which would cause the "Partitions evaluated" label on an asset's automation history page to incorrectly display
0
in cases where all partitions were evaluated. - [ui] Fix "Open in Playground" link when testing a schedule or sensor by ensuring that it opens to the correct deployment.
- [ui] Fixed an issue where the asset graph would reload unexpectedly.
- [dagster-dbt] Fixed an issue where the SQL filepath for a dbt model was incorrectly resolved when the dbt manifest file was built on a Windows machine, but executed on a Unix machine.
- [dagster-pipes] Asset keys containing embedded
/
characters now work correctly with Dagster Pipes.
Documentation
- Community-hosted integrations are now listed on the Integrations page.
- Added a tutorial, reference page and API docs for
dagster-airlift
. - Fixed a typo in the label for superseded APIs. (Thanks, @matt-weingarten!)
Deprecations
- The
types-sqlalchemy
package is no longer included in thedagster[pyright]
extra package.
Dagster Plus
- [ui] The Environment Variables table can now be sorted by name and update time.
- [ui] The code location configuration dialog now contains more metadata about the code location.
- [ui] Fixed an issue where the incorrect user icons were shown in the Users table when a search filter had been applied.
1.9.1 (core) / 0.25.1 (libraries)
New
dagster project scaffold
now has an option to create dagster projects from templates with excluded files/filepaths.- [ui] Filters in the asset catalog now persist when navigating subdirectories.
- [ui] The Run page now displays the partition(s) a run was for.
- [ui] Filtering on owners/groups/tags is now case-insensitive.
- [dagster-tableau] the helper function
parse_tableau_external_and_materializable_asset_specs
is now available to parse a list of Tableau asset specs into a list of external asset specs and materializable asset specs. - [dagster-looker] Looker assets now by default have owner and URL metadata.
- [dagster-k8s] Added a per_step_k8s_config configuration option to the k8s_job_executor, allowing the k8s configuration of individual steps to be configured at run launch time (thanks @Kuhlwein!)
- [dagster-fivetran] Introduced
DagsterFivetranTranslator
to customize assets loaded from Fivetran. - [dagster-snowflake]
dagster_snowflake.fetch_last_updated_timestamps
now supports ignoring tables not found in Snowflake instead of raising an error.
Bugfixes
- Fixed issue which would cause a
default_automation_condition_sensor
to be constructed for user code servers running on dagster version < 1.9.0 even if the legacyauto_materialize: use_sensors
configuration setting was set toFalse
. - Fixed an issue where running
dagster instance migrate
on Dagster version 1.9.0 constructed a SQL query that exceeded the maximum allowed depth. - Fixed an issue where wiping a dynamically partitioned asset causes an error.
- [dagster-polars]
ImportError
s are no longer raised when bigquery libraries are not installed [#25708]
Documentation
- [dagster-dbt] A guide on how to use dbt defer with Dagster branch deployments has been added to the dbt reference.
1.9.0 (core) / 0.25.0 (libraries)
Major changes since 1.8.0 (core) / 0.24.0 (libraries)
Automation
- Declarative Automation, the system which enables setting per-asset
AutomationConditions
, is no longer experimental. We now recommend using this system in all cases where asset-centric orchestration is desired. A suite of built-in static constructors have been added for common usecases, such asAutomationCondition.on_missing()
(which can fill in missing partitions of assets as soon as upstream data is available), andAutomationCondition.all_deps_blocking_checks_passed()
(which can prevent materialization of assets until all upstream blocking checks have passed). - You can now assign
AutomationConditions
to asset checks, via theautomation_condition
parameter on@asset_check
orAssetCheckSpec
. - You can now assign
AutomationConditions
to observable source assets, via theautomation_condition
parameter on@observable_source_asset
. - [experimental] You can now define custom subclasses of
AutomationCondition
to execute arbitrary Python code in the context of a broader expression. This allows you to compose built-in conditions with custom business logic. - The
target
arguments on schedules and sensors are now marked stable, allowing a stable way for schedules and sensors to target asset selections without needing to define a job.
Integrations
- Introduced a slate of integrations with business intelligence (BI) tools, enabling dashboards, views, and reports to be represented in the Dagster asset graph.
- A rich set of metadata is now automatically collected by our suite of ELT integrations.
- The
dagster/table_name
metadata tag, containing the fully-qualified name of the destination model, has been added for Airbyte, dlt, Fivetran and Sling assets. - The
dagster/row_count
metadata tag, containing the number of records loaded in the corresponding run, has been added for dlt and Sling assets. - The
dagster/column_schema
metadata tag, containing column schema information of the destination tables, has been added for Fivetran assets. - Column lineage information is now collected for Sling assets.
- The
- dagster-pipes are replacing the now deprecated Step Launchers as the new recommended approach for executing remote Spark jobs. Three new Pipes clients for running Spark applications on Amazon Web Services have been added:
dagster_aws.pipes.PipesGlueClient
dagster_aws.pipes.PipesEMRServerlessClient
dagster_aws.pipes.PipesEMRClient
UI
- Several changes have been made to the information architecture to make it easier to find what you’re looking for:
- Backfills have been moved from their own tab underneath the Overview page to entries within the table on the Runs page. This reflects the fact that backfills and runs are similar entities that share most properties. You can continue to use the legacy Runs page with the “Revert to legacy Runs page” user setting. (GitHub Discussion)
- “Jobs” is now a page reachable from the top-level navigation pane. It replaces the Jobs tab within the Overview page.
- “Automations” is now a page reachable from the top-level navigation pane. It replaces the schedule and sensor tabs within the Overview page.
@asset
andAssetSpec
now have akinds
attribute that enables specifying labels that show up on asset nodes in the asset graph in the UI. This supersedes thecompute_kind
attribute.
Changes since 1.8.13 (core) / 0.24.13 (libraries)
New
- The
tags
parameter to@asset
andAssetSpec
is no longer marked as experimental. - The
@observable_source_asset
decorator now supports anautomation_condition
argument. AutomationCondition
and associated APIs are no longer marked as experimental.- Added a new
use_user_code_server
parameter toAutomationConditionSensorDefinition
. If set, the sensor will be evaluated in the user code server (as traditional sensors are), allowing customAutomationCondition
subclasses to be evaluated. - Added a new column to the BulkActions table, a new column to the Runs table, and a new BackfillTags table to improve the performance of the Runs page. To take advantage of these performance improvements, run
dagster instance migrate
. This migration involves a schema migration to add the new columns and table, and a data migration to populate the new columns for historical backfills and runs. - Performance improvements when loading definitions with multi-assets with many asset keys.
- [ui] The previously-experimental changes to the top nav are now enabled for all users.
- [ui] Added new code location pages which provide information regarding library versions, metadata, and definitions.
- [ui] The new version of the Runs page is now enabled by default. To use the legacy version of the Runs page, toggle the "Revert to legacy Runs page" user setting.
- [ui] Clicking an asset with failed partitions on the asset health overview now takes you to a list of the failed partitions.
- [ui] The Materialize button runs pre-flight checks more efficiently, resulting in faster run launch times.
- [dagster-pipes] Added support for multi-container log streaming (thanks, @MattyKuzyk!)
- [dagster-docker]
container_kwargs.stop_timeout
can now be set when using theDockerRunLauncher
ordocker_executor
to configure the amount of time that Docker will wait when terminating a run for it to clean up before forcibly stopping it with a SIGKILL signal. - [dagster-dbt] Performance improvements when loading definitions using
build_dbt_asset_selection
.
Bugfixes
- [ui] Fixed redirect behavior on full pageloads of the legacy auto-materialize overview page.
- [ui] Plots for assets that emit materialization and observation events at different rates no longer display a time period missing the more frequent event type.
- [ui] Fixed issue causing scrolling to misbehave on the concurrency settings page.
- [helm] The blockOpConcurrencyLimitedRuns section of queuedRunCoordinator now correctly templates the appropriate config.
- [dagster-pipes] Fixed issue where k8s ops would fail after 4 hours (thanks, @MattyKuzyk!)
Documentation
- [dagster-dbt] Added guide for using dbt defer with Dagster branch deployments.
- [docs] Step Launchers documentation has been removed and replaced with references to Dagster Pipes.
- [docs] Fixed code example in Dagster Essentials (thanks, @aleexharris!)
Breaking Changes
dagster
no longer supports Python 3.8, which hit EOL on 2024-10-07.dagster
now requirespydantic>=2
.- By default,
AutomationConditionSensorDefinitions
will now emit backfills to handle cases where more than one partition of an asset is requested on a given tick. This allows that asset'sBackfillPolicy
to be respected. This feature can be disabled by settingallow_backfills
toFalse
. - Passing a custom
PartitionsDefinition
subclass into aDefinitions
object now issues an error instead of a deprecation warning. AssetExecutionContext
is no longer a subclass ofOpExecutionContext
. At this release,AssetExecutionContext
andOpExecutionContext
implement the same methods, but in the future, the methods implemented by each class may diverge. If you have written helper functions withOpExecutionContext
type annotations, they may need to be updated to includeAssetExecutionContext
depending on your usage. Explicit calls toisinstance(context, OpExecutionContext)
will now fail ifcontext
is anAssetExecutionContext
.- The
asset_selection
parameter onAutomationConditionSensorDefinition
has been renamed totarget
, to align with existing sensor APIs. - The experimental
freshness_policy_sensor
has been removed, as it relies on the long-deprecatedFreshnessPolicy
API. - The deprecated
external_assets_from_specs
andexternal_asset_from_spec
methods have been removed. Users should useAssetsDefinition(specs=[...])
, or pass specs directly into theDefinitions
object instead. AssetKey
objects can no longer be iterated over or indexed in to. This behavior was never an intended access pattern and in all observed cases was a mistake.- The
dagster/relation_identifier
metadata key has been renamed todagster/table_name
. - [dagster-ge]
dagster-ge
now only supportsgreat_expectations>=0.17.15
. Thege_validation_op_factory
API has been replaced with the API previously calledge_validation_op_factory_v3
. - [dagster-aws] Removed deprecated parameters from
dagster_aws.pipes.PipesGlueClient.run
. - [dagster-embedded-elt] Removed deprecated parameter
dlt_dagster_translator
from@dlt_assets
. Thedagster_dlt_translator
parameter should be used instead. - [dagster-polars] Dropped support for saving storage-level arbitrary metadata via IOManagers.
Deprecations
- The
DataBricksPysparkStepLauncher
,EmrPySparkStepLauncher
, and any custom subclass ofStepLauncher
have been marked as deprecated, but will not be removed from the codebase until Dagster 2.0 is released, meaning they will continue to function as they currently do for the foreseeable future. Their functionality has been superseded by the interfaces provided bydagster-pipes
, and so future development work will be focused there. - The experimental
multi_asset_sensor
has been marked as deprecated, as its main use cases have been superseded by theAutomationCondition
APIs. However, it will not be removed until version 2.0.0.
1.8.13 (core) / 0.24.13 (libraries)
New
- Performance improvements when loading code locations using multi-assets with many asset keys.
AutomationCondition.in_progress()
now will be true if an asset partition is part of an in-progress backfill that has not yet executed it. The prior behavior, which only considered runs, is encapsulated inAutomationCondition.execution_in_progress()
.- [ui] Added tag filter to the jobs page.
- [ui] Preserve user login state for a longer period of time.
- [dagster-dbt] Performance improvements when loading definitions using
build_dbt_asset_selection
. - [dagster-docker]
container_kwargs.stop_timeout
can now be set when using theDockerRunLauncher
ordocker_executor
to configure the amount of time that Docker will wait when terminating a run for it to clean up before forcibly stopping it with a SIGKILL signal. - [dagster-sigma] The Sigma integration now fetches initial API responses in parallel, speeding up initial load.
- [dagster-looker] Attempt to naively render liquid templates for derived table sql.
- [dagster-looker] Added support for views and explores that rely on refinements or extends.
- [dagster-looker] When fetching explores and dashboards from the Looker API, retrieve in parallel.
Bugfixes
- Fixed an issue with
AutomationCondition.eager()
that could cause it to attempt to launch a second attempt of an asset in cases where it was skipped or failed during a run where one of its parents successfully materialized. - Fixed an issue which would cause
AutomationConditionSensorDefinitions
to not be evaluated if theuse_user_code_server
value was toggled after the initial evaluation. - Fixed an issue where configuration values for aliased pydantic fields would be dropped.
- [ui] Fix an issue in the code locations page where invalid query parameters could crash the page.
- [ui] Fix navigation between deployments when query parameters are present in the URL.
- [helm] the blockOpConcurrencyLimitedRuns section of queuedRunCoordinator now correctly templates the appropriate config.
- [dagster-sigma] Fixed pulling incomplete data for very large workspaces.
1.8.12 (core) / 0.24.12 (libraries)
New
- The
AutomationCondition.eager()
,AutomationCondition.missing()
, andAutomationCondition.on_cron
conditions are now compatible with asset checks. - Added
AssetSelection.materializable()
, which returns only assets that are materializable in an existing selection. - Added a new
AutomationCondition.all_deps_blocking_checks_passed
condition, which can be used to prevent materialization when any upstream blocking checks have failed. - Added a
code_version
parameter to the@graph_asset
decorator. - If a
LaunchPartitionBackfill
mutation is submitted to GQL with invalid partition keys, it will now return an earlyPartitionKeysNotFoundError
. AssetSelection.checks_for_assets
now acceptsAssetKey
s and string asset keys, in addition toAssetsDefinition
s.- [ui] Added a search bar to partitions tab on the asset details page.
- [ui] Restored docked left nav behavior for wide viewports.
- [dagster-aws]
get_objects
now has asince_last_modified
that enables only fetching objects modified after a given timestamp. - [dagster-aws] New AWS EMR Dagster Pipes client (
dagster_aws.pipes.PipesEMRCLient
) for running and monitoring AWS EMR jobs from Dagster. - [dagster-looker] Pinned the looker-sdk dependency below 24.18.0 to avoid this issue: https://github.com/looker-open-source/sdk-codegen/issues/1518.
Bugfixes
- Fixed an issue which could cause incorrect evaluation results when using self-dependent partition mappings with
AutomationConditions
that operate over dependencies. - [ui] Fixed an issue where the breadcumb on asset pages would flicker nonstop.
- [dagster-embedded-elt] Fixed extraction of metadata for dlt assets whose source and destination identifiers differ.
- [dagster-databricks] Fixed a permissioning gap that existed with the
DatabricksPySparkStepLauncher
, so that permissions are now set correctly for non-admin users. - [dagster-dbt] Fixed an issue where column metadata generated with
fetch_column_metadata
did not work properly for models imported through dbt dependencies.
Documentation
- [dagster-k8s]
DagsterK8sPipesClient.run
now shows up in API docs.
Dagster Plus
- [ui] Fixed a bug in the catalog UI where owners filters were not applied correctly.
- [ui] Fixed width of the column lineage dropdown selector on the asset page.
- [ui] Column lineage now correctly renders when set on asset definition metadata
- [ui] Fixed Settings link on the list of deployments, for users in the legacy navigation flag.
1.8.11 (core) / 0.24.11 (libraries)
New
- [experimental] AutomationCondition.eager() will now only launch runs for missing partitions which become missing after the condition has been added to the asset. This avoids situations in which the eager policy kicks off a large amount of work when added to an asset with many missing historical static/dynamic partitions.
- [experimental] Added a new AutomationCondition.asset_matches() condition, which can apply a condition against an arbitrary asset in the graph.
- [experimental] Added the ability to specify multiple kinds for an asset with the kinds parameter.
- [dagster-github] Added
create_pull_request
method onGithubClient
that enables creating a pull request. - [dagster-github] Added
create_ref
method onGithubClient
that enables creating a new branch. - [dagster-embedded-elt] dlt assets now generate column metadata for child tables.
- [dagster-embedded-elt] dlt assets can now fetch row count metadata with
dlt.run(...).fetch_row_count()
for both partitioned and non-partitioned assets. Thanks @kristianandre! - [dagster-airbyte] relation identifier metadata is now attached to Airbyte assets.
- [dagster-embedded-elt] relation identifier metadata is now attached to sling assets.
- [dagster-embedded-elt] relation identifier metadata is now attached to dlt assets.
Bugfixes
PartitionedConfig
objects can now return aRunConfig
without causing a crash.- Corrected the
AssetIn.__new__
typing for the dagster_type argument. - [dagster-embedded-elt] dlt assets now generate correct column metadata after the first materialization.
- [dagster-embedded-elt] Sling's
fetch_row_count()
method now works for databases returning uppercase column names. Thanks @kristianandre! - [dagster-gcp] Ensure blob download is flushed to temporary file for
GCSFileManager.read
operations. Thanks @ollie-bell!
Dagster Plus
- Fixed a bug in the catalog UI where owners filters were not applied correctly.
1.8.10 (core) / 0.24.10 (libraries)
New
JobDefinition
,@job
, anddefine_asset_job
now take arun_tags
parameter. Ifrun_tags
are defined, they will be attached to all runs of the job, andtags
will not be. Ifrun_tags
is not set, thentags
are attached to all runs of the job (status quo behavior). This change enables the separation of definition-level and run-level tags on jobs.- Then env var
DAGSTER_COMPUTE_LOG_TAIL_WAIT_AFTER_FINISH
can now be used to pause before capturing logs (thanks @HynekBlaha!) - The
kinds
parameter is now available onAssetSpec
. OutputContext
now exposes theAssetSpec
of the asset that is being stored as an output (thanks, @marijncv!)- [experimental] Backfills are incorporated into the Runs page to improve observability and provide a more simplified UI. See the GitHub discussion for more details.
- [ui] The updated navigation is now enabled for all users. You can revert to the legacy navigation via a feature flag. See GitHub discussion for more.
- [ui] Improved performance for loading partition statuses of an asset job.
- [dagster-docker] Run containers launched by the DockerRunLauncher now include dagster/job_name and dagster/run_id labels.
- [dagster-aws] The ECS launcher now automatically retries transient ECS RunTask failures (like capacity placement failures).
Bugfixes
- Changed the log volume for global concurrency blocked runs in the run coordinator to be less spammy.
- [ui] Asset checks are now visible in the run page header when launched from a schedule.
- [ui] Fixed asset group outlines not rendering properly in Safari.
- [ui] Reporting a materialization event now removes the asset from the asset health "Execution failures" list and returns the asset to a green / success state.
- [ui] When setting an
AutomationCondition
on an asset, the label of this condition will now be shown in the sidebar on the Asset Details page. - [ui] Previously, filtering runs by Created date would include runs that had been updated after the lower bound of the requested time range. This has been updated so that only runs created after the lower bound will be included.
- [ui] When using the new experimental navigation flag, added a fix for the automations page for code locations that have schedules but no sensors.
- [ui] Fixed tag wrapping on asset column schema table.
- [ui] Restored object counts on the code location list view.
- [ui] Padding when displaying warnings on unsupported run coordinators has been corrected (thanks @hainenber!)
- [dagster-k8s] Fixed an issue where run termination sometimes did not terminate all step processes when using the k8s_job_executor, if the termination was initiated while it was in the middle of launching a step pod.
Documentation
- Corrections on the Dagster instance concept page (thanks @mheguy!)
- Corrections on the code locations concept page (thanks @tiberiuana!)
- Repeated words removed (thanks @tianzedavid!)
- [dagster-deltalake] Corrections and improvements (thanks @avriiil!)
- [dagster-aws] Added docs for PipesEMRServerlessClient.
- [dagster-cli] A guide on how to validate Dagster definitions using
dagster definitions validate
have been added. - [dagster-databricks] Added docs for using Databricks Pipes with existing clusters.
- [dagster-dbt] Corrected sample sql code (thanks @b-per!)
1.8.9 (core) / 0.24.9 (libraries)
New
AssetSpec
now has awith_io_manager_key
method that returns anAssetSpec
with the appropriate metadata entry to dictate the key for the IO manager used to load it. The deprecation warning forSourceAsset
now references this method.- Added a
max_runtime_seconds
configuration option to run monitoring, allowing you to specify that any run in your Dagster deployment should terminate if it exceeds a certain runtime. Prevoiusly, jobs had to be individually tagged with adagster/max_runtime
tag in order to take advantage of this feature. Jobs and runs can still be tagged in order to override this value for an individual run. - It is now possible to set both
tags
and a customexecution_fn
on aScheduleDefinition
. Scheduletags
are intended to annotate the definition and can be used to search and filter in the UI. They will not be attached to run requests emitted from the schedule if a customexecution_fn
is provided. If no customexecution_fn
is provided, then for back-compatibility the tags will also be automatically attached to run requests emitted from the schedule. SensorDefinition
and all of its variants/decorators now accept atags
parameter. The tags annotate the definition and can be used to search and filter in the UI.- Added the
dagster definitions validate
command to Dagster CLI. This command validates if Dagster definitions are loadable. - [dagster-databricks] Databricks Pipes now allow running tasks in existing clusters.
Bugfixes
- Fixed an issue where calling
build_op_context
in a unit test would sometimes raise aTypeError: signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object
Exception on process shutdown. - [dagster-webserver] Fix an issue where the incorrect sensor/schedule state would appear when using
DefaultScheduleStatus.STOPPED
/DefaultSensorStatus.STOPPED
after performing a reset.
Documentation
- [dagster-pipes] Fixed inconsistencies in the k8s pipes example.
- [dagster-pandas-pyspark] Fixed example in the Spark/Pandas SDA guide.
Dagster Plus
- Fixed an issue where users with Launcher permissions for a particular code location were not able to cancel backfills targeting only assets in that code location.
- Fixed an issue preventing long-running alerts from being sent when there was a quick subsequent run.
1.8.8 (core) / 0.24.8 (libraries)
New
- Added
--partition-range
option todagster asset materialize
CLI. This option only works for assets with single-run Backfill Policies. - Added a new
.without()
method toAutomationCondition.eager()
,AutomationCondition.on_cron()
, andAutomationCondition.on_missing()
which allows sub-conditions to be removed, e.g.AutomationCondition.eager().without(AutomationCondition.in_latest_time_window())
. - Added
AutomationCondition.on_missing()
, which materializes an asset partition as soon as all of its parent partitions are filled in. pyproject.toml
can now load multiple Python modules as individual Code Locations. Thanks, @bdart!- [ui] If a code location has errors, a button will be shown to view the error on any page in the UI.
- [dagster-adls2] The
ADLS2PickleIOManager
now acceptslease_duration
configuration. Thanks, @0xfabioo! - [dagster-embedded-elt] Added an option to fetch row count metadata after running a Sling sync by calling
sling.replicate(...).fetch_row_count()
. - [dagster-fivetran] The dagster-fivetran integration will now automatically pull and attach column schema metadata after each sync.
Bugfixes
- Fixed an issue which could cause errors when using
AutomationCondition.any_downstream_condition()
with downstreamAutoMaterializePolicy
objects. - Fixed an issue where
process_config_and_initialize
did not properly handle processing nested resource config. - [ui] Fixed an issue that would cause some AutomationCondition evaluations to be labeled
DepConditionWrapperCondition
instead of the key that they were evaluated against. - [dagster-webserver] Fixed an issue with code locations appearing in fluctuating incorrect state in deployments with multiple webserver processes.
- [dagster-embedded-elt] Fixed an issue where Sling column lineage did not correctly resolve int the Dagster UI.
- [dagster-k8s] The
wait_for_pod
check now waits until all pods are available, rather than erroneously returning after the first pod becomes available. Thanks @easontm!
Dagster Plus
- Backfill daemon logs are now available in the "Coordinator Logs" tab in a backfill details page.
- Users without proper code location permissions can no longer edit sensor cursors.
1.8.7 (core) / 0.24.7 (libraries)
New
- The
AssetSpec
constructor now raises an error if an invalid group name is provided, instead of an error being raised when constructing theDefinitions
object. dagster/relation_identifier
metadata is now automatically attached to assets which are stored using a DbIOManager.- [ui] Streamlined the code location list view.
- [ui] The “group by” selection on the Timeline Overview page is now part of the query parameters, meaning it will be retained when linked to directly or when navigating between pages.
- [dagster-dbt] When instantiating
DbtCliResource
, theproject_dir
argument will now override theDBT_PROJECT_DIR
environment variable if it exists in the local environment (thanks, @marijncv!). - [dagster-embedded-elt] dlt assets now generate
rows_loaded
metadata (thanks, @kristianandre!). - Added support for pydantic version 1.9.0.
Bugfixes
- Fixed a bug where setting
asset_selection=[]
onRunRequest
objects yielded from sensors usingasset_selection
would select all assets instead of none. - Fixed bug where the tick status filter for batch-fetched graphql sensors was not being respected.
- [examples] Fixed missing assets in
assets_dbt_python
example. - [dagster-airbyte] Updated the op names generated for Airbyte assets to include the full connection ID, avoiding name collisions.
- [dagster-dbt] Fixed issue causing dagster-dbt to be unable to load dbt projects where the adapter did not have a
database
field set (thanks, @dargmuesli!) - [dagster-dbt] Removed a warning about not being able to load the
dbt.adapters.duckdb
module when loading dbt assets without that package installed.
Documentation
- Fixed typo on the automation concepts page (thanks, @oedokumaci!)
Dagster Plus
- You may now wipe specific asset partitions directly from the execution context in user code by calling
DagsterInstance.wipe_asset_partitions
. - Dagster+ users with a "Viewer" role can now create private catalog views.
- Fixed an issue where the default IOManager used by Dagster+ Serverless did not respect setting
allow_missing_partitions
as metadata on a downstream asset.
1.8.6 (core) / 0.24.6 (libraries)
Bugfixes
- Fixed an issue where runs in Dagster+ Serverless that materialized partitioned assets would sometimes fail with an
object has no attribute '_base_path'
error. - [dagster-graphql] Fixed an issue where the
statuses
filter argument to thesensorsOrError
GraphQL field was sometimes ignored when querying GraphQL for multiple sensors at the same time.
1.8.5 (core) / 0.24.5 (libraries)
New
- Updated multi-asset sensor definition to be less likely to timeout queries against the asset history storage.
- Consolidated the
CapturedLogManager
andComputeLogManager
APIs into a single base class. - [ui] Added an option under user settings to clear client side indexeddb caches as an escape hatch for caching related bugs.
- [dagster-aws, dagster-pipes] Added a new
PipesECSClient
to allow Dagster to interface with ECS tasks. - [dagster-dbt] Increased the default timeout when terminating a run that is running a
dbt
subprocess to wait 25 seconds for the subprocess to cleanly terminate. Previously, it would only wait 2 seconds. - [dagster-sdf] Increased the default timeout when terminating a run that is running an
sdf
subprocess to wait 25 seconds for the subprocess to cleanly terminate. Previously, it would only wait 2 seconds. - [dagster-sdf] Added support for caching and asset selection (Thanks, akbog!)
- [dagster-dlt] Added support for
AutomationCondition
usingDagsterDltTranslator.get_automation_condition()
(Thanks, aksestok!) - [dagster-k8s] Added support for setting
dagsterDaemon.runRetries.retryOnAssetOrOpFailure
to False in the Dagster Helm chart to prevent op retries and run retries from simultaneously firing on the same failure. - [dagster-wandb] Removed usage of deprecated
recursive
parameter (Thanks, chrishiste!)
Bugfixes
- [ui] Fixed a bug where in-progress runs from a backfill could not be terminated from the backfill UI.
- [ui] Fixed a bug that caused an "Asset must be part of at least one job" error when clicking on an external asset in the asset graph UI
- Fixed an issue where viewing run logs with the latest 5.0 release of the watchdog package raised an exception.
- [ui] Fixed issue causing the “filter to group” action in the lineage graph to have no effect.
- [ui] Fixed case sensitivity when searching for partitions in the launchpad.
- [ui] Fixed a bug which would redirect to the events tab for an asset if you loaded the partitions tab directly.
- [ui] Fixed issue causing runs to get skipped when paging through the runs list (Thanks, @HynekBlaha!)
- [ui] Fixed a bug where the asset catalog list view for a particular group would show all assets.
- [dagster-dbt] fix bug where empty newlines in raw dbt logs were not being handled correctly.
- [dagster-k8s, dagster-celery-k8s] Correctly set
dagster/image
label when image is provided fromuser_defined_k8s_config
. (Thanks, @HynekBlaha!) - [dagster-duckdb] Fixed an issue for DuckDB versions older than 1.0.0 where an unsupported configuration option,
custom_user_agent
, was provided by default - [dagster-k8s] Fixed an issue where Kubernetes Pipes failed to create a pod if the op name contained capital or non-alphanumeric containers.
- [dagster-embedded-elt] Fixed an issue where dbt assets downstream of Sling were skipped
Deprecations
- [dagser-aws]: Direct AWS API arguments in
PipesGlueClient.run
have been deprecated and will be removed in1.9.0
. The newparams
argument should be used instead.
Dagster Plus
- Fixed a bug that caused an error when loading the launchpad for a partition, when using Dagster+ with an agent with version below 1.8.2.
- Fixed an issue where terminating a Dagster+ Serverless run wouldn’t forward the termination signal to the job to allow it to cleanly terminate.
1.8.4 (core) / 0.24.4 (libraries)
Bugfixes
- Fixed an issue where viewing run logs with the latest 5.0 release of the watchdog package raised an exception.
- Fixed a bug that caused an "Asset must be part of at least one job" error when clicking on an external asset in the asset graph UI
Dagster Plus
- The default io_manager on Serverless now supports the
allow_missing_partitions
configuration option. - Fixed a bug that caused an error when loading the launchpad for a partition, when using in Dagster+ with an agent with version below 1.8.2
1.8.3 (core) / 0.24.3 (libraries) (YANKED)
This version of Dagster resulted in errors when trying to launch runs that target individual asset partitions)
New
- When different assets within a code location have different
PartitionsDefinition
s, there will no longer be an implicit asset job__ASSET_JOB_...
for eachPartitionsDefinition
; there will just be one with all the assets. This reduces the time it takes to load code locations with assets with many differentPartitionsDefinition
s.
1.8.2 (core) / 0.24.2 (libraries)
New
- [ui] Improved performance of the Automation history view for partitioned assets
- [ui] You can now delete dynamic partitions for an asset from the ui
- [dagster-sdf] Added support for quoted table identifiers (Thanks, @akbog!)
- [dagster-openai] Add additional configuration options for the
OpenAIResource
(Thanks, @chasleslr!) - [dagster-fivetran] Fivetran assets now have relation identifier metadata.
Bugfixes
- [ui] Fixed a collection of broken links pointing to renamed Declarative Automation pages.
- [dagster-dbt] Fixed issue preventing usage of
MultiPartitionMapping
with@dbt_assets
(Thanks, @arookieds!) - [dagster-azure] Fixed issue that would cause an error when configuring an
AzureBlobComputeLogManager
without asecret_key
(Thanks, @ion-elgreco and @HynekBlaha!)
Documentation
- Added API docs for
AutomationCondition
and associated static constructors. - [dagster-deltalake] Corrected some typos in the integration reference (Thanks, @dargmuesli!)
- [dagster-aws] Added API docs for the new
PipesCloudWatchMessageReader
1.8.1 (core) / 0.24.1 (libraries)
New
- If the sensor daemon fails while submitting runs, it will now checkpoint its progress and attempt to submit the remaining runs on the next evaluation.
build_op_context
andbuild_asset_context
now accepts arun_tags
argument.- Nested partially configured resources can now be used outside of
Definitions
. - [ui] Replaced GraphQL Explorer with GraphiQL.
- [ui] The run timeline can now be grouped by job or by automation.
- [ui] For users in the experimental navigation flag, schedules and sensors are now in a single merged automations table.
- [ui] Logs can now be filtered by metadata keys and values.
- [ui] Logs for
RUN_CANCELED
events now display relevant error messages. - [dagster-aws] The new
PipesCloudWatchMessageReader
can consume logs from CloudWatch as pipes messages. - [dagster-aws] Glue jobs launched via pipes can be automatically canceled if Dagster receives a termination signal.
- [dagster-azure]
AzureBlobComputeLogManager
now supports service principals, thanks @ion-elgreco! - [dagster-databricks]
dagster-databricks
now supportsdatabricks-sdk<=0.17.0
. - [dagster-datahub]
dagster-datahub
now allows pydantic versions below 3.0.0, thanks @kevin-longe-unmind! - [dagster-dbt] The
DagsterDbtTranslator
class now supports a modfiying theAutomationCondition
for dbt models by overridingget_automation_condition
. - [dagster-pandera]
dagster-pandera
now supportspolars
. - [dagster-sdf] Table and columns tests can now be used as asset checks.
- [dagster-embedded-elt] Column metadata and lineage can be fetched on Sling assets by chaining the new
replicate(...).fetch_column_metadata()
method. - [dagster-embedded-elt] dlt resource docstrings will now be used to populate asset descriptions, by default.
- [dagster-embedded-elt] dlt assets now generate column metadata.
- [dagster-embedded-elt] dlt transformers now refer to the base resource as upstream asset.
- [dagster-openai]
OpenAIResource
now supportsorganization
,project
andbase_url
for configurting the OpenAI client, thanks @chasleslr! - [dagster-pandas][dagster-pandera][dagster-wandb] These libraries no longer pin
numpy<2
, thanks @judahrand!
Bugfixes
- Fixed a bug for job backfills using backfill policies that materialized multiple partitions in a single run would be launched multiple times.
- Fixed an issue where runs would sometimes move into a FAILURE state rather than a CANCELED state if an error occurred after a run termination request was started.
- [ui] Fixed a bug where an incorrect dialog was shown when canceling a backfill.
- [ui] Fixed the asset page header breadcrumbs for assets with very long key path elements.
- [ui] Fixed the run timeline time markers for users in timezones that have off-hour offsets.
- [ui] Fixed bar chart tooltips to use correct timezone for timestamp display.
- [ui] Fixed an issue introduced in the 1.8.0 release where some jobs created from graph-backed assets were missing the “View as Asset Graph” toggle in the Dagster UI.
Breaking Changes
- [dagster-airbyte]
AirbyteCloudResource
now supportsclient_id
andclient_secret
for authentication - theapi_key
approach is no longer supported. This is motivated by the deprecation of portal.airbyte.com on August 15, 2024.
Deprecations
- [dagster-databricks] Removed deprecated authentication clients provided by
databricks-cli
anddatabricks_api
- [dagster-embedded-elt] Removed deprecated Sling resources
SlingSourceConnection
,SlingTargetConnection
- [dagster-embedded-elt] Removed deprecated Sling resources
SlingSourceConnection
,SlingTargetConnection
- [dagster-embedded-elt] Removed deprecated Sling methods
build_sling_assets
, andsync
Documentation
- The Integrating Snowflake & dbt with Dagster+ Insights guide no longer erroneously references BigQuery, thanks @dnxie12!
1.8.0 (core) / 0.24.0 (libraries)
Major changes since 1.7.0 (core) / 0.22.0 (libraries)
Core definition APIs
- You can now pass
AssetSpec
objects to theassets
argument ofDefinitions
, to let Dagster know about assets without associated materialization functions. This replaces the experimentalexternal_assets_from_specs
API, as well asSourceAsset
s, which are now deprecated. UnlikeSourceAsset
s,AssetSpec
s can be used for non-materializable assets with dependencies on Dagster assets, such as BI dashboards that live downstream of warehouse tables that are orchestrated by Dagster. [docs]. - [Experimental] You can now merge
Definitions
objects together into a single largerDefinitions
object, using the newDefinitions.merge
API (doc). This makes it easier to structure large Dagster projects, as you can construct aDefinitions
object for each sub-domain and then merge them together at the top level.
Partitions and backfills
BackfillPolicy
s assigned to assets are now respected for backfills launched from jobs that target those assets.- You can now wipe materializations for individual asset partitions.
Automation
- [Experimental] You can now add
AutomationCondition
s to your assets to have them automatically executed in response to specific conditions (docs). These serve as a drop-in replacement and improvement over theAutoMaterializePolicy
system, which is being marked as deprecated. - [Experimental] Sensors and schedules can now directly target assets, via the new
target
parameter, instead of needing to construct a job. - [Experimental] The Timeline page can now be grouped by job or automation. When grouped by automation, all runs launched by a sensor responsible for evaluating automation conditions will get bucketed to that sensor in the timeline instead of the "Ad-hoc materializations" row. Enable this by opting in to the
Experimental navigation
feature flag in user settings.
Catalog
- The Asset Details page now prominently displays row count and relation identifier (table name, schema, database), when corresponding asset metadata values are provided. For more information, see the metadata and tags docs.
- Introduced code reference metadata which can be used to open local files in your editor, or files in source control in your browser. Dagster can automatically attach code references to your assets’ Python source. For more information, see the docs.
Data quality and reliability
- [Experimental] Metadata bound checks – The new
build_metadata_bounds_checks
API [doc] enables easily defining asset checks that fail if a numeric asset metadata value falls outside given bounds. - [Experimental] Freshness checks from dbt config - Freshness checks can now be set on dbt assets, straight from dbt. Check out the API docs for build_freshness_checks_from_dbt_assets for more.
Integrations
- Dagster Pipes (
PipesSubprocessClient
) and its integrations with Lambda (PipesLambdaClient
), Kubernetes (PipesK8sClient
), and Databricks (PipesDatabricksClient
) are no longer experimental. - The new
DbtProject
class (docs) makes it simpler to define dbt assets that can be constructed in both development and production.DbtProject.prepare_if_dev()
eliminates boilerplate for local development, and thedagster-dbt project prepare-and-package
CLI can helps pull deps and generate the manifest at build time. - [Experimental] The
dagster-looker
package can be used to define a set of Dagster assets from a Looker project that is defined in LookML and is backed by git. See the GitHub discussion for more details.
Dagster Plus
- Catalog views — In Dagster+, selections into the catalog can now be saved and shared across an organization as catalog views. Catalog views have a name and description, and can be applied to scope the catalog, asset health, and global asset lineage pages against the view’s saved selection.
- Code location history — Dagster+ now stores a history of code location deploys, including the ability to revert to a previously deployed configuration.
Changes since 1.7.16 (core) / 0.22.16 (libraries)
New
-
The target of both schedules and sensors can now be set using an experimental
target
parameter that accepts anAssetSelection
or list of assets. Any assets passed this way will also be included automatically in theassets
list of the containingDefinitions
object. -
ScheduleDefinition
andSensorDefinition
now have atarget
argument that can accept anAssetSelection
. -
You can now wipe materializations for individual asset partitions.
-
AssetSpec
now has apartitions_def
attribute. All theAssetSpec
s provided to a@multi_asset
must have the samepartitions_def
. -
The
assets
argument onmaterialize
now acceptsAssetSpec
s. -
The
assets
argument onDefinitions
now acceptsAssetSpec
s. -
The new
merge
method onDefinitions
enables combining multipleDefinitions
object into a single largerDefinition
s object with their combined contents. -
Runs requested through the Declarative Automation system now have a
dagster/from_automation_condition: true
tag applied to them. -
Changed the run tags query to be more performant. Thanks @egordm!
-
Dagster Pipes and its integrations with Lambda, Kubernetes, and Databricks are no longer experimental.
-
The
Definitions
constructor will no longer raise errors when the provided definitions aren’t mutually resolve-able – e.g. when there are conflicting definitions with the same name, unsatisfied resource dependencies, etc. These errors will still be raised at code location load time. The newDefinitions.validate_loadable
static method also allows performing the validation steps that used to occur in constructor. -
AssetsDefinitions
object provided to aDefinitions
object will now be deduped by reference equality. That is, the following will now work:from dagster import asset, Definitions
@asset
def my_asset(): ...
defs = Definitions(assets=[my_asset, my_asset]) # Deduped into just one AssetsDefinition. -
[dagster-embedded-elt] Adds translator options for dlt integration to override auto materialize policy, group name, owners, and tags
-
[dagster-sdf] Introducing the dagster-sdf integration for data modeling and transformations powered by sdf.
-
[dagster-dbt] Added a new
with_insights()
method which can be used to more easily attach Dagster+ Insights metrics to dbt executions:dbt.cli(...).stream().with_insights()
Bugfixes
- Dagster now raises an error when an op yields an output corresponding to an unselected asset.
- Fixed a bug that caused downstream ops within a graph-backed asset to be skipped when they were downstream of assets within the graph-backed assets that aren’t part of the selection for the current run.
- Fixed a bug where code references did not work properly for self-hosted GitLab instances. Thanks @cooperellidge!
- [ui] When engine events with errors appear in run logs, their metadata entries are now rendered correctly.
- [ui] The asset catalog greeting now uses your first name from your identity provider.
- [ui] The create alert modal now links to the alerting documentation, and links to the documentation have been updated.
- [ui] Fixed an issue introduced in the 1.7.13 release where some asset jobs were only displaying their ops in the Dagster UI instead of their assets.
- Fixed an issue where terminating a run while it was using the Snowflake python connector would sometimes move it into a FAILURE state instead of a CANCELED state.
- Fixed an issue where backfills would sometimes move into a FAILURE state instead of a CANCELED state when the backfill was canceled.
Breaking Changes
- The experimental and deprecated
build_asset_with_blocking_check
has been removed. Use theblocking
argument on@asset_check
instead. - Users with
mypy
andpydantic
1 may now experience a “metaclass conflict” error when usingConfig
. Previously this would occur when using pydantic 2. AutoMaterializeSensorDefinition
has been renamedAutomationConditionSensorDefinition
.- The deprecated methods of the
ComputeLogManager
have been removed. CustomComputeLogManager
implementations must also implement theCapturedLogManager
interface. This will not affect any of the core implementations available in the coredagster
package or the library packages. - By default, an
AutomationConditionSensorDefinition
with the name“default_automation_condition_sensor”
will be constructed for each code location, and will handle evaluating and launching runs for allAutomationConditions
andAutoMaterializePolicies
within that code location. You can restore the previous behavior by setting:in your dagster.yaml file.auto_materialize:
use_sensors: False - [dagster-dbt] Support for
dbt-core==1.6.*
has been removed because the version is now end-of-life. - [dagster-dbt] The following deprecated APIs have been removed:
KeyPrefixDagsterDbtTranslator
has been removed. To modify the asset keys for a set of dbt assets, implementDagsterDbtTranslator.get_asset_key()
instead.- Support for setting freshness policies through dbt metadata on field
+meta.dagster_freshness_policy
has been removed. Use+meta.dagster.freshness_policy
instead. - Support for setting auto-materialize policies through dbt metadata on field
+meta.dagster_auto_materialize_policy
has been removed. Use+meta.dagster.auto_materialize_policy
instead. - Support for
load_assets_from_dbt_project
,load_assets_from_dbt_manifest
, anddbt_cli_resource
has been removed. Use@dbt_assets
,DbtCliResource
, andDbtProject
instead to define how to load dbt assets from a dbt project and to execute them. - Support for rebuilt ops like
dbt_run_op
,dbt_compile_op
, etc has been removed. Use@op
andDbtCliResource
directly to execute dbt commands in an op.
- Properties on
AssetExecutionContext
,OpExecutionContext
, andScheduleExecutionContext
that includedatetime
s now return standard Pythondatetime
objects instead of Pendulum datetimes. The types in the public API for these properties have always beendatetime
and this change should not be breaking in the majority of cases, but Pendulum datetimes include some additional methods that are not present on standard Pythondatetime
s, and any code that was using those methods will need to be updated to either no longer use those methods or transform thedatetime
into a Pendulum datetime. See the 1.8 migration guide for more information and examples. MemoizableIOManager
,VersionStrategy
,SourceHashVersionStrategy
,OpVersionContext
,ResourceVersionContext
, andMEMOIZED_RUN_TAG
, which have been deprecated and experimental since pre-1.0, have been removed.
Deprecations
- The Run Status column of the Backfills page has been removed. This column was only populated for backfills of jobs. To see the run statuses for job backfills, click on the backfill ID to get to the Backfill Details page.
- The experimental
external_assets_from_specs
API has been deprecated. Instead, you can directly passAssetSpec
objects to theassets
argument of theDefinitions
constructor. AutoMaterializePolicy
has been marked as deprecated in favor ofAutomationCondition
, which provides a significantly more flexible and customizable interface for expressing when an asset should be executed. More details on how to migrate yourAutoMaterializePolicies
can be found in the Migration Guide.SourceAsset
has been deprecated. See the major changes section and migration guide for more details.- The
asset_partition_key_for_output
,asset_partition_keys_for_output
, andasset_partition_key_range_for_output
, andasset_partitions_time_window_for_output
methods onOpExecutionContext
have been deprecated. Instead, use the corresponding property:partition_key
,partition_keys
,partition_key_range
, orpartition_time_window
. - The
partitions_def
parameter ondefine_asset_job
is now deprecated. Thepartitions_def
for an asset job is determined from thepartitions_def
attributes on the assets it targets, so this parameter is redundant. - [dagster-shell]
create_shell_command_op
andcreate_shell_script_op
have been marked as deprecated in favor ofPipesSubprocessClient
(see details in Dagster Pipes subprocess reference) - [dagster-airbyte]
load_assets_from_airbyte_project
is now deprecated, because the Octavia CLI that it relies on is an experimental feature that is no longer supported. Usebuild_airbyte_assets
orload_assets_from_airbyte_project
instead.
Documentation
- The Asset Checks concept overview page now includes a table with all the built-in asset checks.
- The Asset Metadata page concept page now includes a table with all the standard “dagster/” metadata keys.
- Fixed a typo in the documentation for
MonthlyPartitionsDefinition
. Thanks @zero_stroke! - Added a new page about Declarative Automation and a guide about customizing automation conditions
- Fixed a link in the Limiting concurrency guide.