- This file provides a full account of all changes to
dbt-bigquery - The format is based on Keep a Changelog, adheres to Semantic Versioning, and is generated by Changie
- Changes are listed under the (pre-)release in which they first appear
- Subsequent releases include changes from previous releases
- "Breaking changes" listed under a version may require action from end users or external maintainers when upgrading to that version
- Do not edit this file directly. This file is auto-generated using changie
- For details on how to document a change, see the contributing guide
- Add
reservationconfig option to the BigQuery adapter, enabling jobs to be routed to a specific BigQuery reservation at the target (profiles.yml), project (+reservation), or model level ({{ config(reservation=...) }}) (#1228)
- Fixed a bug where a BigQuery job that fails with an internal error causes dbt to poll getQueryResults until the full job_execution_timeout_seconds elapses (potentially hours) instead of failing fast. The polling retry now short-circuits immediately when the underlying job has reached a terminal failed state, and the retry budget is controlled by job_retry_deadline_seconds (default 10 min) rather than job_execution_timeout_seconds. (#1956)
- Fixed a regression where transient getQueryResults rate-limit errors (rateLimitExceeded) surfaced as hard job failures during bursts of concurrent jobs. The polling retry no longer caps attempts at job_retries; retryable errors now back off (initial 5s) until job_retry_deadline_seconds, while still short-circuiting immediately when the underlying job is in a terminal failed state. Rate-limit errors back off without an extra jobs.get reload to avoid adding pressure to the rate limit being waited out. (#1957)
- Stabilize flaky BigQuery Python-model integration tests by retrying transient Dataproc CPU-quota failures, and shard the suite across parallel CI runners with pytest-split to keep it fast (#)
- Add upper bound
<2.0ondbt-coreto prevent pip from resolving to dbt-core 2.0 (Fusion engine), which is incompatible with the python adapter (#2013)
- Enable
bigquery_use_standard_sql_for_partitionsby default, switching partition metadata queries from Legacy SQL ($__PARTITIONS_SUMMARY__) to Standard SQL (INFORMATION_SCHEMA.PARTITIONS) ahead of BigQuery's Legacy SQL deprecation on June 1, 2026. This may require IAM permission updates (bigquery.tables.get+bigquery.tables.listinstead ofbigquery.tables.getData) for users with custom roles, and custom macros that access columns beyondpartition_idfromget_partitions_metadata()will need updating. Users can revert to Legacy SQL by settingflags.bigquery_use_standard_sql_for_partitions: falseindbt_project.yml. (#1725)
- Add BigQuery relation naming macros to support concurrent dbt execution without relation name collisions (#1359)
- Configure notebook execution job security labels to support cross-project runtime templates (#1594)
- Make job_execution_timeout_seconds configurable at the model level (#575)
- Support PyPI packages for Python UDFs - when packages are specified in function config, they are templated into OPTIONS(packages = [...]) for scalar Python UDFs (#1737)
- Add behavior flag
bigquery_use_standard_sql_for_partitionsto migrate get_partitions_metadata from Legacy SQL to Standard SQL using INFORMATION_SCHEMA.PARTITIONS (#1725) - Added support for JS UDFs (#1859)
- Added support for --empty in dbt seed (#1865)
- Add bridge_v2_catalog support via _v2_to_v1_type and Capability.CatalogsV2 (#1920)
- Fix query retries on transient BigQuery errors (503, 500, rate limits) by wrapping query execution with retry logic and adding retry parameter to result fetching (#941)
- Add testing for grant preservation during clone operations (#1503)
- Ensure BigQuery query result polling enforces the configured job execution timeout plus a short buffer to avoid indefinite hangs when connections drop mid-query. (#1500)
- Lazy-load aiplatform and nbformat imports to fix dbt parse performance regression introduced in 1.9.2 by BigFrames support. (#1604)
- Fix incorrect source freshness for wildcard table names (e.g. events_*). Metadata-based freshness checks now raise a clear error for wildcard tables. (#536)
- Fix BigFrames notebook execution with OAuth service account credentials by detecting identity from credential object properties (#1231)
- Fix insert_overwrite with integer range partitions generating oversized replacement arrays and leaving stale data by normalizing field values to partition boundaries. (#605)
- Make BigQuery job link logging user-configurable via job_link_info_level_log profile setting. Defaults to debug level; set job_link_info_level_log: true in profiles.yml to log at info level (#544)
- equals macro now uses IS NOT DISTINCT FROM clause for comparison (#1663)
- When persist_docs.columns is enabled, dbt now warns about columns defined in YAML that don't exist in the database via the validate_doc_columns helper, with STRUCT-aware column name matching. (#1690)
- Maintains declared order of cluster_by in generated query (#586)
- Fix expiration_timestamp rendered as unquoted Python datetime in materialized view OPTIONS clause, causing BigQuery syntax error; now formatted as TIMESTAMP literal (#1209)
- Fix nested STRUCT fields misassigning values when YAML order differs (#1530)
- Enable discovering pre-existing functions by updating
list_relations_without_cachingto include function relations (#1488) - Fixed a bug where incremental models fail when using flag enable_truthy_nulls_equals_macro (#1902)
- Skip nonexistent schemas like information_schema when building catalog relations (#1005)
- Struct aware column list creation in persist_docs now retains case sensitivity for case sensitive validation (#NA)
- Add bigquery_noop_alter_relation_comment behavior flag to avoid an unnecessary table description update call (#1548)
- Bump dbt-adapters floor to 1.24.1 for catalogs v2 and JS UDF support (#1964)
- @RRap0so (#1359)
- @b-per (#1604)
- @dvryaboy (#941)
- @jialuoo (#1594)
- @katieclaiborne-duet (#1503)
- @mehdigati (#1209)
- Support BigQuery STRUCT schema change (#599)
- 🐛 ⛄ Support batched source freshness in bigquery using TABLE_STORAGE, behind behavior change flag. (#561)
- Add support for py3.13 (#1475)
- Bump minimum dbt-adapters to 1.19.0 (#1421)
- Fix BigFrames python model + oauth + notebook template by adding a Request to creds.refresh calll (#1379)
- Update bigquery job handling to invoke job.cancel on timeout (#1355)
- Test that bigquery does nothing with volatility (#1345)
- Test handling of unknown function macro lookup (#1344)
- Drop support for python 3.9 (#1412)
- Add support for BigQuery resource tags via
resource_tagsconfiguration option (#565, #577) - Support the updating of incremental model description after initial creation (#585)
- Add
enable_change_historyoption for models on BigQuery. (#1206) - Add support for scalar functions (#1290)
- BigFrames notebook execution when using a service account with oauth (#1231)
- Ensure we have exchanged a refresh-token for a token prior to detemining notebook user in BigFrames (#1219)
- Fix references to function properties in function macros (#1365)
- Validate notebooks authorization request has succeeded (#1307)
- Emit SQLQueryStatus during query execution (#1327)
- @Robin_CHESNE (#1206)
- @jspenmar (#1231)
- @kiwamizamurai (#585)
- @tnk-ysk (#565, #577)
- Support impersonate service account in bigframes mode (#1202)
- Add support for copy_partitions when used with static partitions. (#540)
- Track notebook job status to avoid LRO in bigframes mode (#1175)
- Add user agent in bigframes mode (#1152)
- Add create_notebook_client (#977)
- Use execute wrapper instead of raw execute to add the query comment as query header (#1090)
- Issue drop statement before cloning (#1077)
- update the lower bound for dbt-adapters version in dbt-bigquery to >=1.16 (#1148)
- add lower bound for google-auth in dbt-bigquery (#1149)
- rename 'catalog' model config value to 'catalog_name' (#1134)
- Make Bigquery
api_endpointconfig option available for dbt client (#https://github.com/dbt-labs/dbt-bigquery/pull/1017) - Add support for managed Iceberg catalogs (#1105)
- generate storage_uri from external_volume, base_location_root and base_location_subpath (#1129)
- Set partial ordering mode as default in dbt bigframes (#1035)
- Set 1 hour as default timeout in bigframes mode (#1070)
- Set job_retry to None to resolve Google Cloud warning (##1088)
- populate file_format from top level integration config field (#1129)
- Rename and separate out info schema and biglake catalog integrations (#1129)
- bump dbt-core requirement to 1.10.0rc0 (#1142)
- @OTooleMichael (#https://github.com/dbt-labs/dbt-bigquery/pull/1017)
- @jialuoo (#1035, #1070)
- @katieclaiborne-duet (##1088)
- Allow copy_partitions in microbatch (#1414)
- Add authentication method for Workload Identity Federation. (#593)
- Add support for creating BigQuery labels from meta configuration (#889)
- Support bigframes in dbt bigquery python model (#921)
- Support timeout in bigframes mode of dbt python model (#949)
- Support custom packages in bigframes mode (#978)
- Support oauth secrets credential method in bigframes mode (#1026)
- Fix issue where dbt-bigquery was not retrying in certain retryable scenarios, e.g. 503's (#682)
- Cast
event_timeto a timestamp prior to comparing against microbatch start/end time (#1422) - Fix issue where rate limit errors on table service calls are not retried (#1423)
- Fix retry scenarios so that dbt always retries when BigQuery recommends a retry (#263)
- Fix silently ignoring materialized view authorization (#1471)
- Format the outputs of notebook execution (#943)
- Create a new default runtime template (#950)
- use compute_region instead of dataproc_region (#957)
- Fix the credential method issue (#970)
- Raise an error when notebook execution failed (#976)
datetime.datetime.utcnow()is deprecated as of Python 3.12 (#980)- Make location optional in bigframes (#1001)
- Quick fix of session in table.sql (#1003)
- set job_timeout_ms in job config so BQ cancels queries on timeout (#1004)
- Move from setup.py to pyproject.toml and to hatch as a dev tool (#1407)
- replace DbtRuntime exception with DbtDatabase exception in dbt-bigquery connection exception handling (#798)
- Added annotation for recording. (#761)
- Permits newer versions of google-cloud-storage than 2.4.x to be used, defaults to latest (#931)
- @borjavb (#1414)
- @brabster (#931)
- @jenniferjsmmiller (#593)
- @jialuoo (#921, #949, #978, #1026, #943, #950, #957, #970, #976, #1001, #1003)
- @kubikb (#1471)
- @physcat (#889)
For information on prior major and minor releases, see their changelogs: