Ask AI

Changelog#

1.8.12 (core) / 0.24.12 (libraries)#

New#

  • The AutomationCondition.eager(), AutomationCondition.missing(), and AutomationCondition.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 early PartitionKeysNotFoundError.
  • AssetSelection.checks_for_assets now accepts AssetKeys and string asset keys, in addition to AssetsDefinitions.
  • [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 a since_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 on GithubClient that enables creating a pull request.
  • [dagster-github] Added create_ref method on GithubClient 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 a RunConfig 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, and define_asset_job now take a run_tags parameter. If run_tags are defined, they will be attached to all runs of the job, and tags will not be. If run_tags is not set, then tags 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 on AssetSpec.
  • OutputContext now exposes the AssetSpec 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 a with_io_manager_key method that returns an AssetSpec with the appropriate metadata entry to dictate the key for the IO manager used to load it. The deprecation warning for SourceAsset 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 a dagster/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 custom execution_fn on a ScheduleDefinition. Schedule tags 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 custom execution_fn is provided. If no custom execution_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 a tags 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 a TypeError: 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 to dagster asset materialize CLI. This option only works for assets with single-run Backfill Policies.
  • Added a new .without() method to AutomationCondition.eager(), AutomationCondition.on_cron(), and AutomationCondition.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 accepts lease_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 downstream AutoMaterializePolicy 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 the Definitions 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, the project_dir argument will now override the DBT_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=[] on RunRequest objects yielded from sensors using asset_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 the sensorsOrError 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 and ComputeLogManager 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 using DagsterDltTranslator.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 from user_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 in 1.9.0. The new params 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 PartitionsDefinitions, there will no longer be an implicit asset job __ASSET_JOB_... for each PartitionsDefinition; there will just be one with all the assets. This reduces the time it takes to load code locations with assets with many different PartitionsDefinitions.

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 a secret_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.5.11 / 0.21.11 (libraries)#

New#

  • [ui] Asset graph now displays active filters.
  • [ui] Asset graph can now be filtered by compute kind.
  • [ui] When backfilling failed and missing partitions of assets, a “Preview” button allows you to see which ranges will be materialized.
  • [dagster-dbt] When running DAGSTER_DBT_PARSE_PROJECT_ON_LOAD=1 dagster dev in a new scaffolded project from dagster-dbt project scaffold, dbt logs from creating dbt artifacts to loading the project are now silenced.
  • [dagster-airbyte] Added a new connection_meta_to_group_fn argument which allows configuring loaded asset groups based on the connection’s metadata dict.
  • [dagster-k8s] Debug information about failed run workers in errors surfaced by run monitoring now includes logs from sidecar containers, not just the main dagster container.

Bugfixes#

  • The QueuedRunCoordinatorDaemon has been refactored to paginate over runs when applying priority sort and tag concurrency limits. Previously, it loaded all runs into memory causing large memory spikes when many runs were enqueued.
  • Callable objects can once again be used to back sensor definitions.
  • UPathIOManager has been updated to use the correct path delimiter when interacting with cloud storages from a Windows process.
  • In the default multiprocess executor, the STEP_WORKER_STARTED event now fires before importing code in line with the other executors.
  • During execution, skipping a step now takes precedence over “abandoning” it due to upstream failure. This is expected to substantially improve the “retry from failure” workflow when conditional branching is in use.
  • Fixed an issue where default config values set to EnvVar did not work properly.
  • Fixed an issue where resources which implemented IAttachDifferentObjectToOpContext would pass the incorrect object to schedules and sensors.
  • Fixed a bug that caused auto-materialize failures when using the materialize_on_cron rule with dynamically partitioned assets.
  • Fixed an issue where sensor ticks would sporadically fail with a StopIteration exception.
  • [ui] For a job launchpad with a large number of tabs, the “Remove all” option was pushed offscreen. This has been fixed.
  • [ui] The asset backfill page now correctly shows backfills that target only unpartitioned assets.
  • [ui] Launching an asset job that was defined without_checks no longer fails by attempting to include the checks.
  • [dagster-databricks] fix bug that caused crash when polling a submitted job that is still in the Databricks queue (due to concurrency limit).

Community Contributions#

  • Patched issue where the local compute log path exposed file content outside of the compute log base directory - thanks r1b!
  • [dagster-databricks] Added ability to authenticate using an Azure service principal and fix minor bugs involving authenticating with a service principal while DATABRICKS_HOST is set. Thanks @zyd14!

Experimental#

  • [ui] Dark mode is now available via the User Settings dialog, currently in an experimental state. By default, the app will use a “legacy” theme, closely matching our current colors. A new light mode theme is also available.
  • [ui] Asset graph group nodes can be collapsed/expanded by right clicking on the collapsed group node or the header of the expanded group node.
  • [ui] Asset graph group nodes can be all collapsed or all expanded by right clicking anywhere on the graph and selecting the appropriate action.
  • [ui] The tree view was removed from the asset graph.
  • [pipes] PipesLambdaClient, an AWS Lambda pipes client has been added to dagster_aws.
  • Fixed a performance regression introduced in the 1.5.10 release where auto-materializing multi-assets became slower.

Documentation#

Dagster Cloud#

  • When a Dagster Cloud agent starts up, it will now wait to display as Running on the Agents tab in the Dagster Cloud UI until it has launched all the code servers that it needs in order to serve requests.

1.5.10 / 0.21.10 (libraries)#

New#

  • 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 asset or op, I/O manager schema/ dataset configuration, 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 target/ directory.

Bugfixes#

  • 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 build_schedule_context.
  • The 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 maxCatchupRuns and 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 DBT_INDIRECT_SELECTION=empty.
  • [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.

Deprecations#

  • 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.

Community Contributions#

  • 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!

Experimental#

  • The observable_source_asset decorator now accepts a key argument.
  • [dagster pipes] an implicit_materializations argument has been added to get_results and 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’.

Documentation#

Dagster Cloud#

  • 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.

1.5.9 / 0.21.9 (libraries)#

New#

  • [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!

Bugfixes#

  • 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 check_specs to AssetsDefinition.from_graph
  • [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.
  • The email_on_failure sensor called deprecated methods on the context. This has been fixed

Community Contributions#

  • [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!

Experimental#

  • 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.

Documentation#

Dagster Cloud#

  • 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

1.5.8 / 0.21.8 (libraries)#

Bugfixes#

  • 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.

Dagster Cloud#

  • Substantially improved performance of the Dagster insights DBT/Snowflake usage job.

1.5.7 / 0.21.7 (libraries)#

New#

  • The OpExecutionContext and AssetExecutionContext now have a partition_keys property
  • [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
  • [dagster-dbt] dbt-core==1.7.* is now supported.

Bugfixes#

  • 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 define_asset_job.
  • 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 config.
  • [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

Community Contributions#

  • A docs fix to the testing concepts page, thanks @NicolaiLolansen!
  • The schema can now be overridden per asset in DB IO managers, thanks @jrstats!

Experimental#

  • 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 AssetCheckKey
  • [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.

Documentation#