- Added a new
MetadataValue.job metadata type, which can be used to link to a Dagster job from other objects in the UI.
- [asset backfills] Previously, when partitions definitions were changed after backfill launch, the asset backfill page would be blank. Now, when partitions definitions are changed, the backfill page will display statuses by asset.
- [dagster-bigquery, dagster-duckdb, dagster-snowflake]. The BigQuery, DuckDB, and Snowflake I/O Managers will now determine the schema (dataset for BigQuery) in the following order of precedence:
schema metadata set on the
op, I/O manager
key_prefix set on the
asset. Previously, all methods for setting the schema/dataset were mutually exclusive, and setting more than one would raise an exception.
- [dagster-shell] Added option to exclude the shell command from logs.
- [dagster-dbt] When running
DAGSTER_DBT_PARSE_PROJECT_ON_LOAD=1 dagster dev in a new scaffolded project from
dagster-dbt project scaffold, dbt artifacts for loading the project are now created in a static
- Problematic inheritance that was causing pydantic warnings to be emitted has been corrected.
- It's now possible to use the logger of
ScheduleEvaluationContext when testing via
metadata from a
Failure exception is now hoisted up to the failure that culminates when retry limits are exceeded.
- Fixed bug in which the second instance of an hour partition at a DST boundary would never be shown as “materialized” in certain UI views.
- Fixed an issue where backfilling an hourly partition that occurred during a fall Daylight Savings Time transition sometimes raised an error.
- [auto-materialize] Fix issue where assets which were skipped because required parent partitions did not exist would not be materialized once those partitions came into existence.
- [dagster ecs] The exit code of failed containers is now included in the failure message.
- [dagster pipes] The
PipesK8sClient now correctly raises on failed containers.
- [dagster pipes] Using pipes within ops instead of assets no longer enforces problematic constraints.
- [helm] Added
maxTickRetries configuration options for the scheduler in the Helm chart.
- [embedded-elt] Fixed crashes for non-unicode logs.
- [UI] Fixed an issue where the test sensor dialog for a sensor that targeted multiple jobs would claim that all of the runs were targeting the same job.
- [UI] Asset keys, job names, and other strings in Dagster UI no longer truncate unnecessarily in Firefox in some scenarios
- [UI] A larger “View prior events” button on the Asset > Partitions page makes it easier to see the historical materializations of a specific partition of an asset.
- [asset-checks, dbt] Fixed a bug that that caused asset checks to not execute when a run was not a subset. As part of the fix, the default dbt selection selection string will not be used for dbt runs, even when not in a subset. Instead we pass the explicit set of models and tests to execute, with
- [asset-checks] Fixed a bug that caused asset checks defined with
@asset(check_specs=... to not cooperate with the
key_prefix argument of the
load_assets_from_modules method and it’s compatriots.
- [asset-checks] Fixed a bug that caused errors when launching a job from the UI that excluded asset checks.
- [asset-checks] Fixed a bug that caused UI errors when a check run was deleted.
- Marked the experimental Airbyte ingestion-as-code feature as deprecated, to be removed in a future release. We suggest users interested in managing their Airbyte connections in code use the Airbyte terraform provider.
define_asset_job now accepts an
op_retry_policy argument, which specifies a default retry policies for all of the ops in the job. (thanks Eugenio Contreras!)
- Fix IOManager not being able to load assets with MultiPartitionsDefinition - thanks @cyberosa!
- [dagster-essentials] Three typo fixes in Lesson 8 - thanks Colton @cmpadden!
observable_source_asset decorator now accepts a
- [dagster pipes] an
implicit_materializations argument has been added to
get_materialize_result to control whether an implicit materialization event is created or not.
- [embedded-elt] Added a new builder and
SlingConnectionResource to allow reusing sources and targets interoperably.
- [UI] Updated the experimental concurrency limits configuration page to show per-op runtime info and control.
- [UI] The Auto-materialize history tab for each asset now only includes rows for evaluations where the result of evaluating the policy has changed. Previously, it would also show a row in the table representing periods of time where nothing changed.
- [asset-checks, dbt]
build_dbt_asset_selection now also selects asset checks based on their underlying dbt tests. E.g.
build_dbt_asset_selection([my_dbt_assets], dbt_select="tag:data_quality") will select the assets and checks for any models and tests tagged with ‘data_quality’.
- Branch deployments now use the same timeouts for starting and canceling runs that are set for their parent full deployment, instead of a fixed value of 10 minutes.
- [k8s agent] Setting labels on a code location will now apply those labels to the kubernetes deployment and service for that code location, rather than just applying them to the pod for that code location.
- [ui] Enabled collapsing asset groups in the global asset view when the new experimental asset graph is turned on in User Settings
- [ui] The experimental asset graph sidebar now supports keyboard navigation via arrow keys
- [ui] You can now right click nodes in the asset graph to materialize them or filter the graph
- [ui] Jobs can now be searched by run ID
- [ui] You can now launch runs from the job actions menu
- [auto-materialize] A new
AutoMaterializeRule.materialize_on_cron() rule makes it possible to create policies which materialize assets on a regular cadence.
- [auto-materialize] If a partition-mapping-related error occurs within the Asset Daemon, a more informative error message will be provided.
- [dagster-databricks] Extended the set of available config options to the Databricks step launcher - thanks @zyd14!
- Fixed an issue where some schedules incorrectly skipped ticks during Daylight Savings Times transitions.
- Returning a
SensorResult from a sensor no longer overwrites a cursor if it was set via the context.
- Fixed issue which could cause incorrect execution order when executing multi-assets with
can_subset=True alongside assets which were upstream of some assets in the multi-asset, and downstream of others.
- Previously, when creating an
HourlyPartitionsDefinition with a non-UTC timezone and the default format string (or any format string not including a UTC-offset), there was no way to disambiguate between the first and second instance of the repeated hour during a daylight saving time transition. Now, for the one hour per year in which this ambiguity exists, the partition key of the second instance of the hour will have the UTC offset automatically appended to it.
- [asset checks] Fixed a bug that caused an error when passing
- [dagster-dbt] Fixed a bug in
dagster-dbt that caused some dbt tests to not be selected as asset checks.
- [dagster-dbt] Fixed an issue where multiple copies of the dbt manifest were held in memory when loading a dbt project as software-defined assets.
email_on_failure sensor called deprecated methods on the context. This has been fixed
- [dagster-deltalake] Added Delta Lake support along with support for pandas and polars. Thanks Robert Pack @roeap!
- [dagster-graphql] Fixed the asset cursor format to use a normalized format - thanks @sisidra!
- [dagster-databricks] Extended the set of available config options to the Databricks step launcher - thanks @zyd14!
DagsterInstance.report_runless_asset_event is now public.
AutoMaterializeRule.materialize_on_parent_updated now accepts an
updated_parents_filter of type
AutoMaterializeAssetPartitionsFilter, which allows only materializing based on updates from runs with a required set of tags.
- Reporting runless events and manually marking an asset as successfully materialized are no possible with “Launcher” level permissions
- [ui] Improved search and render performance of Users page, especially for large lists of users.
- [billing] Fixed issues with correctly displaying your tax ID
- Fixed an error when trying to directly invoke a run status sensor when passing resources.
- [dagster-airbyte][dagster-fivetran] Fixed an issue where
EnvVars used in Airbyte or Fivetran resources would show up as their processed values in the launchpad when loading assets from a live Fivetran or Airbyte instance.
- Substantially improved performance of the Dagster insights DBT/Snowflake usage job.
AssetExecutionContext now have a
- [dagster-ui] The asset graph layout algorithm has been changed to a much faster one called “tight-tree”
- [dagster-ui] The Runs table filters has a top level filter for partitions
dbt-core==1.7.* is now supported.
- Fixed an issue where some schedules skipped a tick on the day after a fall Daylight Savings Time transition.
- Fixed a bug that caused backfill policies that execute multiple partitions in a single run not to work with dynamic partitions.
- Fixed a bug that caused an error when
build_schedule_from_partitioned_job was used with a job with multi-partitioned assets and the
partitions_def argument wasn’t provided to
- We now raise an error early if the empty string is provided as an asset’s group name (Thanks Sierrra!)
- Fixed an issue where custom setup and teardown methods were not properly called on nested Pythonic resources.
- Added a warning message when op or asset config is passed as an argument not named
- [dagster-cloud] Fixed an issue where overriding the default I/O manager could break the Snowflake-dbt insights job.
- [auto-materialize] Fixed an issue where materializing an unpartitioned parent of a dynamic-partitioned asset would only result in the latest dynamic partition of that asset being requested. Now, all partitions will be requested.
- [dagster-embedded-elt] Fixed an issue in
dagster-embedded-elt where sling’s
updated_at parameter was set to the incorrect type
- [dagster-ui] Fixed an issue in the launchpad where selecting a partition wouldn’t correctly overwrite fields using the partition’s specific configuration
- A docs fix to the testing concepts page, thanks @NicolaiLolansen!
- The schema can now be overridden per asset in DB IO managers, thanks @jrstats!
- Improved failure recovery and retry behavior when the daemon that launches auto-materialization runs fails or crashes in the middle of a tick.
- [asset-checks] UI performance for displaying check results is improved
- [asset-checks] Removed noisy experimental warning about
- [op-concurrency] Fixed a bug where concurrency slots were not getting assigned if a run that was assigned a slot was deleted before the slot had actually been claimed during execution.
- [dagster-pipes] The
PipesSubprocessClient now inherits the environment variables of the parent process in the launched subprocess.
- [dagster-pipes] Exceptions are now reported in the event log for framework components and from the external process.
- [dagster-k8s] The
PipesK8sClient will now attempt to load the appropriate kubernetes config, and exposes arguments for controlling this process.
- [ui] The launch asset backfill modal now offers a preview dialog showing the targeted asset partitions and their backfill policies when partition mapping or varying backfill policies are present.
- [asset-checks] New
load_asset_checks_from_modules functions for loading asset checks in tandem with
- Previously, the daemon process would terminate with an error if it believed that a thread might be hanging, which sometimes caused undesirable terminations when doing large backfills or auto-materializing many assets. Now, the daemon process will emit a warning instead of terminate.
dagster-dbt project scaffold now uses
~/.dbt/profiles.yml if a
profiles.yml is not present in the dbt project directory.
@dbt_assets now support
- [dagster-dbt] Self dependencies can now be enabled for dbt models that are represented by
@dbt_assets. To enable this, add the following metadata to your dbt model’s metadata in your dbt project:
- Fixed an issue where Dagster imports would throw errors when using
pydantic<2.0.0 but having
- Previously, asset backfills that targeted partitioned assets with a
LastPartitionMapping dependency would raise an error. This has been fixed.
- Fixed a multipartitions partition mapping bug where a
instance is not available to load partitions error was raised.
- [asset-checks] Fixed an issue with conflicting op names when using
- [ui] Viewing run logs containing very large messages no longer causes the UI to crash in Safari on macOS
- [ui] Drilling into the graph of a graph-backed asset with 4+ inputs or outputs no longer causes the asset graph to crash with a rendering error.
- [ui] On the backfill details page, clicking to a specific asset correctly shows the partitions that were materialized for that asset when partition mapping is in use.
- [ui] The Asset > Partition page now loads partition details more quickly in cases where calculating the staleness of the partition took a significant amount of time.
- Fixed a bug introduced in
1.5.0 where instances that haven’t been migrated to the latest schema hit an error upon run deletion.
- [auto-materialize] Previously, if an asset partition was skipped on a tick for one reason, and then processed and skipped on a later tick for an additional reason, only the most recent skip reason would be tracked. Now, all skip reasons are tracked.
- [dagster-dbt] Fixed an issue where if an
exclude that didn’t match any dbt nodes was used in
@dbt_assets, an error would be raised. The error is now properly handled.
- [dagster-dbt] When invoking
DbtCliResource.cli(...) in an
AssetMaterialization's instead of
Output are now emitted.
- Global op concurrency slots are now released in between retries of op execution failures.
- Updated the tutorial to reflect best practices and APIs as of Dagster 1.5
report_asset_observation REST endpoint for reporting runless events is now available.