Major Changes since 1.3.0 (core) / 0.19.0 (libraries)
Core
- Auto-materialize history – We’ve added a UI that tracks why assets were or were not materialized according to their
AutoMaterializePolicy
. It’s located underAssets
→ Select an asset with anAutoMaterializePolicy
→Auto-materialize history
tab. - Auto-materialize performance – We’ve made significant performance improvements to the Asset Daemon, allowing it to keep up with asset graphs containing thousands of assets and assets with a large history of previously-materialized partitions.
- Asset backfill cancellation — Asset backfills can now be canceled, bring them to parity with job backfills. When an asset backfill is requested for cancellation, the daemon cancels runs until all runs are terminated, then marks the backfill as “canceled”.
- non_argument_deps → deps – We’ve deprecated the
non_argument_deps
parameter of@asset
and@multi_asset
in favor of a newdeps
parameter. The new parameter makes it clear that this is a first-class way of defining dependencies, makes code more concise, and acceptsAssetsDefinition
andSourceAsset
objects, in addition to thestr
s andAssetKey
s that the previous parameter accepted. - Group-level asset status UI – the new Assets Overview dashboard, located underneath the Activity tab of the Overview page, shows the status all the assets in your deployment, rolled up by group.
- Op concurrency (experimental) — We’ve added a feature that allows limiting the number of concurrently executing ops across runs. [docs]
DynamicPartitionsDefinition
andSensorResult
are no longer marked experimental.- Automatically observe source assets, without defining jobs (experimental) – The
@observable_source_asset
decorator now accepts anauto_observe_interval_minutes
parameter. If the asset daemon is turned on, then the observation function will automatically be run at this interval. Downstream assets with eager auto-materialize policies will automatically run if the observation function indicates that the source asset has changed. [docs] - Dagit → Dagster UI – To reduce the number of Dagster-specific terms that new users need to learn when learning Dagster, “Dagit” has been renamed to the “The Dagster UI”. The
dagit
package is deprecated in favor of thedagster-webserver
package. - Default config in the Launchpad - When you open the launchpad to kick off a job or asset materialization, Dagster will now automatically populate the default values for each field.
dagster-dbt
- The new
@dbt_assets
decorator allows much more control over how Dagster runs your dbt project. [docs] - The new
dagster-dbt project scaffold
command line interface makes it easy to create files and directories for a Dagster project that wraps an existing dbt project. - Improved APIs for defining asset dependencies – The new
get_asset_key_for_model
andget_asset_key_for_source
utilities make it easy to specify dependencies between upstream dbt assets and downstream non-dbt assets. And you can now more easily specify dependencies between dbt models and upstream non-dbt assets by specifying Dagster asset keys in the dbt metadata for dbt sources.
Since 1.3.14 (core) / 0.19.14 (libraries)
New
- The published Dagster Docker images now use Python 3.10, instead of 3.7.
- We’ve deprecated the
non_argument_deps
parameter of@asset
and@multi_asset
in favor of a newdeps
parameter. The new parameter makes it clear that this is a first-class way of defining dependencies, makes code more concise, and acceptsAssetsDefinition
andSourceAsset
objects, in addition to thestr
s andAssetKey
s that the previous parameter accepted. - The
UPathIOManager
can now be extended to load multiple partitions asynchronously (Thanks Daniel Gafni!). - By default, Dagster will now automatically load default config values into the launchpad. This behavior can be disabled in the user settings page.
- [dagster-k8s] The Helm chart now sets readiness probes on user code deployment servers by default. These can be disabled with
dagster-user-deployments.deployments.[...].readinessProbe.enabled=false
. - [dagster-airbyte] In line with the deprecation of
non_argument_deps
in favor ofdeps
,build_airbyte_assets
now accepts adeps
parameter. - [dagstermill] In line with the deprecation of
non_argument_deps
in favor ofdeps
,define_dagstermill_asset
now accepts adeps
parameter.
Bugfixes
- Duplicate partition keys passed to
StaticPartitionsDefinition
will now raise an error. - Fixed a bug that caused lazy
AutoMaterializePolicy
's to not materialize missing assets. - [ui] Fixed an issue where global search and large DAGs were broken when using
--path-prefix
. - Schedule and sensor run submissions are now kept up to date with the current workspace, fixing an issue where a stale reference to a server would be used in some conditions.
Breaking Changes
- Support for Python 3.7 has been dropped.
build_asset_reconciliation_sensor
(Experimental) has been removed. It was deprecated in 1.3 in favor ofAutoMaterializePolicy
.asset_key(s)
properties onAssetIn
andAssetDefinition
have been removed in favor ofkey(s)
. These APIs were deprecated in 1.0.root_input_manager
andRootInputManagerDefinition
have been removed in favor ofinput_manager
andInputManagerDefinition
. These APIs were deprecated in 1.0.- [dagster-pandas] The
event_metadata_fn
parameter oncreate_dagster_pandas_dataframe_type
has been removed in favor ofmetadata_fn
. - [dagster-dbt] The library has been substantially revamped to support the new
@dbt_assets
andDbtCliResource
. See the migration guide for details.- Group names for dbt assets are now taken from a dbt model's group. Before, group names were determined using the model's subdirectory path.
- Support for
dbt-rpc
has been removed. - The class alias
DbtCloudResourceV2
has been removed. DbtCli
has been renamed toDbtCliResource
. Previously,DbtCliResource
was a class alias forDbtCliClientResource
.load_assets_from_dbt_project
andload_assets_from_dbt_manifest
now default touse_build=True
.- The default assignment of groups to dbt models loaded from
load_assets_from_dbt_project
andload_assets_from_dbt_manifest
has changed. Rather than assigning a group name using the model’s subdirectory, a group name will be assigned using the dbt model’s dbt group. - The argument
node_info_to_definition_metadata_fn
forload_assets_from_dbt_project
andload_assets_from_dbt_manifest
now overrides metadata instead of adding to it. - The arguments for
load_assets_from_dbt_project
andload_assets_from_dbt_manifest
now must be specified using keyword arguments. - When using the new
DbtCliResource
withload_assets_from_dbt_project
andload_assets_from_dbt_manifest
, stdout logs from the dbt process will now appear in the compute logs instead of the event logs.
Deprecations
- The
dagit
python package is deprecated and will be removed in 2.0 in favor ofdagster-webserver
. See the migration guide for details. - The following fields containing “dagit” in the Dagster helm chart schema have been deprecated in favor of “dagsterWebserver” equivalents (see migration guide for details):
dagit
→dagsterWebserver
ingress.dagit
→ingress.dagsterWebserver
ingress.readOnlyDagit
→ingress.readOnlyDagsterWebserver
- [Dagster Cloud ECS Agent] We've introduced performance improvements that rely on the AWS Resource Groups Tagging API. To enable, grant your agent's IAM policy permission to
tag:DescribeResources
. Without this policy, the ECS Agent will log a deprecation warning and fall back to its old behavior (listing all ECS services in the cluster and then listing each service's tags). DbtCliClientResource
,dbt_cli_resource
andDbtCliOutput
are now being deprecated in favor ofDbtCliResource
.- A number of arguments on
load_assets_from_dbt_project
andload_assets_from_dbt_manifest
are now deprecated in favor of other options. See the migration for details.
Community Contributions
Documentation
- All public methods in the Dagster API now have docstrings.
- The entirety of the documentation has been updated to now refer to the “Dagster webserver” or “Dagster UI” where “Dagit” was previously used for both entities.