dagster changelog

An orchestration platform for the development, production, and observation of data assets.

All Versions
182
Latest Version
Avg Release Cycle
-
Latest Release
-

Changelog History
Page 1

  • v1.1.4 Changes

    Community Contributions

    • πŸ›  Fixed a typo in GCSComputeLogManager docstring (thanks reidab)!
    • πŸ‘· [dagster-airbyte] job cancellation on run termination is now optional. (Thanks adam-bloom)!
    • [dagster-snowflake] Can now specify snowflake role in config to snowflake io manager (Thanks binhnefits)!
    • [dagster-aws] A new AWS systems manager resource (thanks zyd14)!
    • 🍱 [dagstermill] Retry policy can now be set on dagstermill assets (thanks nickvazz)!
    • πŸ“‡ Corrected typo in docs on metadata (thanks C0DK)!

    πŸ†• New

    • βž• Added a job_name parameter to InputContext
    • Fixed inconsistent io manager behavior when using execute_in_process on a GraphDefinition (it would use the fs_io_manager instead of the in-memory io manager)
    • πŸ”Š Compute logs will now load in Dagit even when websocket connections are not supported.
    • [dagit] A handful of changes have been made to our URLs:
      • The /instance URL path prefix has been removed. E.g. /instance/runs can now be found at /runs.
      • The /workspace URL path prefix has been changed to /locations. E.g. the URL for job my_job in repository foo@bar can now be found at /locations/foo@bar/jobs/my_job.
    • πŸš€ [dagit] The "Workspace" navigation item in the top nav has been moved to be a tab under the "Deployment" section of the app, and is renamed to "Definitions".
    • [dagstermill] Dagster events can now be yielded from asset notebooks using dagstermill.yield_event.
    • [dagstermill] Failed notebooks can be saved for inspection and debugging using the new save_on_notebook_failure parameter.
    • [dagster-airflow] Added a new option use_ephemeral_airflow_db which will create a job run scoped airflow db for airflow dags running in dagster
    • 🍱 [dagster-dbt] Materializing software-defined assets using dbt Cloud jobs now supports partitions.
    • 🍱 [dagster-dbt] Materializing software-defined assets using dbt Cloud jobs now supports subsetting. Individual dbt Cloud models can be materialized, and the proper filters will be passed down to the dbt Cloud job.
    • πŸ”§ [dagster-dbt] Software-defined assets from dbt Cloud jobs now support configurable group names.
    • πŸ”§ [dagster-dbt] Software-defined assets from dbt Cloud jobs now support configurable AssetKeys.

    πŸ›  Bugfixes

    • πŸ›  Fixed regression starting in 1.0.16 for some compute log managers where an exception in the compute log manager setup/teardown would cause runs to fail.
    • 🌲 The S3 / GCS / Azure compute log managers now sanitize the optional prefix argument to prevent badly constructed paths.
    • 🐎 [dagit] The run filter typeahead no longer surfaces key-value pairs when searching for tag:. This resolves an issue where retrieving the available tags could cause significant performance problems. Tags can still be searched with freeform text, and by adding them via click on individual run rows.
    • πŸ‘· [dagit] Fixed an issue in the Runs tab for job snapshots, where the query would fail and no runs were shown.
    • ⏱ [dagit] Schedules defined with cron unions displayed "Invalid cron string" in Dagit. This has been resolved, and human-readable versions of all members of the union will now be shown.

      πŸ’₯ Breaking Changes

    • You can no longer set an output’s asset key by overriding get_output_asset_key on the IOManager handling the output. Previously, this was experimental and undocumented.

    Experimental

    • ⏱ Sensor and schedule evaluation contexts now have an experimental log property, which log events that can later be viewed in Dagit. To enable these log views in dagit, navigate to the user settings and enable the Experimental schedule/sensor logging view option. Log links will now be available for sensor/schedule ticks where logs were emitted. Note: this feature is not available for users using the NoOpComputeLogManager.
  • v1.1.3 Changes

    πŸ›  Bugfixes

    • πŸ›  Fixed a bug with the asset reconciliation sensor that caused duplicate runs to be submitted in situations where an asset has a different partitioning than its parents.
    • πŸ›  Fixed a bug with the asset reconciliation sensor that caused it to error on time-partitioned assets.
    • πŸ›  [dagster-snowflake] Fixed a bug when materializing partitions with the Snowflake I/O manager where sql BETWEEN was used to determine the section of the table to replace. BETWEEN included values from the next partition causing the I/O manager to erroneously delete those entries.
    • πŸ›  [dagster-duckdb] Fixed a bug when materializing partitions with the DuckDB I/O manager where sql BETWEEN was used to determine the section of the table to replace. BETWEEN included values from the next partition causing the I/O manager to erroneously delete those entries.
  • v1.1.2 Changes

    πŸ›  Bugfixes

    • ⬆️ In Dagit, assets that had been materialized prior to upgrading to 1.1.1 were showing as "Stale". This is now fixed.
    • ⏱ Schedules that were constructed with a list of cron strings previously rendered with an error in Dagit. This is now fixed.
    • πŸ›  For users running dagit version >= 1.0.17 (or dagster-cloud) with dagster version < 1.0.17, errors could occur when hitting "Materialize All" and some other asset-related interactions. This has been fixed.
  • v1.1.1 Changes

    Major Changes since 1.0.0 (core) / 0.16.0 (libraries)

    Core

    • You can now create multi-dimensional partitions definitions for software-defined assets, through the MultiPartitionsDefinition API. In Dagit, you can filter and materialize certain partitions by providing ranges per-dimension, and view your materializations by dimension.
    • The new asset reconciliation sensor automatically materializes assets that have never been materialized or whose upstream assets have changed since the last time they were materialized. It works with partitioned assets too. You can construct it using build_asset_reconciliation_sensor.
    • You can now add a FreshnessPolicy to any of your software-defined assets, to specify how up-to-date you expect that asset to be. You can view the freshness status of each asset in Dagit, alert when assets are missing their targets using the @freshness_policy_sensor, and use the build_asset_reconciliation_sensor to make a sensor that automatically kick off runs to materialize assets based on their freshness policies.
    • πŸ”– You can now version your asset ops and source assets to help you track which of your assets are stale. You can do this by assigning op_version s to software-defined assets or observation_fn s to SourceAssets. When a set of assets is versioned in this way, their "Upstream Changed" status will be based on whether upstream versions have changed, rather than on whether upstream assets have been re-materialized. You can launch runs that materialize only stale assets.
    • The new @multi_asset_sensor decorator enables defining custom sensors that trigger based on the materializations of multiple assets. The context object supplied to the decorated function has methods to fetch latest materializations by asset key, as well as built-in cursor management to mark specific materializations as "consumed", so that they won’t be returned in future ticks. It can also fetch materializations by partition and mark individual partitions as consumed.
    • RepositoryDefinition now exposes a load_asset_value method, which accepts an asset key and invokes the asset’s I/O manager’s load_input function to load the asset as a Python object. This can be used in notebooks to do exploratory data analysis on assets.
    • 🍱 With the new asset_selection parameter on @sensor and SensorDefinition, you can now define a sensor that directly targets a selection of assets, instead of targeting a job.
    • When running dagit or dagster-daemon locally, environment variables included in a .env file in the form KEY=value in the same folder as the command will be automatically included in the environment of any Dagster code that runs, allowing you to easily use environment variables during local development.

    Dagit

    • ⚑️ The Asset Graph has been redesigned to make better use of color to communicate asset health. New status indicators make it easy to spot missing and stale assets (even on large graphs!) and the UI updates in real-time as displayed assets are materialized.
    • πŸ“‡ The Asset Details page has been redesigned and features a new side-by-side UI that makes it easier to inspect event metadata. A color-coded timeline on the partitions view allows you to drag-select a time range and inspect the metadata and status quickly. The new view also supports assets that have been partitioned across multiple dimensions.
    • The new Workspace page helps you quickly find and navigate between all your Dagster definitions. It’s also been re-architected to load significantly faster when you have thousands of definitions.
    • πŸš€ The Overview page is the new home for the live run timeline and helps you understand the status of all the jobs, schedules, sensors, and backfills across your entire deployment. The timeline is now grouped by repository and shows a run status rollup for each group.

    Integrations

    • 🍱 dagster-dbt now supports generating software-defined assets from your dbt Cloud jobs.
    • 🍱 dagster-airbyte and dagster-fivetran now support automatically generating assets from your ETL connections using load_assets_from_airbyte_instance and load_assets_from_fivetran_instance.
    • New dagster-duckdb integration: build_duckdb_io_manager allows you to build an I/O manager that stores and loads Pandas and PySpark DataFrames in DuckDB.

    Database migration

    • Optional database schema migration, which can be run via dagster instance migrate:
      • Improves Dagit performance by adding database indexes which should speed up the run view as well as a range of asset-based queries.
      • Enables multi-dimensional asset partitions and asset versioning.

    πŸ’₯ Breaking Changes and Deprecations

    • define_dagstermill_solid, a legacy API, has been removed from dagstermill. Use define_dagstermill_op or define_dagstermill_asset instead to create an op or asset from a Jupyter notebook, respectively.
    • ⚑️ The internal ComputeLogManager API is marked as deprecated in favor of an updated interface: CapturedLogManager. It will be removed in 1.2.0. This should only affect dagster instances that have implemented a custom compute log manager.

    Dependency Changes

    • dagster-graphql and dagit now use version 3 of graphene

    Since 1.0.17

    πŸ†• New

    • πŸ‘ The new UPathIOManager base class is now a top-level Dagster export. This enables you to write a custom I/O manager that plugs stores data in any filesystem supported by universal-pathlib and uses different serialization format than pickle (Thanks Daniel Gafni!).
    • The default fs_io_manager now inherits from the UPathIOManager, which means that its base_dir can be a path on any filesystem supported by universal-pathlib (Thanks Daniel Gafni!).
    • build_asset_reconciliation_sensor now works with support partitioned assets.
    • build_asset_reconciliation_sensor now launches runs to keep assets in line with their defined FreshnessPolicies.
    • πŸ“¦ The FreshnessPolicy object is now exported from the top level dagster package.
    • 🍱 For assets with a FreshnessPolicy defined, their current freshness status will be rendered in the asset graph and asset details pages.
    • πŸ”Š The AWS, GCS, and Azure compute log managers now take an additional config argument upload_interval which specifies in seconds, the interval in which partial logs will be uploaded to the respective cloud storage. This can be used to display compute logs for long-running compute steps.
    • βœ… When running dagit or dagster-daemon locally, environment variables included in a .env file in the form KEY=value in the same folder as the command will be automatically included in the environment of any Dagster code that runs, allowing you to easily test environment variables during local development.
    • observable_source_asset decorator creates a SourceAsset with an associated observation_fn that should return a LogicalVersion, a new class that wraps a string expressing a version of an asset’s data value.
    • [dagit] The asset graph now shows branded compute_kind tags for dbt, Airbyte, Fivetran, Python and more.
    • πŸ’» [dagit] The asset details page now features a redesigned event viewer, and separate tabs for Partitions, Events, and Plots. This UI was previously behind a feature flag and is now generally available.
    • πŸ’» [dagit] The asset graph UI has been revamped and makes better use of color to communicate asset status, especially in the zoomed-out view.
    • 🍱 [dagit] The asset catalog now shows freshness policies in the "Latest Run" column when they are defined on your assets.
    • πŸ’» [dagit] The UI for launching backfills in Dagit has been simplified. Rather than selecting detailed ranges, the new UI allows you to select a large "range of interest" and materialize only the partitions of certain statuses within that range.
    • ⚑️ [dagit] The partitions page of asset jobs has been updated to show per-asset status rather than per-op status, so that it shares the same terminology and color coding as other asset health views.
    • [dagster-k8s] Added an execute_k8s_job function that can be called within any op to run an image within a Kubernetes job. The implementation is similar to the build-in k8s_job_op , but allows additional customization - for example, you can incorporate the output of a previous op into the launched Kubernetes job by passing it into execute_k8s_job. See the dagster-k8s API docs for more information.
    • πŸ‘· [dagster-databricks] Environment variables used by dagster cloud are now automatically set when submitting databricks jobs if they exist, thank you @zyd14!
    • [dagstermill] define_dagstermill_asset now supports RetryPolicy . Thanks @nickvazz!
    • 🍱 [dagster-airbyte] When loading assets from an Airbyte instance using load_assets_from_airbyte_instance, users can now optionally customize asset names using connector_to_asset_key_fn.
    • 🍱 [dagster-fivetran] When loading assets from a Fivetran instance using load_assets_from_fivetran_instance, users can now alter the IO manager using io_manager_key or connector_to_io_manager_key_fn, and customize asset names using connector_to_asset_key_fn.

    πŸ›  Bugfixes

    • πŸ›  Fixed a bug where terminating runs from a backfill would fail without notice.
    • 0️⃣ Executing a subset of ops within a job that specifies its config value directly on the job, it no longer attempts to use that config value as the default. The default is still presented in the editable interface in dagit.
    • [dagit] The partition step run matrix now reflects historical step status instead of just the last run’s step status for a particular partition.

    πŸ“š Documentation

  • v1.0.17 Changes

    πŸ†• New

    • 🍱 With the new asset_selection parameter on @sensor and SensorDefinition, you can now define a sensor that directly targets a selection of assets, instead of targeting a job.
    • materialize and materialize_to_memory now accept a raise_on_error argument, which allows you to determine whether to raise an Error if the run hits an error or just return as failed.
    • πŸ‘ (experimental) Dagster now supports multi-dimensional asset partitions, through a new MultiPartitionsDefinition object. An optional schema migration enables support for this feature (run via dagster instance migrate). Users who are not using this feature do not need to run the migration.
    • You can now launch a run that targets a range of asset partitions, by supplying the "dagster/asset_partition_range_start" and "dagster/asset_partition_range_end" tags.
    • 🍱 [dagit] Asset and op graphs in Dagit now show integration logos, making it easier to identify assets backed by notebooks, DBT, Airbyte, and more.
    • [dagit] a -db-pool-recycle cli flag (and dbPoolRecycle helm option) have been added to control how long the pooled connection dagit uses persists before recycle. The default of 1 hour is now respected by postgres (mysql previously already had a hard coded 1hr setting). Thanks @adam-bloom !
    • 🍱 [dagster-airbyte] Introduced the ability to specify output IO managers when using load_assets_from_airbyte_instance and load_assets_from_airbyte_project.
    • [dagster-dbt] the dbt_cloud_resource resource configuration account_id can now be sourced from the environment. Thanks @sowusu-ba !
    • πŸ“š [dagster-duckdb] The DuckDB integration improvements: PySpark DataFrames are now fully supported, "schema" can be specified via IO Manager config, and API documentation has been improved to include more examples
    • 🍱 [dagster-fivetran] Introduced experimental load_assets_from_fivetran_instance helper which automatically pulls assets from a Fivetran instance.
    • [dagster-k8s] Fixed an issue where setting the securityContext configuration of the Dagit pod in the Helm chart didn’t apply to one of its containers. Thanks @jblawatt !

    πŸ›  Bugfixes

    • πŸ›  Fixed a bug that caused the asset_selection parameter of RunRequest to not be respected when used inside a schedule.
    • 🐳 Fixed a bug with health checks during delayed Op retries with the k8s_executor and docker_executor.
    • ⚑️ [dagit] The asset graph now live-updates when assets fail to materialize due to op failures.
    • [dagit] The "Materialize" button now respects the backfill permission for multi-run materializations.
    • πŸ“‡ [dagit] Materializations without metadata are padded correctly in the run logs.
    • πŸ›  [dagster-aws] Fixed an issue where setting the value of task_definition field in the EcsRunLauncher to an environment variable stopped working.
    • 🍱 [dagster-dbt] Add exposures in load_assets_from_dbt_manifest. This fixed then error when load_assets_from_dbt_manifest failed to load from dbt manifest with exposures. Thanks @sowusu-ba !
    • πŸ›  [dagster-duckdb] In some examples, the duckdb config was incorrectly specified. This has been fixed.

    πŸ’₯ Breaking Changes

    • The behavior of the experimental asset reconciliation sensor, which is accessible via build_asset_reconciliation_sensor has changed to be more focused on reconciliation. It now materializes assets that have never been materialized before and avoids materializing assets that are "Upstream changed". The build_asset_reconciliation_sensor API no longer accepts wait_for_in_progress_runs and wait_for_all_upstream arguments.

    πŸ“š Documentation

  • v1.0.16 Changes

    πŸ†• New

    • πŸš€ [dagit] The new Overview and Workspace pages have been enabled for all users, after being gated with a feature flag for the last several releases. These changes include design updates, virtualized tables, and more performant querying.
      • The top navigation has been updated to improve space allocation, with main nav links moved to the left.
      • "Overview" is the new Dagit home page and "factory floor" view, were you can find the run timeline, which now offers time-based pagination. The Overview section also contains pages with all of your jobs, schedules, sensors, and backfills. You can filter objects by name, and collapse or expand repository sections.
      • "Workspace" has been redesigned to offer a better summary of your repositories, and to use the same performant table views, querying, and filtering as in the Overview pages.
    • @asset and @multi_asset now accept a retry_policy argument. (Thanks @adam-bloom!)
    • When loading an input that depends on multiple partitions of an upstream asset, the fs_io_manager will now return a dictionary that maps partition keys to the stored values for those partitions. (Thanks @andrewgryan!).
    • JobDefinition.execute_in_process now accepts a run_config argument even when the job is partitioned. If supplied, the run config will be used instead of any config provided by the job’s PartitionedConfig.
    • The run_request_for_partition method on jobs now accepts a run_config argument. If supplied, the run config will be used instead of any config provided by the job’s PartitionedConfig.
    • πŸ“‡ The new NotebookMetadataValue can be used to report the location of executed jupyter notebooks, and Dagit will be able to render the notebook.
    • 🍱 Resolving asset dependencies within a group now works with multi-assets, as long as all the assets within the multi-asset are in the same group. (Thanks @peay!)
    • UPathIOManager, a filesystem-agnostic IOManager base class has been added - (Thanks @danielgafni!)
    • πŸš€ A threadpool option has been added for the scheduler daemon. This can be enabled via your dagster.yaml file; check out the docs.
    • πŸ”Š The default LocalComputeLogManager will capture compute logs by process instead of by step. This means that for the in_process executor, where all steps are executed in the same process, the captured compute logs for all steps in a run will be captured in the same file.
    • [dagstermill] Added define_dagstermill_asset which loads a notebook as an asset.
    • [dagster-airflow] make_dagster_job_from_airflow_dag now supports airflow 2, there is also a new mock_xcom parameter that will mock all calls to made by operators to xcom.
    • [helm] volume and volumeMount sections have been added for the dagit and daemon sections of the helm chart.

    πŸ›  Bugfixes

    • For partitioned asset jobs whose config is a hardcoded dictionary (rather than a PartitionedConfig), previously run_request_for_partition would produce a run with no config. Now, the run has the hardcoded dictionary as its config.
    • 🍱 Previously, asset inputs would be resolved to upstream assets in the same group that had the same name, even if the asset input already had a key prefix. Now, asset inputs are only resolved to upstream assets in the same group if the input path only has a single component.
    • 🍱 Previously, asset inputs could get resolved to outputs of the same AssetsDefinition, through group-based asset dependency resolution, which would later error because of a circular dependency. This has been fixed.
    • πŸ›  Previously, the "Partition Status" and "Backfill Status" fields on the Backfill page in dagit were always incomplete and showed missing partitions. This has been fixed to accurately show the status of the backfill runs.
    • πŸ‘· Executors now compress step worker arguments to avoid CLI length limits with large DAGs.
    • πŸ›  [dagit] When viewing the config dialog for a run with a very long config, scrolling was broken and the "copy" button was not visible. This has been fixed.
    • [dagster-msteams] Longer messages can now be used in Teams HeroCard - thanks @jayhale

    πŸ“š Documentation

    • πŸ“„ API docs for InputContext have been improved - (Thanks @peay!)
    • πŸ“š [dagster-snowflake] Improved documentation for the Snowflake IO manager
  • v1.0.15 Changes

    πŸ†• New

    • ⏱ [dagit] The run timeline now shows all future schedule ticks for the visible time window, not just the next ten ticks.
    • ⚑️ [dagit] Asset graph views in Dagit refresh as materialization events arrive, making it easier to watch your assets update in real-time.
    • πŸ‘ [dagster-airbyte] Added support for basic auth login to the Airbyte resource.
    • πŸ”§ Configuring a Python Log Level will now also apply to system logs created by Dagster during a run.

    πŸ›  Bugfixes

    • Fixed a bug that broke asset partition mappings when using the key_prefix with methods like load_assets_from_modules.
    • [dagster-dbt] When running dbt Cloud jobs with the dbt_cloud_run_op, the op would emit a failure if the targeted job did not create a run_results.json artifact, even if this was the expected behavior. This has been fixed.
    • πŸ‘Œ Improved performance by adding database indexes which should speed up the run view as well as a range of asset-based queries. These migrations can be applied by running dagster instance migrate.
    • ⏱ An issue that would cause schedule/sensor latency in the daemon during workspace refreshes has been resolved.
    • 🍱 [dagit] Shift-clicking Materialize for partitioned assets now shows the asset launchpad, allowing you to launch execution of a partition with config.

    Community Contributions

    • πŸ›  Fixed a bug where asset keys with - were not being properly sanitized in some situations. Thanks @peay!
    • 🍱 [dagster-airbyte] A list of connection directories can now be specified in load_assets_from_airbyte_project. Thanks @adam-bloom!
    • [dagster-gcp] Dagster will now retry connecting to GCS if it gets a ServiceUnavailable error. Thanks @cavila-evoliq!
    • [dagster-postgres] Use of SQLAlchemy engine instead of psycopg2 when subscribing to PostgreSQL events. Thanks @peay!

    Experimental

    • [dagster-dbt] Added a display_raw_sql flag to the dbt asset loading functions. If set to False, this will remove the raw sql blobs from the asset descriptions. For large dbt projects, this can significantly reduce the size of the generated workspace snapshots.
    • [dagit] A "New asset detail pages" feature flag available in Dagit’s settings allows you to preview some upcoming changes to the way historical materializations and partitions are viewed.
  • v1.0.14 Changes

    πŸ†• New

    • 🏷 Tags can now be provided to an asset reconciliation sensor and will be applied to all RunRequests returned by the sensor.
    • If you don’t explicitly specify a DagsterType on a graph input, but all the inner inputs that the graph input maps to have the same DagsterType, the graph input’s DagsterType will be set to the the DagsterType of the inner inputs.
    • 🍱 [dagster-airbyte] load_assets_from_airbyte_project now caches the project data generated at repo load time so it does not have to be regenerated in subprocesses.
    • 🍱 [dagster-airbyte] Output table schema metadata is now generated at asset definition time when using load_assets_from_airbyte_instance or load_assets_from_airbyte_project.
    • πŸ‘· [dagit] The run timeline now groups all jobs by repository. You can collapse or expand each repository in this view by clicking the repository name. This state will be preserved locally. You can also hold Shift while clicking the repository name, and all repository groups will be collapsed or expanded accordingly.
    • πŸ”§ [dagit] In the launchpad view, a "Remove all" button is now available once you have accrued three or more tabs for that job, to make it easier to clear stale configuration tabs from view.
    • 🍱 [dagit] When scrolling through the asset catalog, the toolbar is now sticky. This makes it simpler to select multiple assets and materialize them without requiring you to scroll back to the top of the page.
    • [dagit] A "Materialize" option has been added to the action menu on individual rows in the asset catalog view.
    • πŸ‘€ [dagster-aws] The EcsRunLauncher now allows you to pass in a dictionary in the task_definition config field that specifies configuration for the task definition of the launched run, including role ARNs and a list of sidecar containers to include. Previously, the task definition could only be configured by passing in a task definition ARN or by basing the the task definition off of the task definition of the ECS task launching the run. See the docs for the full set of available config.

    πŸ›  Bugfixes

    • πŸ›  Previously, yielding a SkipReason within a multi-asset sensor (experimental) would raise an error. This has been fixed.
    • [dagit] Previously, if you had a partitioned asset job and supplied a hardcoded dictionary of config to define_asset_job, you would run into a CheckError when launching the job from Dagit. This has been fixed.
    • ⚑️ [dagit] When viewing the Runs section of Dagit, the counts displayed in the tabs (e.g. "In progress", "Queued", etc.) were not updating on a poll interval. This has been fixed.
  • v1.0.13 Changes

    πŸ†• New

    • πŸ“‡ AssetMaterialization now has a metadata property, which allows accessing the materialization’s metadata as a dictionary.
    • βœ… DagsterInstance now has a get_latest_materialization_event method, which allows fetching the most recent materialization event for a particular asset key.
    • RepositoryDefinition.load_asset_value and AssetValueLoader.load_asset_value now work with IO managers whose load_input implementation accesses the op_def and name attributes on the InputContext.
    • RepositoryDefinition.load_asset_value and AssetValueLoader.load_asset_value now respect the DAGSTER_HOME environment variable.
    • InMemoryIOManager, the IOManager that backs mem_io_manager, has been added to the public API.
    • The multi_asset_sensor (experimental) now supports marking individual partitioned materializations as "consumed". Unconsumed materializations will appear in future calls to partitioned context methods.
    • The build_multi_asset_sensor_context testing method (experimental) now contains a flag to set the cursor to the newest events in the Dagster instance.
    • πŸ— TableSchema now has a static constructor that enables building it from a dictionary of column names to column types.
    • βž• Added a new CLI command dagster run migrate-repository which lets you migrate the run history for a given job from one repository to another. This is useful to preserve run history for a job when you have renamed a repository, for example.
    • πŸ‘· [dagit] The run timeline view now shows jobs grouped by repository, with each repository section collapsible. This feature was previously gated by a feature flag, and is now turned on for everyone.
    • [dagster-airbyte] Added option to specify custom request params to the Airbyte resource, which can be used for auth purposes.
    • 🍱 [dagster-airbyte] When loading Airbyte assets from an instance or from YAML, a filter function can be specified to ignore certain connections.
    • πŸ‘ [dagster-airflow] DagsterCloudOperator and DagsterOperator now support Airflow 2. Previously, installing the library on Airflow 2 would break due to an import error.
    • 🍱 [dagster-duckdb] A new integration with DuckDB allows you to store op outputs and assets in an in-process database.

    πŸ›  Bugfixes

    • Previously, if retries were exceeded when running with execute_in_process, no error would be raised. Now, a DagsterMaxRetriesExceededError will be launched off.
    • 🍱 [dagster-airbyte] Fixed generating assets for Airbyte normalization tables corresponding with nested union types.
    • 🍱 [dagster-dbt] When running assets with load_assets_from_...(..., use_build=True), AssetObservation events would be emitted for each test. These events would have metadata fields which shared names with the fields added to the AssetMaterialization events, causing confusing historical graphs for fields such as Compilation Time. This has been fixed.
    • 🍱 [dagster-dbt] The name for the underlying op for load_assets_from_... was generated in a way which was non-deterministic for dbt projects which pulled in external packages, leading to errors when executing across multiple processes. This has been fixed.

    Dependency changes

    • πŸ“¦ [dagster-dbt] The package no longer depends on pandas and dagster-pandas.

    Community Contributions

    • ⏱ [dagster-airbyte] Added possibility to change request timeout value when calling Airbyte. Thanks @FransDel!
    • πŸ›  [dagster-airflow] Fixed an import error in dagster_airflow.hooks. Thanks @bollwyvl!
    • πŸ‘ [dagster-gcp] Unpin Google dependencies. dagster-gcp now supports google-api-python-client 2.x. Thanks @amarrella!
    • πŸ›  [dagstermill] Fixed an issue where DagsterTranslator was missing an argument required by newer versions of papermill. Thanks @tizz98!

    πŸ“š Documentation

    • Added an example, underneath examples/assets_smoke_test, that shows how to write a smoke test that feeds empty data to all the transformations in a data pipeline.
    • Added documentation for build_asset_reconciliation_sensor.
    • Added documentation for monitoring partitioned materializations using the multi_asset_sensor and kicking off subsequent partitioned runs.
    • πŸ“š [dagster-cloud] Added documentation for running the Dagster Cloud Docker agent with Docker credential helpers.
    • [dagster-dbt] The class methods of the dbt_cli_resource are now visible in the API docs for the dagster-dbt library.
    • 🍱 [dagster-dbt] Added a step-by-step tutorial for using dbt models with Dagster software-defined assets
  • v1.0.12 Changes

    πŸ†• New

    • The multi_asset_sensor (experimental) now accepts an AssetSelection of assets to monitor. There are also minor API updates for the multi-asset sensor context.
    • AssetValueLoader, the type returned by RepositoryDefinition.get_asset_value_loader is now part of Dagster’s public API.
    • RepositoryDefinition.load_asset_value and AssetValueLoader.load_asset_value now support a partition_key argument.
    • RepositoryDefinition.load_asset_value and AssetValueLoader.load_asset_value now work with I/O managers that invoke context.upstream_output.asset_key.
    • πŸ”§ When running Dagster locally, the default amount of time that the system waits when importing user code has been increased from 60 seconds to 180 seconds, to avoid false positives when importing code with heavy dependencies or large numbers of assets. This timeout can be configured in dagster.yaml as follows:
    code_servers:
     local_startup_timeout: 120
    
    • πŸš€ [dagit] The "Status" section has been renamed to "Deployment", to better reflect that this section of the app shows deployment-wide information.
    • πŸ”Š [dagit] When viewing the compute logs for a run and choosing a step to filter on, there is now a search input to make it easier to find the step you’re looking for.
    • πŸš€ [dagster-aws] The EcsRunLauncher can now launch runs in ECS clusters using both Fargate and EC2 capacity providers. See the Deploying to ECS docs for more information.
    • 🍱 [dagster-airbyte] Added the load_assets_from_airbyte_instance function which automatically generates asset definitions from an Airbyte instance. For more details, see the new Airbyte integration guide.
    • πŸ‘· [dagster-airflow] Added the DagsterCloudOperator and DagsterOperator , which are airflow operators that enable orchestrating dagster jobs, running on either cloud or OSS dagit instances, from Apache Airflow.

    πŸ›  Bugfixes

    • πŸ›  Fixed a bug where if resource initialization failed for a dynamic op, causing other dynamic steps to be skipped, those skipped dynamic steps would be ignored when retrying from failure.
    • πŸ“‡ Previously, some invocations within the Dagster framework would result in warnings about deprecated metadata APIs. Now, users should only see warnings if their code uses deprecated metadata APIs.
    • How the daemon process manages its understanding of user code artifacts has been reworked to improve memory consumption.
    • πŸ‘· [dagit] The partition selection UI in the Asset Materialization modal now allows for mouse selection and matches the UI used for partitioned op jobs.
    • [dagit] Sidebars in Dagit shrink more gracefully on small screens where headers and labels need to be truncated.
    • 🐎 [dagit] Improved performance for loading runs with >10,000 logs
    • πŸ”§ [dagster-airbyte] Previously, the port configuration in the airbyte_resource was marked as not required, but if it was not supplied, an error would occur. It is now marked as required.
    • 🍱 [dagster-dbt] A change made to the manifest.json schema in dbt 1.3 would result in an error when using load_assets_from_dbt_project or load_assets_from_manifest_json. This has been fixed.
    • [dagster-postgres] connections that fail due to sqlalchemy.exc.TimeoutError now retry

    πŸ’₯ Breaking Changes

    • πŸ”§ [dagster-aws] The redshift_resource no longer accepts a schema configuration parameter. Previously, this parameter would error whenever used, because Redshift connections do not support this parameter.

    Community Contributions

    • We now reference the correct method in the "loading asset values outside of Dagster runs" example (thank you Peter A. I. Forsyth!)
    • πŸ“š We now reference the correct test directory in the "Create a New Project" documentation (thank you Peter A. I. Forsyth!)
    • [dagster-pyspark] dagster-pyspark now contains a LazyPysparkResource that only initializes a spark session once it’s accessed (thank you @zyd14!)

    Experimental

    • The new build_asset_reconciliation_sensor function accepts a set of software-defined assets and returns a sensor that automatically materializes those assets after their parents are materialized.
    • [dagit] A new "groups-only" asset graph feature flag allows you to zoom way out on the global asset graph, collapsing asset groups into smaller nodes you can double-click to expand.
Awesome Python is part of the LibHunt network. Terms. Privacy Policy.

(CC)
BY-SA
We recommend Spin The Wheel Of Names for a cryptographically secure random name picker.

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /