From 40d3e55d617f26493c554488a03697df2eb27fa1 Mon Sep 17 00:00:00 2001 From: Mike Alfare Date: Tue, 11 Jun 2024 17:03:31 -0400 Subject: [PATCH] implement feedback from #1011 --- dbt/adapters/bigquery/connections.py | 2 +- dbt/adapters/bigquery/relation.py | 8 ++++---- dbt/adapters/bigquery/relation_configs/_options.py | 10 ++++++---- .../test_materialized_view_changes.py | 2 ++ 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/dbt/adapters/bigquery/connections.py b/dbt/adapters/bigquery/connections.py index 4a3feae48..856b39bb6 100644 --- a/dbt/adapters/bigquery/connections.py +++ b/dbt/adapters/bigquery/connections.py @@ -320,7 +320,7 @@ def format_rows_number(self, rows_number): return f"{rows_number:3.1f}{unit}".strip() @classmethod - def get_google_credentials(cls, profile_credentials) -> GoogleCredentials: + def get_google_credentials(cls, profile_credentials) -> GoogleCredentials.Credentials: method = profile_credentials.method creds = GoogleServiceAccountCredentials.Credentials diff --git a/dbt/adapters/bigquery/relation.py b/dbt/adapters/bigquery/relation.py index 99aa2036c..34556ead1 100644 --- a/dbt/adapters/bigquery/relation.py +++ b/dbt/adapters/bigquery/relation.py @@ -90,14 +90,14 @@ def materialized_view_config_changeset( new_materialized_view = cls.materialized_view_from_relation_config(relation_config) if new_materialized_view.options != existing_materialized_view.options: - # allow_non_incremental_definition cannot be changed via ALTER, must recreate + # allow_non_incremental_definition cannot be changed via an ALTER statement if ( new_materialized_view.options.allow_non_incremental_definition - == existing_materialized_view.options.allow_non_incremental_definition + != existing_materialized_view.options.allow_non_incremental_definition ): - action = RelationConfigChangeAction.alter - else: action = RelationConfigChangeAction.create + else: + action = RelationConfigChangeAction.alter config_change_collection.options = BigQueryOptionsConfigChange( action=action, context=new_materialized_view.options, diff --git a/dbt/adapters/bigquery/relation_configs/_options.py b/dbt/adapters/bigquery/relation_configs/_options.py index 2f51acedf..6c1bdca96 100644 --- a/dbt/adapters/bigquery/relation_configs/_options.py +++ b/dbt/adapters/bigquery/relation_configs/_options.py @@ -23,7 +23,7 @@ class BigQueryOptionsConfig(BigQueryBaseRelationConfig): refresh_interval_minutes: Optional[float] = 30 expiration_timestamp: Optional[datetime] = None max_staleness: Optional[str] = None - allow_non_incremental_definition: Optional[bool] = False + allow_non_incremental_definition: Optional[bool] = None kms_key_name: Optional[str] = None description: Optional[str] = None labels: Optional[Dict[str, str]] = None @@ -146,10 +146,12 @@ def parse_bq_table(cls, table: BigQueryTable) -> Dict[str, Any]: "expiration_timestamp": table.expires, "max_staleness": ( f"INTERVAL '{table._properties.get('maxStaleness')}' YEAR TO SECOND" - if table._properties.get('maxStaleness') + if table._properties.get("maxStaleness") else None ), - "allow_non_incremental_definition": table._properties.get("materializedView", {}).get("allowNonIncrementalDefinition"), + "allow_non_incremental_definition": table._properties.get("materializedView", {}).get( + "allowNonIncrementalDefinition" + ), "description": table.description, } @@ -168,4 +170,4 @@ class BigQueryOptionsConfigChange(RelationConfigChange): @property def requires_full_refresh(self) -> bool: - return self.action != RelationConfigChangeAction.alter + return self.action == RelationConfigChangeAction.create diff --git a/tests/functional/adapter/materialized_view_tests/test_materialized_view_changes.py b/tests/functional/adapter/materialized_view_tests/test_materialized_view_changes.py index c821c68fc..7146e92c0 100644 --- a/tests/functional/adapter/materialized_view_tests/test_materialized_view_changes.py +++ b/tests/functional/adapter/materialized_view_tests/test_materialized_view_changes.py @@ -19,6 +19,8 @@ def check_start_state(project, materialized_view): assert isinstance(results, BigQueryMaterializedViewConfig) assert results.options.enable_refresh is True assert results.options.refresh_interval_minutes == 60 + assert results.options.max_staleness == "INTERVAL 45 MINUTE" + assert results.options.allow_non_incremental_definition is True assert results.partition.field == "record_valid_date" assert results.partition.data_type == "datetime" assert results.partition.granularity == "day"