Skip to content

1.29.0

Latest

Choose a tag to compare

@rudolfix rudolfix released this 13 Jul 09:31
7f2b659

dlt 1.29.0 Release Notes

Highlights

  • ClickHouse staging-optimized replace strategy (#3927 @filipesilva) β€” ClickHouse now supports the staging-optimized replace strategy, performing atomic table swaps via EXCHANGE TABLES so a full replace is instantaneous and never leaves the destination in a half-loaded state.
  • AWS Secret Manager config provider (#4162 @rudolfix) β€” dlt can now resolve config and secrets directly from AWS Secret Manager, matching the existing Google Secret Manager provider. Also stops re-creating the Google secrets client on every lookup.
  • Explicit joins in Relation.join() (#3868 @burnash) β€” The dataset relation API gains explicit join support, giving you control over join conditions when composing relations.
  • Cross-destination join compatibility (#3905 @Travior) β€” Destination configs now expose a physical_location() accessor and can_join_with rules, so dlt knows when relations that live on different destinations (or datasets) can actually be joined together.

Core Library

Features

  • BigQuery atomic replace (#4130 @oystersuki) β€” New opt-in enable_atomic_replace config flag makes the truncate-and-insert strategy do a single-job, metadata-preserving WRITE_TRUNCATE_DATA load from GCS staging, giving BigQuery an atomic, transactional full replace.
  • DuckDB SQLAlchemy destination (#4161 @rudolfix) β€” Fully tests and fixes the SQLAlchemy destination running on DuckDB.
  • Expose Parquet compression codec (#4183 @Travior) β€” Configure the Parquet compression codec via DATA_WRITER__COMPRESSION or ParquetFormatConfiguration(compression=...).
  • Cross-batch schema evolution in ArrowToParquetWriter (#3896 @AyushPatel101) β€” Safe Arrow type promotions (e.g. float32 β†’ float64) now work across flush batches instead of crashing once data spans multiple batches.
  • Additional Redshift COPY options (#4088 @timH6502) β€” New Redshift config to append extra options (e.g. FILLRECORD) to the generated COPY command for staged loads.
  • Cross-destination join compatibility (#3905 @Travior) β€” See Highlights.
  • Disable dltβ†’dlthub command proxying in workspace context (#4037 @rudolfix) β€” Instead of silently running a dlthub command, dlt now shows a note and points to the correct dlthub counterpart, avoiding misleading behavior.

Fixes

  • Fix: Normalize crash on empty Arrow tables with add_dlt_id (#4187 @nizar-zerrad) β€” Adding _dlt_id to an empty Arrow table no longer fails with ArrowInvalid.
  • Fix: correct table/resource metric aggregation (#4155 @tetelio) β€” Writer metrics are now aggregated correctly when jobs for the same table interleave across normalize workers or file rotation (previously undercounted items_count).
  • Fix: Airflow parallel staging truncation (#4079 @DRACULA1729) β€” Auto-disables staging truncation for decompose="parallel" / parallel-isolated runs so concurrent tasks no longer truncate each other's staging files.
  • Fix: move misplaced merge subqueries to post-qualify (#4169 @rudolfix) β€” Corrects merge SQL generation where pre-qualify subquery collapse could not work correctly.
  • Fix: switch replace strategy correctly (#4164 @rudolfix)
  • Fix: use truncate mechanism for empty "replace" tables (#4153 @rudolfix) β€” Empty "replace" resources are truncated via load-package state rather than empty files, avoiding hint side-effects.
  • Fix: use empty files to truncate top-level tables (#4168 @rudolfix) β€” Partially reverts #4153 for optimized replace strategies, where truncation happens upfront rather than inside the job transaction.
  • Fix: reuse job client when truncating staging dataset (#4207 @rudolfix)
  • Fix: keep the pipeline selector when no pipeline is selected (#4096 @lis365b) β€” Dashboard keeps the pipeline dropdown visible and shows a clearer empty-state message when the selection is cleared.
  • Fix: logging more frequent than log_period (#3962 @cbility) β€” Stops resetting the log timer on every counter update, so logs respect the configured log_period.
  • Bump jsonpath-ng and improve test coverage (#4105 @Travior) β€” Upgrades to jsonpath-ng 1.8.0, dropping the archived ply transitive dependency flagged by security scanners (CVE).

Docs

Chores

  • Add git commit-message rule, hook, and /commit skill (#4098 @lis365b) β€” Claude Code tooling to keep commit messages Conventional-Commit clean (no footers/emojis).
  • Refactor ibis handover β€” create ibis backend on the Destination factory (#4170 @rudolfix)
  • Relax dlthub-client deps (#4202 @rudolfix)
  • Fix Windows path for griffe tests (#4104 @rudolfix)

New Contributors