From 4932b9679ae7af5dfefcca623cc5cf33a66c7ecc Mon Sep 17 00:00:00 2001 From: Michelle Ark Date: Thu, 26 Sep 2024 01:51:21 +0100 Subject: [PATCH 1/8] Microbatch Strategy (#1334) * poc: microbatch using merge * update base tests * use dynamic insert_overwrite under the hood for bigquery * changelog entry * clean up validation + add testing --- .../unreleased/Features-20240925-232238.yaml | 6 ++ .../macros/materializations/incremental.sql | 15 ++++- .../incremental_strategy/microbatch.sql | 28 ++++++++++ .../incremental_strategy_fixtures.py | 56 +++++++++++++++++++ .../test_incremental_microbatch.py | 55 ++++++++++++++++++ 5 files changed, 157 insertions(+), 3 deletions(-) create mode 100644 .changes/unreleased/Features-20240925-232238.yaml create mode 100644 dbt/include/bigquery/macros/materializations/incremental_strategy/microbatch.sql create mode 100644 tests/functional/adapter/incremental/test_incremental_microbatch.py diff --git a/.changes/unreleased/Features-20240925-232238.yaml b/.changes/unreleased/Features-20240925-232238.yaml new file mode 100644 index 000000000..903884196 --- /dev/null +++ b/.changes/unreleased/Features-20240925-232238.yaml @@ -0,0 +1,6 @@ +kind: Features +body: Add Microbatch Strategy to dbt-spark +time: 2024-09-25T23:22:38.216277+01:00 +custom: + Author: michelleark + Issue: "1354" diff --git a/dbt/include/bigquery/macros/materializations/incremental.sql b/dbt/include/bigquery/macros/materializations/incremental.sql index 3908bedc2..935280d63 100644 --- a/dbt/include/bigquery/macros/materializations/incremental.sql +++ b/dbt/include/bigquery/macros/materializations/incremental.sql @@ -4,12 +4,16 @@ {% set invalid_strategy_msg -%} Invalid incremental strategy provided: {{ strategy }} - Expected one of: 'merge', 'insert_overwrite' + Expected one of: 'merge', 'insert_overwrite', 'microbatch' {%- endset %} - {% if strategy not in ['merge', 'insert_overwrite'] %} + {% if strategy not in ['merge', 'insert_overwrite', 'microbatch'] %} {% do exceptions.raise_compiler_error(invalid_strategy_msg) %} {% endif %} + {% if strategy == 'microbatch' %} + {% do bq_validate_microbatch_config(config) %} + {% endif %} + {% do return(strategy) %} {% endmacro %} @@ -48,8 +52,13 @@ tmp_relation, target_relation, sql, unique_key, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions ) %} - {% else %} {# strategy == 'merge' #} + {% elif strategy == 'microbatch' %} + {% set build_sql = bq_generate_microbatch_build_sql( + tmp_relation, target_relation, sql, unique_key, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions + ) %} + + {% else %} {# strategy == 'merge' #} {% set build_sql = bq_generate_incremental_merge_build_sql( tmp_relation, target_relation, sql, unique_key, partition_by, dest_columns, tmp_relation_exists, incremental_predicates ) %} diff --git a/dbt/include/bigquery/macros/materializations/incremental_strategy/microbatch.sql b/dbt/include/bigquery/macros/materializations/incremental_strategy/microbatch.sql new file mode 100644 index 000000000..d4c4b7453 --- /dev/null +++ b/dbt/include/bigquery/macros/materializations/incremental_strategy/microbatch.sql @@ -0,0 +1,28 @@ +{% macro bq_validate_microbatch_config(config) %} + {% if config.get("partition_by") is none %} + {% set missing_partition_msg -%} + The 'microbatch' strategy requires a `partition_by` config. + {%- endset %} + {% do exceptions.raise_compiler_error(missing_partition_msg) %} + {% endif %} + + {% if config.get("partition_by").granularity != config.get('batch_size') %} + {% set invalid_partition_by_granularity_msg -%} + The 'microbatch' strategy requires a `partition_by` config with the same granularity as its configured `batch_size`. + Got: + `batch_size`: {{ config.get('batch_size') }} + `partition_by.granularity`: {{ config.get("partition_by").granularity }} + {%- endset %} + {% do exceptions.raise_compiler_error(invalid_partition_by_granularity_msg) %} + {% endif %} +{% endmacro %} + +{% macro bq_generate_microbatch_build_sql( + tmp_relation, target_relation, sql, unique_key, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions +) %} + {% set build_sql = bq_insert_overwrite_sql( + tmp_relation, target_relation, sql, unique_key, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions + ) %} + + {{ return(build_sql) }} +{% endmacro %} diff --git a/tests/functional/adapter/incremental/incremental_strategy_fixtures.py b/tests/functional/adapter/incremental/incremental_strategy_fixtures.py index 17391b48d..02efbb6c2 100644 --- a/tests/functional/adapter/incremental/incremental_strategy_fixtures.py +++ b/tests/functional/adapter/incremental/incremental_strategy_fixtures.py @@ -555,3 +555,59 @@ select * from data """.lstrip() + +microbatch_model_no_unique_id_sql = """ +{{ config( + materialized='incremental', + incremental_strategy='microbatch', + partition_by={ + 'field': 'event_time', + 'data_type': 'timestamp', + 'granularity': 'day' + }, + event_time='event_time', + batch_size='day', + begin=modules.datetime.datetime(2020, 1, 1, 0, 0, 0) + ) +}} +select * from {{ ref('input_model') }} +""" + +microbatch_input_sql = """ +{{ config(materialized='table', event_time='event_time') }} +select 1 as id, TIMESTAMP '2020-01-01 00:00:00-0' as event_time +union all +select 2 as id, TIMESTAMP '2020-01-02 00:00:00-0' as event_time +union all +select 3 as id, TIMESTAMP '2020-01-03 00:00:00-0' as event_time +""" + +microbatch_model_no_partition_by_sql = """ +{{ config( + materialized='incremental', + incremental_strategy='microbatch', + event_time='event_time', + batch_size='day', + begin=modules.datetime.datetime(2020, 1, 1, 0, 0, 0) + ) +}} +select * from {{ ref('input_model') }} +""" + + +microbatch_model_invalid_partition_by_sql = """ +{{ config( + materialized='incremental', + incremental_strategy='microbatch', + event_time='event_time', + batch_size='day', + begin=modules.datetime.datetime(2020, 1, 1, 0, 0, 0), + partition_by={ + 'field': 'event_time', + 'data_type': 'timestamp', + 'granularity': 'hour' + } + ) +}} +select * from {{ ref('input_model') }} +""" diff --git a/tests/functional/adapter/incremental/test_incremental_microbatch.py b/tests/functional/adapter/incremental/test_incremental_microbatch.py new file mode 100644 index 000000000..d1bbbcea3 --- /dev/null +++ b/tests/functional/adapter/incremental/test_incremental_microbatch.py @@ -0,0 +1,55 @@ +import os +import pytest +from unittest import mock + +from dbt.tests.util import run_dbt_and_capture +from dbt.tests.adapter.incremental.test_incremental_microbatch import ( + BaseMicrobatch, + patch_microbatch_end_time, +) + +from tests.functional.adapter.incremental.incremental_strategy_fixtures import ( + microbatch_model_no_unique_id_sql, + microbatch_input_sql, + microbatch_model_no_partition_by_sql, + microbatch_model_invalid_partition_by_sql, +) + + +class TestBigQueryMicrobatch(BaseMicrobatch): + @pytest.fixture(scope="class") + def microbatch_model_sql(self) -> str: + return microbatch_model_no_unique_id_sql + + +class TestBigQueryMicrobatchMissingPartitionBy: + @pytest.fixture(scope="class") + def models(self) -> str: + return { + "microbatch.sql": microbatch_model_no_partition_by_sql, + "input_model.sql": microbatch_input_sql, + } + + @mock.patch.dict(os.environ, {"DBT_EXPERIMENTAL_MICROBATCH": "True"}) + def test_execution_failure_no_partition_by(self, project): + with patch_microbatch_end_time("2020-01-03 13:57:00"): + _, stdout = run_dbt_and_capture(["run"], expect_pass=False) + assert "The 'microbatch' strategy requires a `partition_by` config" in stdout + + +class TestBigQueryMicrobatchInvalidPartitionByGranularity: + @pytest.fixture(scope="class") + def models(self) -> str: + return { + "microbatch.sql": microbatch_model_invalid_partition_by_sql, + "input_model.sql": microbatch_input_sql, + } + + @mock.patch.dict(os.environ, {"DBT_EXPERIMENTAL_MICROBATCH": "True"}) + def test_execution_failure_no_partition_by(self, project): + with patch_microbatch_end_time("2020-01-03 13:57:00"): + _, stdout = run_dbt_and_capture(["run"], expect_pass=False) + assert ( + "The 'microbatch' strategy requires a `partition_by` config with the same granularity as its configured `batch_size`" + in stdout + ) From ae0f91c7a9dac303632eba2a99161251be6396f7 Mon Sep 17 00:00:00 2001 From: Colin Rogers <111200756+colin-rogers-dbt@users.noreply.github.com> Date: Fri, 27 Sep 2024 15:33:24 -0700 Subject: [PATCH 2/8] update dbt-common dependency to 1.10 and dbt-adapters to 1.7 (#1356) * use dynamic schema in test_grant_access_to.py * use dynamic schema in test_grant_access_to.py * revert setup * update dbt-common dependency to 1.10 and dbt-adapters to 1.7 * run integration.yml on change to any *.py file --- .github/workflows/integration.yml | 1 + setup.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index fd22b1d9a..43ac4ecb3 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -128,6 +128,7 @@ jobs: - 'tests/**' - 'dev-requirements.txt' - '.github/**' + - '*.py' - name: Generate integration test matrix id: generate-matrix diff --git a/setup.py b/setup.py index 97a5e96a4..ab89a3c39 100644 --- a/setup.py +++ b/setup.py @@ -50,8 +50,8 @@ def _dbt_bigquery_version() -> str: packages=find_namespace_packages(include=["dbt", "dbt.*"]), include_package_data=True, install_requires=[ - "dbt-common>=1.0.4,<2.0", - "dbt-adapters>=1.1.1,<2.0", + "dbt-common>=1.10,<2.0", + "dbt-adapters>=1.7,<2.0", # 3.20 introduced pyarrow>=3.0 under the `pandas` extra "google-cloud-bigquery[pandas]>=3.0,<4.0", "google-cloud-storage~=2.4", From 8833c5450a5f1f59b688a5c488f27864dc02f93c Mon Sep 17 00:00:00 2001 From: Mike Alfare <13974384+mikealfare@users.noreply.github.com> Date: Tue, 1 Oct 2024 21:03:14 -0400 Subject: [PATCH 3/8] Catch google `NotFound` exception as a `DbtDatabaseError` (#1360) * catch google NotFound exception as a DbtDatabaseError * changelog --- .changes/unreleased/Fixes-20241001-193207.yaml | 7 +++++++ dbt/adapters/bigquery/connections.py | 4 ++++ 2 files changed, 11 insertions(+) create mode 100644 .changes/unreleased/Fixes-20241001-193207.yaml diff --git a/.changes/unreleased/Fixes-20241001-193207.yaml b/.changes/unreleased/Fixes-20241001-193207.yaml new file mode 100644 index 000000000..584445a5b --- /dev/null +++ b/.changes/unreleased/Fixes-20241001-193207.yaml @@ -0,0 +1,7 @@ +kind: Fixes +body: Catch additional database error exception, NotFound, as a DbtDatabaseError instead + of defaulting to a DbtRuntimeError +time: 2024-10-01T19:32:07.304353-04:00 +custom: + Author: mikealfare + Issue: "1360" diff --git a/dbt/adapters/bigquery/connections.py b/dbt/adapters/bigquery/connections.py index cdd9d17dc..d3eee3ef3 100644 --- a/dbt/adapters/bigquery/connections.py +++ b/dbt/adapters/bigquery/connections.py @@ -268,6 +268,10 @@ def exception_handler(self, sql): message = "Access denied while running query" self.handle_error(e, message) + except google.cloud.exceptions.NotFound as e: + message = "Not found while running query" + self.handle_error(e, message) + except google.auth.exceptions.RefreshError as e: message = ( "Unable to generate access token, if you're using " From bc93052b81a674cfa5ead0b72427d60b60f79d8b Mon Sep 17 00:00:00 2001 From: Github Build Bot Date: Wed, 2 Oct 2024 01:06:42 +0000 Subject: [PATCH 4/8] Bumping version to 1.9.0b1 and generate changelog --- .bumpversion.cfg | 2 +- .changes/1.9.0-b1.md | 44 +++++++++++++++++ .../Dependencies-20231211-001048.yaml | 0 .../Dependencies-20231220-002130.yaml | 0 .../Dependencies-20231222-002351.yaml | 0 .../Dependencies-20240105-004800.yaml | 0 .../Dependencies-20240429-005158.yaml | 0 .../Dependencies-20240429-005159.yaml | 0 .../Dependencies-20240520-230208.yaml | 0 .../Dependencies-20240718-005755.yaml | 0 .../Dependencies-20240718-005756.yaml | 0 .../Dependencies-20240718-005757.yaml | 0 .../Dependencies-20240719-003740.yaml | 0 .../Features-20240426-105319.yaml | 0 .../Features-20240430-185650.yaml | 0 .../Features-20240501-151902.yaml | 0 .../Features-20240516-125735.yaml | 0 .../Features-20240730-135911.yaml | 0 .../Features-20240925-232238.yaml | 0 .../Fixes-20240120-180818.yaml | 0 .../Fixes-20240201-145323.yaml | 0 .../Fixes-20240226-233024.yaml | 0 .../Fixes-20240426-105224.yaml | 0 .../Fixes-20241001-193207.yaml | 0 .../Under the Hood-20240331-101418.yaml | 0 .../Under the Hood-20240718-193206.yaml | 0 CHANGELOG.md | 48 ++++++++++++++++++- dbt/adapters/bigquery/__version__.py | 2 +- 28 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 .changes/1.9.0-b1.md rename .changes/{unreleased => 1.9.0}/Dependencies-20231211-001048.yaml (100%) rename .changes/{unreleased => 1.9.0}/Dependencies-20231220-002130.yaml (100%) rename .changes/{unreleased => 1.9.0}/Dependencies-20231222-002351.yaml (100%) rename .changes/{unreleased => 1.9.0}/Dependencies-20240105-004800.yaml (100%) rename .changes/{unreleased => 1.9.0}/Dependencies-20240429-005158.yaml (100%) rename .changes/{unreleased => 1.9.0}/Dependencies-20240429-005159.yaml (100%) rename .changes/{unreleased => 1.9.0}/Dependencies-20240520-230208.yaml (100%) rename .changes/{unreleased => 1.9.0}/Dependencies-20240718-005755.yaml (100%) rename .changes/{unreleased => 1.9.0}/Dependencies-20240718-005756.yaml (100%) rename .changes/{unreleased => 1.9.0}/Dependencies-20240718-005757.yaml (100%) rename .changes/{unreleased => 1.9.0}/Dependencies-20240719-003740.yaml (100%) rename .changes/{unreleased => 1.9.0}/Features-20240426-105319.yaml (100%) rename .changes/{unreleased => 1.9.0}/Features-20240430-185650.yaml (100%) rename .changes/{unreleased => 1.9.0}/Features-20240501-151902.yaml (100%) rename .changes/{unreleased => 1.9.0}/Features-20240516-125735.yaml (100%) rename .changes/{unreleased => 1.9.0}/Features-20240730-135911.yaml (100%) rename .changes/{unreleased => 1.9.0}/Features-20240925-232238.yaml (100%) rename .changes/{unreleased => 1.9.0}/Fixes-20240120-180818.yaml (100%) rename .changes/{unreleased => 1.9.0}/Fixes-20240201-145323.yaml (100%) rename .changes/{unreleased => 1.9.0}/Fixes-20240226-233024.yaml (100%) rename .changes/{unreleased => 1.9.0}/Fixes-20240426-105224.yaml (100%) rename .changes/{unreleased => 1.9.0}/Fixes-20241001-193207.yaml (100%) rename .changes/{unreleased => 1.9.0}/Under the Hood-20240331-101418.yaml (100%) rename .changes/{unreleased => 1.9.0}/Under the Hood-20240718-193206.yaml (100%) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 24e904ac0..bd9430cbe 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 1.9.0a1 +current_version = 1.9.0b1 parse = (?P[\d]+) # major version number \.(?P[\d]+) # minor version number \.(?P[\d]+) # patch version number diff --git a/.changes/1.9.0-b1.md b/.changes/1.9.0-b1.md new file mode 100644 index 000000000..7d0dd2c8f --- /dev/null +++ b/.changes/1.9.0-b1.md @@ -0,0 +1,44 @@ +## dbt-bigquery 1.9.0-b1 - October 02, 2024 + +### Features + +- Add configuration options `enable_list_inference` and `intermediate_format` for python models ([#1047](https://github.com/dbt-labs/dbt-bigquery/issues/1047), [#1114](https://github.com/dbt-labs/dbt-bigquery/issues/1114)) +- Add tests for cross-database `cast` macro ([#1214](https://github.com/dbt-labs/dbt-bigquery/issues/1214)) +- Cross-database `date` macro ([#1221](https://github.com/dbt-labs/dbt-bigquery/issues/1221)) +- Add support for base 64 encoded json keyfile credentials ([#923](https://github.com/dbt-labs/dbt-bigquery/issues/923)) +- Add support for cancelling queries on keyboard interrupt ([#917](https://github.com/dbt-labs/dbt-bigquery/issues/917)) +- Add Microbatch Strategy to dbt-spark ([#1354](https://github.com/dbt-labs/dbt-bigquery/issues/1354)) + +### Fixes + +- Drop intermediate objects created in BigQuery for incremental models ([#1036](https://github.com/dbt-labs/dbt-bigquery/issues/1036)) +- Fix null column index issue during `dbt docs generate` for external tables ([#1079](https://github.com/dbt-labs/dbt-bigquery/issues/1079)) +- make seed delimiter configurable via `field_delimeter` in model config ([#1119](https://github.com/dbt-labs/dbt-bigquery/issues/1119)) +- Default `enableListInference` to `True` for python models to support nested lists ([#1047](https://github.com/dbt-labs/dbt-bigquery/issues/1047), [#1114](https://github.com/dbt-labs/dbt-bigquery/issues/1114)) +- Catch additional database error exception, NotFound, as a DbtDatabaseError instead of defaulting to a DbtRuntimeError ([#1360](https://github.com/dbt-labs/dbt-bigquery/issues/1360)) + +### Under the Hood + +- Lazy load `agate` ([#1162](https://github.com/dbt-labs/dbt-bigquery/issues/1162)) +- Simplify linting environment and dev dependencies ([#1291](https://github.com/dbt-labs/dbt-bigquery/issues/1291)) + +### Dependencies + +- Update pre-commit requirement from ~=3.5 to ~=3.7 ([#1052](https://github.com/dbt-labs/dbt-bigquery/pull/1052)) +- Update freezegun requirement from ~=1.3 to ~=1.4 ([#1062](https://github.com/dbt-labs/dbt-bigquery/pull/1062)) +- Bump mypy from 1.7.1 to 1.8.0 ([#1064](https://github.com/dbt-labs/dbt-bigquery/pull/1064)) +- Update flake8 requirement from ~=6.1 to ~=7.0 ([#1069](https://github.com/dbt-labs/dbt-bigquery/pull/1069)) +- Bump actions/download-artifact from 3 to 4 ([#1209](https://github.com/dbt-labs/dbt-bigquery/pull/1209)) +- Bump actions/upload-artifact from 3 to 4 ([#1210](https://github.com/dbt-labs/dbt-bigquery/pull/1210)) +- Bump ubuntu from 22.04 to 24.04 in /docker ([#1247](https://github.com/dbt-labs/dbt-bigquery/pull/1247)) +- Update pre-commit-hooks requirement from ~=4.5 to ~=4.6 ([#1281](https://github.com/dbt-labs/dbt-bigquery/pull/1281)) +- Update pytest-xdist requirement from ~=3.5 to ~=3.6 ([#1282](https://github.com/dbt-labs/dbt-bigquery/pull/1282)) +- Update flaky requirement from ~=3.7 to ~=3.8 ([#1283](https://github.com/dbt-labs/dbt-bigquery/pull/1283)) +- Update twine requirement from ~=4.0 to ~=5.1 ([#1293](https://github.com/dbt-labs/dbt-bigquery/pull/1293)) + +### Contributors +- [@d-cole](https://github.com/d-cole) ([#917](https://github.com/dbt-labs/dbt-bigquery/issues/917)) +- [@dwreeves](https://github.com/dwreeves) ([#1162](https://github.com/dbt-labs/dbt-bigquery/issues/1162)) +- [@robeleb1](https://github.com/robeleb1) ([#923](https://github.com/dbt-labs/dbt-bigquery/issues/923)) +- [@salimmoulouel](https://github.com/salimmoulouel) ([#1119](https://github.com/dbt-labs/dbt-bigquery/issues/1119)) +- [@vinit2107](https://github.com/vinit2107) ([#1036](https://github.com/dbt-labs/dbt-bigquery/issues/1036)) diff --git a/.changes/unreleased/Dependencies-20231211-001048.yaml b/.changes/1.9.0/Dependencies-20231211-001048.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20231211-001048.yaml rename to .changes/1.9.0/Dependencies-20231211-001048.yaml diff --git a/.changes/unreleased/Dependencies-20231220-002130.yaml b/.changes/1.9.0/Dependencies-20231220-002130.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20231220-002130.yaml rename to .changes/1.9.0/Dependencies-20231220-002130.yaml diff --git a/.changes/unreleased/Dependencies-20231222-002351.yaml b/.changes/1.9.0/Dependencies-20231222-002351.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20231222-002351.yaml rename to .changes/1.9.0/Dependencies-20231222-002351.yaml diff --git a/.changes/unreleased/Dependencies-20240105-004800.yaml b/.changes/1.9.0/Dependencies-20240105-004800.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20240105-004800.yaml rename to .changes/1.9.0/Dependencies-20240105-004800.yaml diff --git a/.changes/unreleased/Dependencies-20240429-005158.yaml b/.changes/1.9.0/Dependencies-20240429-005158.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20240429-005158.yaml rename to .changes/1.9.0/Dependencies-20240429-005158.yaml diff --git a/.changes/unreleased/Dependencies-20240429-005159.yaml b/.changes/1.9.0/Dependencies-20240429-005159.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20240429-005159.yaml rename to .changes/1.9.0/Dependencies-20240429-005159.yaml diff --git a/.changes/unreleased/Dependencies-20240520-230208.yaml b/.changes/1.9.0/Dependencies-20240520-230208.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20240520-230208.yaml rename to .changes/1.9.0/Dependencies-20240520-230208.yaml diff --git a/.changes/unreleased/Dependencies-20240718-005755.yaml b/.changes/1.9.0/Dependencies-20240718-005755.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20240718-005755.yaml rename to .changes/1.9.0/Dependencies-20240718-005755.yaml diff --git a/.changes/unreleased/Dependencies-20240718-005756.yaml b/.changes/1.9.0/Dependencies-20240718-005756.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20240718-005756.yaml rename to .changes/1.9.0/Dependencies-20240718-005756.yaml diff --git a/.changes/unreleased/Dependencies-20240718-005757.yaml b/.changes/1.9.0/Dependencies-20240718-005757.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20240718-005757.yaml rename to .changes/1.9.0/Dependencies-20240718-005757.yaml diff --git a/.changes/unreleased/Dependencies-20240719-003740.yaml b/.changes/1.9.0/Dependencies-20240719-003740.yaml similarity index 100% rename from .changes/unreleased/Dependencies-20240719-003740.yaml rename to .changes/1.9.0/Dependencies-20240719-003740.yaml diff --git a/.changes/unreleased/Features-20240426-105319.yaml b/.changes/1.9.0/Features-20240426-105319.yaml similarity index 100% rename from .changes/unreleased/Features-20240426-105319.yaml rename to .changes/1.9.0/Features-20240426-105319.yaml diff --git a/.changes/unreleased/Features-20240430-185650.yaml b/.changes/1.9.0/Features-20240430-185650.yaml similarity index 100% rename from .changes/unreleased/Features-20240430-185650.yaml rename to .changes/1.9.0/Features-20240430-185650.yaml diff --git a/.changes/unreleased/Features-20240501-151902.yaml b/.changes/1.9.0/Features-20240501-151902.yaml similarity index 100% rename from .changes/unreleased/Features-20240501-151902.yaml rename to .changes/1.9.0/Features-20240501-151902.yaml diff --git a/.changes/unreleased/Features-20240516-125735.yaml b/.changes/1.9.0/Features-20240516-125735.yaml similarity index 100% rename from .changes/unreleased/Features-20240516-125735.yaml rename to .changes/1.9.0/Features-20240516-125735.yaml diff --git a/.changes/unreleased/Features-20240730-135911.yaml b/.changes/1.9.0/Features-20240730-135911.yaml similarity index 100% rename from .changes/unreleased/Features-20240730-135911.yaml rename to .changes/1.9.0/Features-20240730-135911.yaml diff --git a/.changes/unreleased/Features-20240925-232238.yaml b/.changes/1.9.0/Features-20240925-232238.yaml similarity index 100% rename from .changes/unreleased/Features-20240925-232238.yaml rename to .changes/1.9.0/Features-20240925-232238.yaml diff --git a/.changes/unreleased/Fixes-20240120-180818.yaml b/.changes/1.9.0/Fixes-20240120-180818.yaml similarity index 100% rename from .changes/unreleased/Fixes-20240120-180818.yaml rename to .changes/1.9.0/Fixes-20240120-180818.yaml diff --git a/.changes/unreleased/Fixes-20240201-145323.yaml b/.changes/1.9.0/Fixes-20240201-145323.yaml similarity index 100% rename from .changes/unreleased/Fixes-20240201-145323.yaml rename to .changes/1.9.0/Fixes-20240201-145323.yaml diff --git a/.changes/unreleased/Fixes-20240226-233024.yaml b/.changes/1.9.0/Fixes-20240226-233024.yaml similarity index 100% rename from .changes/unreleased/Fixes-20240226-233024.yaml rename to .changes/1.9.0/Fixes-20240226-233024.yaml diff --git a/.changes/unreleased/Fixes-20240426-105224.yaml b/.changes/1.9.0/Fixes-20240426-105224.yaml similarity index 100% rename from .changes/unreleased/Fixes-20240426-105224.yaml rename to .changes/1.9.0/Fixes-20240426-105224.yaml diff --git a/.changes/unreleased/Fixes-20241001-193207.yaml b/.changes/1.9.0/Fixes-20241001-193207.yaml similarity index 100% rename from .changes/unreleased/Fixes-20241001-193207.yaml rename to .changes/1.9.0/Fixes-20241001-193207.yaml diff --git a/.changes/unreleased/Under the Hood-20240331-101418.yaml b/.changes/1.9.0/Under the Hood-20240331-101418.yaml similarity index 100% rename from .changes/unreleased/Under the Hood-20240331-101418.yaml rename to .changes/1.9.0/Under the Hood-20240331-101418.yaml diff --git a/.changes/unreleased/Under the Hood-20240718-193206.yaml b/.changes/1.9.0/Under the Hood-20240718-193206.yaml similarity index 100% rename from .changes/unreleased/Under the Hood-20240718-193206.yaml rename to .changes/1.9.0/Under the Hood-20240718-193206.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a408c580..b9bda350a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,10 +5,54 @@ - "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](https://github.com/miniscruff/changie). For details on how to document a change, see [the contributing guide](https://github.com/dbt-labs/dbt-bigquery/blob/main/CONTRIBUTING.md#adding-changelog-entry) +## dbt-bigquery 1.9.0-b1 - October 02, 2024 + +### Features + +- Add configuration options `enable_list_inference` and `intermediate_format` for python models ([#1047](https://github.com/dbt-labs/dbt-bigquery/issues/1047), [#1114](https://github.com/dbt-labs/dbt-bigquery/issues/1114)) +- Add tests for cross-database `cast` macro ([#1214](https://github.com/dbt-labs/dbt-bigquery/issues/1214)) +- Cross-database `date` macro ([#1221](https://github.com/dbt-labs/dbt-bigquery/issues/1221)) +- Add support for base 64 encoded json keyfile credentials ([#923](https://github.com/dbt-labs/dbt-bigquery/issues/923)) +- Add support for cancelling queries on keyboard interrupt ([#917](https://github.com/dbt-labs/dbt-bigquery/issues/917)) +- Add Microbatch Strategy to dbt-spark ([#1354](https://github.com/dbt-labs/dbt-bigquery/issues/1354)) + +### Fixes + +- Drop intermediate objects created in BigQuery for incremental models ([#1036](https://github.com/dbt-labs/dbt-bigquery/issues/1036)) +- Fix null column index issue during `dbt docs generate` for external tables ([#1079](https://github.com/dbt-labs/dbt-bigquery/issues/1079)) +- make seed delimiter configurable via `field_delimeter` in model config ([#1119](https://github.com/dbt-labs/dbt-bigquery/issues/1119)) +- Default `enableListInference` to `True` for python models to support nested lists ([#1047](https://github.com/dbt-labs/dbt-bigquery/issues/1047), [#1114](https://github.com/dbt-labs/dbt-bigquery/issues/1114)) +- Catch additional database error exception, NotFound, as a DbtDatabaseError instead of defaulting to a DbtRuntimeError ([#1360](https://github.com/dbt-labs/dbt-bigquery/issues/1360)) + +### Under the Hood + +- Lazy load `agate` ([#1162](https://github.com/dbt-labs/dbt-bigquery/issues/1162)) +- Simplify linting environment and dev dependencies ([#1291](https://github.com/dbt-labs/dbt-bigquery/issues/1291)) + +### Dependencies + +- Update pre-commit requirement from ~=3.5 to ~=3.7 ([#1052](https://github.com/dbt-labs/dbt-bigquery/pull/1052)) +- Update freezegun requirement from ~=1.3 to ~=1.4 ([#1062](https://github.com/dbt-labs/dbt-bigquery/pull/1062)) +- Bump mypy from 1.7.1 to 1.8.0 ([#1064](https://github.com/dbt-labs/dbt-bigquery/pull/1064)) +- Update flake8 requirement from ~=6.1 to ~=7.0 ([#1069](https://github.com/dbt-labs/dbt-bigquery/pull/1069)) +- Bump actions/download-artifact from 3 to 4 ([#1209](https://github.com/dbt-labs/dbt-bigquery/pull/1209)) +- Bump actions/upload-artifact from 3 to 4 ([#1210](https://github.com/dbt-labs/dbt-bigquery/pull/1210)) +- Bump ubuntu from 22.04 to 24.04 in /docker ([#1247](https://github.com/dbt-labs/dbt-bigquery/pull/1247)) +- Update pre-commit-hooks requirement from ~=4.5 to ~=4.6 ([#1281](https://github.com/dbt-labs/dbt-bigquery/pull/1281)) +- Update pytest-xdist requirement from ~=3.5 to ~=3.6 ([#1282](https://github.com/dbt-labs/dbt-bigquery/pull/1282)) +- Update flaky requirement from ~=3.7 to ~=3.8 ([#1283](https://github.com/dbt-labs/dbt-bigquery/pull/1283)) +- Update twine requirement from ~=4.0 to ~=5.1 ([#1293](https://github.com/dbt-labs/dbt-bigquery/pull/1293)) + +### Contributors +- [@d-cole](https://github.com/d-cole) ([#917](https://github.com/dbt-labs/dbt-bigquery/issues/917)) +- [@dwreeves](https://github.com/dwreeves) ([#1162](https://github.com/dbt-labs/dbt-bigquery/issues/1162)) +- [@robeleb1](https://github.com/robeleb1) ([#923](https://github.com/dbt-labs/dbt-bigquery/issues/923)) +- [@salimmoulouel](https://github.com/salimmoulouel) ([#1119](https://github.com/dbt-labs/dbt-bigquery/issues/1119)) +- [@vinit2107](https://github.com/vinit2107) ([#1036](https://github.com/dbt-labs/dbt-bigquery/issues/1036)) + + ## Previous Releases For information on prior major and minor releases, see their changelogs: -- [1.8](https://github.com/dbt-labs/dbt-bigquery/blob/1.8.latest/CHANGELOG.md) -- [1.7](https://github.com/dbt-labs/dbt-bigquery/blob/1.7.latest/CHANGELOG.md) - [1.6](https://github.com/dbt-labs/dbt-bigquery/blob/1.6.latest/CHANGELOG.md) - [1.5](https://github.com/dbt-labs/dbt-bigquery/blob/1.5.latest/CHANGELOG.md) - [1.4](https://github.com/dbt-labs/dbt-bigquery/blob/1.4.latest/CHANGELOG.md) diff --git a/dbt/adapters/bigquery/__version__.py b/dbt/adapters/bigquery/__version__.py index 6698ed64c..a4077fff2 100644 --- a/dbt/adapters/bigquery/__version__.py +++ b/dbt/adapters/bigquery/__version__.py @@ -1 +1 @@ -version = "1.9.0a1" +version = "1.9.0b1" From 1d61844b9bea3e3d43ffb544a3573d49954fd550 Mon Sep 17 00:00:00 2001 From: Mike Alfare <13974384+mikealfare@users.noreply.github.com> Date: Thu, 17 Oct 2024 15:07:27 -0400 Subject: [PATCH 5/8] Drop support for Python 3.8 (#1373) * drop support for python 3.8 --- .../Breaking Changes-20241016-185117.yaml | 6 +++ .github/scripts/integration-test-matrix.js | 4 +- .github/workflows/integration.yml | 5 +- .github/workflows/main.yml | 8 +-- .pre-commit-config.yaml | 1 - CONTRIBUTING.md | 2 +- dev-requirements.txt | 3 +- docker/Dockerfile | 4 +- docker/dev.Dockerfile | 50 +++++++++---------- setup.py | 7 ++- tox.ini | 8 +-- 11 files changed, 51 insertions(+), 47 deletions(-) create mode 100644 .changes/unreleased/Breaking Changes-20241016-185117.yaml diff --git a/.changes/unreleased/Breaking Changes-20241016-185117.yaml b/.changes/unreleased/Breaking Changes-20241016-185117.yaml new file mode 100644 index 000000000..55bb37461 --- /dev/null +++ b/.changes/unreleased/Breaking Changes-20241016-185117.yaml @@ -0,0 +1,6 @@ +kind: Breaking Changes +body: Drop support for Python 3.8 +time: 2024-10-16T18:51:17.581547-04:00 +custom: + Author: mikealfare + Issue: "1373" diff --git a/.github/scripts/integration-test-matrix.js b/.github/scripts/integration-test-matrix.js index 8e4b351fc..49db45575 100644 --- a/.github/scripts/integration-test-matrix.js +++ b/.github/scripts/integration-test-matrix.js @@ -1,6 +1,6 @@ module.exports = ({ context }) => { - const defaultPythonVersion = "3.8"; - const supportedPythonVersions = ["3.8", "3.9", "3.10", "3.11", "3.12"]; + const defaultPythonVersion = "3.9"; + const supportedPythonVersions = ["3.9", "3.10", "3.11", "3.12"]; const supportedAdapters = ["bigquery"]; // if PR, generate matrix based on files changed and PR labels diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 43ac4ecb3..a9179f9ce 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -33,6 +33,7 @@ on: # all PRs, important to note that `pull_request_target` workflows # will run in the context of the target branch of a PR pull_request_target: + types: [opened, reopened, synchronize, labeled] # manual trigger workflow_dispatch: inputs: @@ -280,10 +281,10 @@ jobs: persist-credentials: false ref: ${{ github.event.pull_request.head.sha }} - - name: Set up Python 3.8 + - name: Set up Python 3.9 uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.9" - name: Install python dependencies run: | diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d04b4307f..2b0ce2c25 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -50,7 +50,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.8' + python-version: '3.9' - name: Install python dependencies run: | @@ -70,7 +70,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.9', '3.10', '3.11', '3.12'] env: TOXENV: "unit" @@ -127,7 +127,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.8' + python-version: '3.9' - name: Install python dependencies run: | @@ -175,7 +175,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-12, windows-latest] - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.9', '3.10', '3.11', '3.12'] steps: - name: Set up Python ${{ matrix.python-version }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3d0b98d45..16760bf07 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,6 @@ repos: - id: black args: - --line-length=99 - - --target-version=py38 - --target-version=py39 - --target-version=py310 - --target-version=py311 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1af648741..bef8d67da 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,7 +67,7 @@ $EDITOR test.env There are a few methods for running tests locally. #### `tox` -`tox` takes care of managing Python virtualenvs and installing dependencies in order to run tests. You can also run tests in parallel, for example you can run unit tests for Python 3.8, Python 3.9, Python 3.10, and Python 3.11 in parallel with `tox -p`. Also, you can run unit tests for specific python versions with `tox -e py38`. The configuration of these tests are located in `tox.ini`. +`tox` takes care of managing Python virtualenvs and installing dependencies in order to run tests. You can also run tests in parallel, for example you can run unit tests for Python 3.9, Python 3.10, and Python 3.11 in parallel with `tox -p`. Also, you can run unit tests for specific python versions with `tox -e py39`. The configuration of these tests are located in `tox.ini`. #### `pytest` Finally, you can also run a specific test or group of tests using `pytest` directly. With a Python virtualenv active and dev dependencies installed you can do things like: diff --git a/dev-requirements.txt b/dev-requirements.txt index 34169172a..2c0134110 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -6,8 +6,7 @@ git+https://github.com/dbt-labs/dbt-core.git#egg=dbt-core&subdirectory=core # dev ddtrace==2.3.0 -pre-commit~=3.7.0;python_version>="3.9" -pre-commit~=3.5.0;python_version<"3.9" +pre-commit~=3.7.0 pytest~=7.4 pytest-csv~=3.0 pytest-dotenv~=0.5.2 diff --git a/docker/Dockerfile b/docker/Dockerfile index 3b9431fd1..bda507dc5 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,7 +1,7 @@ # this image gets published to GHCR for production use ARG py_version=3.11.2 -FROM python:$py_version-slim-bullseye as base +FROM python:$py_version-slim-bullseye AS base RUN apt-get update \ && apt-get dist-upgrade -y \ @@ -25,7 +25,7 @@ ENV LANG=C.UTF-8 RUN python -m pip install --upgrade "pip==24.0" "setuptools==69.2.0" "wheel==0.43.0" --no-cache-dir -FROM base as dbt-bigquery +FROM base AS dbt-bigquery ARG commit_ref=main diff --git a/docker/dev.Dockerfile b/docker/dev.Dockerfile index 2afad0a95..f122f5343 100644 --- a/docker/dev.Dockerfile +++ b/docker/dev.Dockerfile @@ -1,43 +1,43 @@ # this image does not get published, it is intended for local development only, see `Makefile` for usage -FROM ubuntu:24.04 as base +FROM ubuntu:24.04 AS base # prevent python installation from asking for time zone region ARG DEBIAN_FRONTEND=noninteractive # add python repository RUN apt-get update \ - && apt-get install -y software-properties-common=0.99.22.9 \ - && add-apt-repository -y ppa:deadsnakes/ppa \ - && apt-get clean \ - && rm -rf \ - /var/lib/apt/lists/* \ - /tmp/* \ - /var/tmp/* + && apt-get install -y software-properties-common=0.99.48 \ + && add-apt-repository -y ppa:deadsnakes/ppa \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* # install python RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - build-essential=12.9ubuntu3 \ - git-all=1:2.34.1-1ubuntu1.10 \ - python3.8=3.8.19-1+jammy1 \ - python3.8-dev=3.8.19-1+jammy1 \ - python3.8-distutils=3.8.19-1+jammy1 \ - python3.8-venv=3.8.19-1+jammy1 \ - python3-pip=22.0.2+dfsg-1ubuntu0.4 \ - python3-wheel=0.37.1-2ubuntu0.22.04.1 \ - && apt-get clean \ - && rm -rf \ - /var/lib/apt/lists/* \ - /tmp/* \ - /var/tmp/* + && apt-get install -y --no-install-recommends \ + build-essential=12.10ubuntu1 \ + git-all=1:2.43.0-1ubuntu7.1 \ + python3.9=3.9.20-1+noble1 \ + python3.9-dev=3.9.20-1+noble1 \ + python3.9-distutils=3.9.20-1+noble1 \ + python3.9-venv=3.9.20-1+noble1 \ + python3-pip=24.0+dfsg-1ubuntu1 \ + python3-wheel=0.42.0-2 \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* # update the default system interpreter to the newly installed version -RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 +RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1 -FROM base as dbt-bigquery-dev +FROM base AS dbt-bigquery-dev -HEALTHCHECK CMD python3 --version || exit 1 +HEALTHCHECK CMD python --version || exit 1 # send stdout/stderr to terminal ENV PYTHONUNBUFFERED=1 diff --git a/setup.py b/setup.py index ab89a3c39..79f6025ea 100644 --- a/setup.py +++ b/setup.py @@ -2,9 +2,9 @@ import sys # require a supported version of Python -if sys.version_info < (3, 8): +if sys.version_info < (3, 9): print("Error: dbt does not support this version of Python.") - print("Please upgrade to Python 3.8 or higher.") + print("Please upgrade to Python 3.9 or higher.") sys.exit(1) try: @@ -69,11 +69,10 @@ def _dbt_bigquery_version() -> str: "Operating System :: Microsoft :: Windows", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: Linux", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", ], - python_requires=">=3.8", + python_requires=">=3.9", ) diff --git a/tox.ini b/tox.ini index b388dc5b3..240d85e34 100644 --- a/tox.ini +++ b/tox.ini @@ -1,8 +1,8 @@ [tox] skipsdist = True -envlist = py38,py39,py310,py311,py312 +envlist = py39,py310,py311,py312 -[testenv:{unit,py38,py39,py310,py311,py312,py}] +[testenv:{unit,py39,py310,py311,py312,py}] description = unit testing skip_install = true passenv = @@ -13,7 +13,7 @@ deps = -rdev-requirements.txt -e. -[testenv:{integration,py38,py39,py310,py311,py312,py}-{bigquery}] +[testenv:{integration,py39,py310,py311,py312,py}-{bigquery}] description = adapter plugin integration testing skip_install = true passenv = @@ -33,7 +33,7 @@ deps = -rdev-requirements.txt . -[testenv:{python-tests,py38,py39,py310,py311,py312,py}] +[testenv:{python-tests,py39,py310,py311,py312,py}] description = python integration testing skip_install = true passenv = From 0c96c9575452ff33e15f8bdb53d1bde9be55637c Mon Sep 17 00:00:00 2001 From: leahwicz <60146280+leahwicz@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:26:08 -0400 Subject: [PATCH 6/8] Isolating distribution testing (#1346) Co-authored-by: Mike Alfare <13974384+mikealfare@users.noreply.github.com> --- .../Under the Hood-20240910-212052.yaml | 6 ++++++ .github/workflows/main.yml | 19 ++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 .changes/unreleased/Under the Hood-20240910-212052.yaml diff --git a/.changes/unreleased/Under the Hood-20240910-212052.yaml b/.changes/unreleased/Under the Hood-20240910-212052.yaml new file mode 100644 index 000000000..3e4885dcd --- /dev/null +++ b/.changes/unreleased/Under the Hood-20240910-212052.yaml @@ -0,0 +1,6 @@ +kind: Under the Hood +body: Isolating distribution testing +time: 2024-09-10T21:20:52.574204-04:00 +custom: + Author: leahwicz + Issue: "1290" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2b0ce2c25..0e4d476b7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -163,7 +163,7 @@ jobs: overwrite: true test-build: - name: verify packages / python ${{ matrix.python-version }} / ${{ matrix.os }} + name: verify packages / python ${{ matrix.python-version }} / ${{ matrix.os }} / ${{ matrix.dist-type }} if: needs.build.outputs.is_alpha == 0 @@ -182,11 +182,13 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + - name: Install python dependencies run: | python -m pip install --user --upgrade pip - python -m pip install --upgrade wheel setuptools twine check-wheel-contents + python -m pip install --upgrade wheel python -m pip --version + - uses: actions/download-artifact@v4 with: name: dist @@ -195,15 +197,10 @@ jobs: - name: Show distributions run: ls -lh dist/ - - name: Install wheel distributions - run: | - find ./dist/*.whl -maxdepth 1 -type f | xargs python -m pip install --force-reinstall --find-links=dist/ - - name: Check wheel distributions + - name: Install ${{ matrix.dist-type }} distributions run: | - python -c "import dbt.adapters.bigquery" - - name: Install source distributions - run: | - find ./dist/*.gz -maxdepth 1 -type f | xargs python -m pip install --force-reinstall --find-links=dist/ - - name: Check source distributions + find ./dist/*.${{ matrix.dist-type }} -maxdepth 1 -type f | xargs python -m pip install --force-reinstall --find-links=dist/ + + - name: Check ${{ matrix.dist-type }} distributions run: | python -c "import dbt.adapters.bigquery" From 4e24d6a8c78ee7f5b74f6edd7d7bb63fce28296c Mon Sep 17 00:00:00 2001 From: Mike Alfare <13974384+mikealfare@users.noreply.github.com> Date: Fri, 18 Oct 2024 08:52:08 -0400 Subject: [PATCH 7/8] add matrix entry back that was inadvertently removed during a sync with main (#1375) --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0e4d476b7..6bfed5df6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -176,6 +176,7 @@ jobs: matrix: os: [ubuntu-latest, macos-12, windows-latest] python-version: ['3.9', '3.10', '3.11', '3.12'] + dist-type: ["whl", "gz"] steps: - name: Set up Python ${{ matrix.python-version }} From d4be89a3840c400a963c8d24e82cbbac608290a2 Mon Sep 17 00:00:00 2001 From: Yasuhisa Yoshida Date: Sat, 19 Oct 2024 04:34:44 +0900 Subject: [PATCH 8/8] Replace 'integration' with 'functional' in CONTRIBUTING.md (#1357) Co-authored-by: Mike Alfare <13974384+mikealfare@users.noreply.github.com> --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bef8d67da..f915af713 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -54,7 +54,7 @@ To confirm you have the correct version of `dbt-core` installed please run `dbt ### Initial Setup -`dbt-bigquery` contains [unit](https://github.com/dbt-labs/dbt-bigquery/tree/main/tests/unit) and [integration](https://github.com/dbt-labs/dbt-bigquery/tree/main/tests/integration) tests. Integration tests require testing against an actual BigQuery warehouse. We have CI set up to test against a BigQuery warehouse. In order to run integration tests locally, you will need a `test.env` file in the root of the repository that contains credentials for BigQuery. +`dbt-bigquery` contains [unit](https://github.com/dbt-labs/dbt-bigquery/tree/main/tests/unit) and [functional](https://github.com/dbt-labs/dbt-bigquery/tree/main/tests/functional) tests. functional tests require testing against an actual BigQuery warehouse. We have CI set up to test against a BigQuery warehouse. In order to run functional tests locally, you will need a `test.env` file in the root of the repository that contains credentials for BigQuery. Note: This `test.env` file is git-ignored, but please be _extra_ careful to never check in credentials or other sensitive information when developing. To create your `test.env` file, copy the provided example file, then supply your relevant credentials. @@ -104,6 +104,6 @@ You don't need to worry about which `dbt-bigquery` version your change will go i dbt Labs provides a CI environment to test changes to the `dbt-bigquery` adapter and periodic checks against the development version of `dbt-core` through Github Actions. -A `dbt-bigquery` maintainer will review your PR. They may suggest code revision for style or clarity, or request that you add unit or integration test(s). These are good things! We believe that, with a little bit of help, anyone can contribute high-quality code. +A `dbt-bigquery` maintainer will review your PR. They may suggest code revision for style or clarity, or request that you add unit or functional test(s). These are good things! We believe that, with a little bit of help, anyone can contribute high-quality code. Once all tests are passing, you have updated the changelog to reflect and tag your issue/pr for reference with a small description of the change, and your PR has been approved, a `dbt-bigquery` maintainer will merge your changes into the active development branch. And that's it! Happy developing :tada: