New
- Further performance improvements for
build_asset_reconciliation_sensor
. - Dagster now allows you to backfill asset selections that include mapped partition definitions, such as a daily asset which rolls up into a weekly asset, as long as the root assets in your selection share a partition definition.
- Dagit now includes information about the cause of an asset’s staleness.
- Improved the error message for non-matching cron schedules in
TimeWindowPartitionMapping
s with offsets. (Thanks Sean Han!) - [dagster-aws] The EcsRunLauncher now allows you to configure the
runtimePlatform
field for the task definitions of the runs that it launches, allowing it to launch runs using Windows Docker images. - [dagster-azure] Add support for DefaultAzureCredential for adls2_resource (Thanks Martin Picard!)
- [dagster-databricks] Added op factories to create ops for running existing Databricks jobs (
create_databricks_run_now_op
), as well as submitting one-off Databricks jobs (create_databricks_submit_run_op
). See the new Databricks guide for more details. - [dagster-duckdb-polars] Added a dagster-duckdb-polars library that includes a
DuckDBPolarsTypeHandler
for use withbuild_duckdb_io_manager
, which allows loading / storing Polars DataFrames from/to DuckDB. (Thanks Pezhman Zarabadi-Poor!) - [dagster-gcp-pyspark] New PySpark TypeHandler for the BigQuery I/O manager. Store and load your PySpark DataFrames in BigQuery using
bigquery_pyspark_io_manager
. - [dagster-snowflake] [dagster-duckdb] The Snowflake and DuckDB IO managers can now load multiple partitions in a single step - e.g. when a non-partitioned asset depends on a partitioned asset or a single partition of an asset depends on multiple partitions of an upstream asset. Loading occurs using a single SQL query and returns a single
DataFrame
.
Bugfixes
- Previously, if an
AssetSelection
which matched no assets was passed intodefine_asset_job
, the resulting job would target all assets in the repository. This has been fixed. - Fixed a bug that caused the UI to show an error if you tried to preview a future schedule tick for a schedule built using
build_schedule_from_partitioned_job
. - When a non-partitioned non-asset job has an input that comes from a partitioned SourceAsset, we now load all partitions of that asset.
- Updated the
fs_io_manager
to store multipartitioned materializations in directory levels by dimension. This resolves a bug on windows where multipartitioned materializations could not be stored with thefs_io_manager
. - Schedules and sensors previously timed out when attempting to yield many multipartitioned run requests. This has been fixed.
- Fixed a bug where
context.partition_key
would raise an error when executing on a partition range within a single run via Dagit. - Fixed a bug that caused the default IO manager to incorrectly raise type errors in some situations with partitioned inputs.
- [ui] Fixed a bug where partition health would fail to display for certain time window partitions definitions with positive offsets.
- [ui] Always show the “Reload all” button on the code locations list page, to avoid an issue where the button was not available when adding a second location.
- [ui] Fixed a bug where users running multiple replicas of dagit would see repeated
Definitions reloaded
messages on fresh page loads. - [ui] The asset graph now shows only the last path component of linked assets for better readability.
- [ui] The op metadata panel now longer capitalizes metadata keys
- [ui] The asset partitions page, asset sidebar and materialization dialog are significantly smoother when viewing assets with a large number of partitions (100k+)
- [dagster-gcp-pandas] The Pandas TypeHandler for BigQuery now respects user provided
location
information. - [dagster-snowflake]
ProgrammingError
was imported from the wrong library, this has been fixed. Thanks @herbert-allium!
Experimental
- You can now set an explicit logical version on
Output
objects rather than using Dagster’s auto-generated versions. - New
get_asset_provenance
method onOpExecutionContext
allows fetching logical version provenance for an arbitrary asset key. - [ui] - you can now create dynamic partitions from the partition selection UI when materializing a dynamically partitioned asset
Documentation
- Added an example of how to use dynamic asset partitions - in the
examples/assets_dynamic_partitions
folder - New tutorial for using the BigQuery I/O manager.
- New reference page for BigQuery I/O manager features.
- New automating data pipelines guide
All Changes
1.1.20...1.1.21
See All Contributors
dagster-census api docs (#12413)
by @yuhan
graph_asset and graph_multi_asset decorators (#10152)
by @sryza
[dagster-snowflake-pyspark] fix bug loading partitions (#12472)
by @jamiedemaria
add graphql fields for querying run tags (#12409)
by @prha
Add stale status causes (#11953)
by @smackesey
fix (#12477)
by @salazarm
Update Contributing doc with instructions for ruff/pyright (#12481)
by @smackesey
[bigquery] mark bigquery io manager experimental (#12479)
by @jamiedemaria
add partial tag autocomplete for run filter input (#12410)
by @prha
Support env valueFrom in Helm chart (#12425)
by @johannkm
Update GQL to expose StaleStatus and StaleStatusCause (#11952)
by @smackesey
remove timestamp comparisons of code location entries to reduce OSS dagit replica spam (#12407)
by @prha
Fix state status logical version test (#12484)
by @smackesey
fix ruff (#12486)
by @alangenfeld
use opt_nullable_mapping for dagster library versions (#12487)
by @alangenfeld
clarify error when op is missing argument for In (#12456)
by @sryza
Remove existing RunConfig class (#12488)
by @benpankow
[pythonic resources] Clean up initialization of env vars, treat resource objects as immutable (#12445)
by @benpankow
[structured config] Add support for Selectors w/ pydantic discriminated unions (#11280)
by @benpankow
Allow setting logical version inside op (#12189)
by @smackesey
Replace usages of
nslookupwith
nc for user deployments (#11033)
by @michaeljguarino
Revert "Replace usages of
nslookupwith
nc for user deployments (#11033)"
by @johannkm
[pythonic resources] Last set of class renames (#12490)
by @benpankow
[dagster-azure] Add support for DefaultAzureCredential for adls2_resource (#11309)
by @mpicard
Add example of customizing task role and execution role arn to the ECS agent docs (#12491)
by @gibsondan
add dagster-duckdb-polars library (#12197)
by @pzarabadip
[draft][pythonic config][docs] Introduce intro to Resources doc utilizing Pythonic resources (#12260)
by @benpankow
[pythonic config] Add structured RunConfig object for specifying runtime, job config (#11965)
by @benpankow
[draft][pythonic config][docs] Introduce intro to Config doc utilizing Pythonic config (#12349)
by @benpankow
1.1.20 changelog (#12506)
by @benpankow
refactor(databricks): lift polling methods up to the client (#12382)
by @rexledesma
[fix] fix sphinx airflow version parsing (#12507)
by @benpankow
Automation: versioned docs for 1.1.20
by @elementl-devtools
[dagit] Expose range-based asset health, use it for partition status rendering (#12302)
by @bengotow
[dagit] Use range-based asset health for asset partitions / job partitions pages (#12434)
by @bengotow
Fix 1.1.20 changelog codeblock (#12525)
by @johannkm
[dagit] Delete generated GraphQL types before regenerating (#12518)
by @hellendag
[refactor] Delete build_solid_context (#12513)
by @smackesey
[typing/static] serdes (#12522)
by @smackesey
[refactor] make ResolvedRunConfig.to_dict use "ops" (#12514)
by @smackesey
Improve multipartition performance for
get_partition (#12431)
by @clairelin135
feat(databricks): override user agent in resource (#12526)
by @rexledesma
Bump typing-extensions dep to >=4.4.0 (#12529)
by @smackesey
[docs] Snowflake reference page fixes (#12455)
by @jamiedemaria
[bugfix] Make assets downstream of partitions never stale in dagit (#12528)
by @smackesey
Enable internal testing for writing asset cached status data (#12497)
by @clairelin135
[typing] fix typing in daemon tests (#12475)
by @dpeng817
dynamic partitions toy (#12533)
by @sryza
pare down multi-partition runtime type checking in upath IO manager (#12508)
by @sryza
[dagit] Upgrade to Jest 29, allow more time for coverage collection (#12534)
by @bengotow
Add description to invariant check (#12496)
by @CodeMySky
[fix] Correctly resolve asset jobs with empty selections (#12531)
by @OwenKephart
[dagit] Support backfills on partition-mapped asset selections (#12458)
by @bengotow
[dagit] Remove unnecessary usage of <TestProvider> (#12519)
by @bengotow
Fix multipartitions w/ fs_io_manager on windows (#12414)
by @clairelin135
Fix master (#12550)
by @clairelin135
Booleans that check permissions for specific objects and automatically incorporate per-location checks (#12548)
by @gibsondan
docs(dagster-dbt): add example to retrieve asset keys from dbt selection (#12323)
by @rexledesma
Fix IO manager doc snippets (#12545)
by @clairelin135
fix setup.cfg in create package (#12559)
by @jamiedemaria
Fetch multipartition key from context methods (#12512)
by @clairelin135
Include partition in asset materialization planned event (#12333)
by @johannkm
handle multiple non-time-window partitions in db io managers (#12517)
by @sryza
Add runtime_platform to EcsRunLauncher (#12566)
by @gibsondan
Tag Selector Component (#12564)
by @salazarm
Storybook for LaunchAssetChoosePartitionsDialog (#12567)
by @salazarm
Update setting-up-alerts.mdx (#12582)
by @johannkm
Move useViewport to
uiform
core (#12578)
by @salazarm
[ui] Always show "Reload all" button (#12588)
by @hellendag
Bump minimist from 1.2.5 to 1.2.8 in /js_modules/dagit (#12595)
by @dependabot[bot]
Expose partition definition name (#12585)
by @salazarm
add dynamic partitions example (#12494)
by @sryza
[dagit] Do not capitalize tag keys in the Dagit op metadata panel (#12591)
by @bengotow
[graphql] empty numPartitions and partitionNames for cross-partitioning backfills (#12462)
by @sryza
[dagit] Use last path component of linked assets on the asset graph + add tooltips (#12590)
by @bengotow
[dagster-snowflake] Fix ProgrammingError import in snowflake_io_manager (#12576)
by @herbert-allium
remove dagster-cloud dep from dynamic partitions example (#12603)
by @sryza
fix future ticks for partitioned schedules (#12601)
by @sryza
fix loading partitioned source assets in non-partitioned non-asset jobs (#12586)
by @sryza
Update stale reasons to remove UNKNOWN, add MISSING (#12584)
by @smackesey
GQL Add dynamic partition mutation (#12562)
by @clairelin135
Add asset provenance access to OpExecutionContext (#12467)
by @smackesey
feat(databricks): add basic op implementations (#12492)
by @rexledesma
docs(databricks): add guide for Databricks integration (#12326)
by @rexledesma
migrate some tests away from AssetGroup (#12606)
by @sryza
divest permissions for editing sensor from updating sensor cursor (#12589)
by @dpeng817
[dagit] Fix tests pinned to February (#12616)
by @bengotow
Move tests, fixtures, and storybooks into folders (#12614)
by @salazarm
Add root stale causes for assets (#12619)
by @smackesey
docs for graphs that depend on assets (#12597)
by @sryza
[UI] Dynamic partition creation and selection (#12615)
by @salazarm
[asset-reconciliation][perf] Do not get/set known_used_data in asset reconciliation loop (#12433)
by @OwenKephart
[dagster-gcp-pyspark] Add BigQuery PySpark type handler (#12398)
by @jamiedemaria
Automating pipeline guide (#12547)
by @odette-elementl
Capture db timeout errors for tag key queries (#12596)
by @prha
Get partitions with planned but not completed materializations, the event log query (#12404)
by @johannkm
Add failures to partition status cache (#12599)
by @johannkm
[bigquery-pandas] pipe gcp location through to type handler (#12587)
by @jamiedemaria
[docs, bigquery] tutorial and reference guide (#12452)
by @jamiedemaria
make freshness policies work with graph_asset and graph_multi_asset (#12630)
by @sryza
Revert "Add failures to partition status cache (#12599)"
by @johannkm
Revert "Get partitions with planned but not completed materializations, the event log query (#12404)"
by @johannkm
Modify
get_first_partition_window to account for offset (#12504)
by @clairelin135
[dagit] Switch to staleStatus for stale tags, display causes in tooltips (#12611)
by @bengotow
Change format of staleness root causes and remove old resolvers (#12628)
by @smackesey
Helm: Support valueFrom in user deployments (#12644)
by @johannkm
Update asset versioning guide (#12659)
by @smackesey
update CHANGES.md for 1.1.21 (#12662)
by @sryza
docs(databricks): update guide based on feedback (#12669)
by @rexledesma
1.1.21
by @elementl-devtools