dagster-polars has been added as an integration. Thanks @danielgafni!@dbt_assets now supports loading projects with semantic models.@dbt_assets now supports loading projects with model versions.get_asset_key_for_model now supports retrieving asset keys for seeds and snapshots. Thanks @aksestok!@asset decorator causing a false positive in Pyright strict mode. Thanks @tylershunt!security_context field on the k8s_job_executor didn't correctly set the security context on the launched step pods. Thanks @krgn!ObserveResults with no data_version.FreshnessPolicys on observable source assets. These assets will be considered “Overdue” when the latest value for the “dagster/data_time” metadata value is older than what’s allowed by the freshness policy.DbtCliResource now include metadata from the dbt adapter response. This includes fields like rows_affected, query_id from the Snowflake adapter, or bytes_processed from the BigQuery adapter.k8s_job_executor.context.log.exception in a sensor or schedule did not properly capture exception information.@observable_source_asset-decorated functions can now return an ObserveResult. This allows including metadata on the observation, in addition to a data version. This is currently only supported for non-partitioned assets.AutoMaterializeRule.skip_on_not_all_parents_updated_since_cron class allows you to construct AutoMaterializePolicys which wait for all parents to be updated after the latest tick of a given cron schedule.New
This major release includes features for scheduling, operating, and executing pipelines that elevate Dagit and dagster from a local development tool to a deployable service.
DagsterInstance introduced as centralized system to control run, event, compute log,
and local intermediates storage.Scheduler abstraction has been introduced along side an initial implementation of
SystemCronScheduler in dagster-cron.dagster-aws has been extended with a CLI for deploying dagster to AWS. This can spin
up a Dagit node and all the supporting infrastructure—security group, RDS PostgreSQL
instance, etc.—without having to touch the AWS console, and for deploying your code
to that instance.Runs: a completely overhauled Runs history page. Includes the ability to Retry,
Cancel, and Delete pipeline runs from the new runs page.Scheduler: a page for viewing and interacting with schedules.Compute Logs: stdout and stderr are now viewable on a per execution step basis in each run.
This is available in real time for currently executing runs and for historical runs.Reload button in the top right in Dagit restarts the web-server process and updates
the UI to reflect repo changes, including DAG structure, solid names, type names, etc.
This replaces the previous file system watching behavior.Breaking Changes
--log and --log-dir no longer supported as CLI args. Existing runs and events stored
via these flags are no longer compatible with current storage.raise_on_error moved from in process executor config to argument to arguments in
python API methods such as execute_pipelineExecutorDefinition and @executor
APIs are used to define in-process, multiprocess, and Dask executors, and may be used by users to
define new executors. Like loggers and storage, executors may be added to a ModeDefinition and
may be selected and configured through the execution field in the environment dict or YAML,
including through Dagit. Executors may no longer be configured through the RunConfig.execute_pipeline API, and the Dask executor is configured through the environment.
(See the dagster-dask README for details.)PresetDefinition.from_files API for constructing a preset from a list of environment
files (replacing the old usage of this class). PresetDefinition may now be directly
instantiated with an environment dict.--raise-on-error or --no-raise-on-error flag. Set this
option in executor config.MarkdownMetadataEntryData class, so events yielded from client code may now render
markdown in their metadata.