Updated cronitor pin to allow versions >= 5.0.1 to enable use of DayOfWeek as 7. Cronitor 4.0.0 is still disallowed. (Thanks, @joshuataylor!)
Added flag checkDbReadyInitContainer to optionally disable db check initContainer.
[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 parameter labels 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 and SnowflakeIOManager both accept additional_snowflake_connection_args config. This dictionary of arguments will be passed to the snowflake.connector.connect method. This config will be ignored if you are using the sqlalchemy connector.
[helm] Added the ability to set user-deployments labels on k8s deployments as well as pods.
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 on ThrottlingException. (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!)
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 under DagsterRun.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 of DagsterFivetranTranslator or custom subclass.
[dagster-fivetran] The fivetran_assets decorator was added. It can be used with the FivetranWorkspace resource and DagsterFivetranTranslator translator to load Fivetran tables for a given connector as assets in Dagster. The build_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 the AirbyteCloudWorkspace resource and DagsterAirbyteTranslator 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.
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.
Global op concurrency is now enabled on the default SQLite storage. Deployments that have not been migrated since 1.6.0 may need to run dagster instance migrate to enable.
Introduced map_asset_specs to enable modifying AssetSpecs and AssetsDefinitions in bulk.
Introduced AssetSpec.replace_attributes and AssetSpec.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 parameter include_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.
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 to AssetOuts when defining a @graph_multi_asset were not added to the underlying AssetsDefinition.
Fixed a bug where using the & or | operators on AutomationConditions 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.
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 the FivetranWorkspace resource and DagsterFivetranTranslator 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 to SigmaFilter 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.
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.
Fixed a bug in run status sensors where setting incompatible arguments monitor_all_code_locations and monitored_jobs did not raise the expected error. (Thanks, @apetryla!)
Fixed an issue that would cause the label for AutomationCondition.any_deps_match() and AutomationCondition.all_deps_match() to render incorrectly when allow_selection or ignore_selection were set.
Fixed a bug which could cause code location load errors when using CacheableAssetsDefinitions in code locations that contained AutomationConditions
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.
Introduced a new constructor, AssetOut.from_spec, that will construct an AssetOut from an AssetSpec.
[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 and semanticmodel 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.
Fixed an issue with AutomationCondition.execution_in_progress which would cause it to evaluate to True 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 legacy auto_materialize: use_sensors configuration setting was set to False.
[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.
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.
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 legacy auto_materialize: use_sensors configuration setting was set to False.
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] ImportErrors are no longer raised when bigquery libraries are not installed [#25708]
A native scheduler with support for exactly-once, fault tolerant, timezone-aware scheduling.
A new Dagster daemon process has been added to manage your schedules and sensors with a
reconciliation loop, ensuring that all runs are executed exactly once, even if the Dagster daemon
experiences occasional failure. See the
Migration Guide for
instructions on moving from SystemCronScheduler or K8sScheduler to the new scheduler.
First-class sensors, built on the new Dagster daemon, allow you to instigate runs based on
changes in external state - for example, files on S3 or assets materialized by other Dagster
pipelines. See the Sensors Overview
for more information.
Dagster now supports pipeline run queueing. You can apply instance-level run concurrency
limits and prioritization rules by adding the QueuedRunCoordinator to your Dagster instance. See
the Run Concurrency Overview
for more information.
The IOManager abstraction provides a new, streamlined primitive for granular control over where
and how solid outputs are stored and loaded. This is intended to replace the (deprecated)
intermediate/system storage abstractions, See the
IO Manager Overview for more
information.
A new Partitions page in Dagit lets you view your your pipeline runs organized by partition.
You can also launch backfills from Dagit and monitor them from this page.
A new Instance Status page in Dagit lets you monitor the health of your Dagster instance,
with repository location information, daemon statuses, instance-level schedule and sensor
information, and linkable instance configuration.
Resources can now declare their dependencies on other resources via the
required_resource_keys parameter on @resource.
Our support for deploying on Kubernetes is now mature and battle-tested Our Helm chart is
now easier to configure and deploy, and we’ve made big investments in observability and
reliability. You can view Kubernetes interactions in the structured event log and use Dagit to
help you understand what’s happening in your deployment. The defaults in the Helm chart will
give you graceful degradation and failure recovery right out of the box.
Experimental support for dynamic orchestration with the new DynamicOutputDefinition API.
Dagster can now map the downstream dependencies over a dynamic output at runtime.
We’ve dropped support for Python 2.7, based on community usage and enthusiasm for Python 3-native
public APIs.
Removal of deprecated APIs
These APIs were marked for deprecation with warnings in the 0.9.0 release, and have been removed in
the 0.10.0 release.
The decorator input_hydration_config has been removed. Use the dagster_type_loader decorator
instead.
The decorator output_materialization_config has been removed. Use dagster_type_materializer
instead.
The system storage subsystem has been removed. This includes SystemStorageDefinition,
@system_storage, and default_system_storage_defs . Use the new IOManagers API instead. See
the IO Manager Overview for more
information.
The config_field argument on decorators and definitions classes has been removed and replaced
with config_schema. This is a drop-in rename.
The argument step_keys_to_execute to the functions reexecute_pipeline and
reexecute_pipeline_iterator has been removed. Use the step_selection argument to select
subsets for execution instead.
Repositories can no longer be loaded using the legacy repository key in your workspace.yaml;
use load_from instead. See the
Workspaces Overview for
documentation about how to define a workspace.
Breaking API Changes
SolidExecutionResult.compute_output_event_dict has been renamed to
SolidExecutionResult.compute_output_events_dict. A solid execution result is returned from
methods such as result_for_solid. Any call sites will need to be updated.
The .compute suffix is no longer applied to step keys. Step keys that were previously named
my_solid.compute will now be named my_solid. If you are using any API method that takes a
step_selection argument, you will need to update the step keys accordingly.
The pipeline_def property has been removed from the InitResourceContext passed to functions
decorated with @resource.
Dagstermill
If you are using define_dagstermill_solid with the output_notebook parameter set to True,
you will now need to provide a file manager resource (subclass of
dagster.core.storage.FileManager) on your pipeline mode under the resource key "file_manager",
e.g.:
from dagster import ModeDefinition, local_file_manager, pipeline
from dagstermill import define_dagstermill_solid
my_dagstermill_solid = define_dagstermill_solid("my_dagstermill_solid", output_notebook=True,...)@pipeline(mode_defs=[ModeDefinition(resource_defs={"file_manager": local_file_manager})])defmy_dagstermill_pipeline():
my_dagstermill_solid(...)
Helm Chart
The schema for the scheduler values in the helm chart has changed. Instead of a simple toggle
on/off, we now require an explicit scheduler.type to specify usage of the
DagsterDaemonScheduler, K8sScheduler, or otherwise. If your specified scheduler.type has
required config, these fields must be specified under scheduler.config.
snake_case fields have been changed to camelCase. Please update your values.yaml as follows:
pipeline_run → pipelineRun
dagster_home → dagsterHome
env_secrets → envSecrets
env_config_maps → envConfigMaps
The Helm values celery and k8sRunLauncher have now been consolidated under the Helm value
runLauncher for simplicity. Use the field runLauncher.type to specify usage of the
K8sRunLauncher, CeleryK8sRunLauncher, or otherwise. By default, the K8sRunLauncher is
enabled.
All Celery message brokers (i.e. RabbitMQ and Redis) are disabled by default. If you are using
the CeleryK8sRunLauncher, you should explicitly enable your message broker of choice.
Event log messages streamed to stdout and stderr have been streamlined to be a single line
per event.
Experimental support for memoization and versioning lets you execute pipelines incrementally,
selecting which solids need to be rerun based on runtime criteria and versioning their outputs
with configurable identifiers that capture their upstream dependencies.
To set up memoized step selection, users can provide a MemoizableIOManager, whose has_output
function decides whether a given solid output needs to be computed or already exists. To execute
a pipeline with memoized step selection, users can supply the dagster/is_memoized_run run tag
to execute_pipeline.
To set the version on a solid or resource, users can supply the version field on the definition.
To access the derived version for a step output, users can access the version field on the
OutputContext passed to the handle_output and load_input methods of IOManager and the
has_output method of MemoizableIOManager.
Schedules that are executed using the new DagsterDaemonScheduler can now execute in any
timezone by adding an execution_timezone parameter to the schedule. Daylight Savings Time
transitions are also supported. See the
Schedules Overview for
more information and examples.
Countdown and refresh buttons have been added for pages with regular polling queries (e.g. Runs,
Schedules).
Confirmation and progress dialogs are now presented when performing run terminations and
deletions. Additionally, hanging/orphaned runs can now be forced to terminate, by selecting
"Force termination immediately" in the run termination dialog.
The Runs page now shows counts for "Queued" and "In progress" tabs, and individual run pages
show timing, tags, and configuration metadata.
The backfill experience has been improved with means to view progress and terminate the entire
backfill via the partition set page. Additionally, errors related to backfills are now surfaced
more clearly.
Shortcut hints are no longer displayed when attempting to use the screen capture command.
The asset page has been revamped to include a table of events and enable organizing events by
partition. Asset key escaping issues in other views have been fixed as well.
Miscellaneous bug fixes, frontend performance tweaks, and other improvements are also included.
Added a new dagster-docker library with a DockerRunLauncher that launches each run in its own
Docker container. (See Deploying with Docker docs
for an example.)
Added support for AWS Athena. (Thanks @jmsanders!)
Added mocks for AWS S3, Athena, and Cloudwatch in tests. (Thanks @jmsanders!)
Allow setting of S3 endpoint through env variables. (Thanks @marksteve!)
Various bug fixes and new features for the Azure, Databricks, and Dask integrations.
Added a create_databricks_job_solid for creating solids that launch Databricks jobs.
Fixed helm chart to only add flower to the K8s ingress when enabled (thanks @PenguinToast!)
Updated helm chart to use more lenient timeouts for liveness probes on user code deployments (thanks @PenguinToast!)
Bugfixes
[Helm/K8s] Due to Flower being incompatible with Celery 5.0, the Helm chart for Dagster now uses a specific image mher/flower:0.9.5 for the Flower pod.