From e85ecb8cda7069205fdb050e10fa17d95fff337a Mon Sep 17 00:00:00 2001 From: kiwamizamurai <24860100+kiwamizamurai@users.noreply.github.com> Date: Thu, 14 Mar 2024 19:02:44 +0900 Subject: [PATCH 1/5] fix: alter table description without full_refresh --- dbt/adapters/bigquery/impl.py | 8 ++++++++ dbt/include/bigquery/macros/adapters.sql | 2 ++ 2 files changed, 10 insertions(+) diff --git a/dbt/adapters/bigquery/impl.py b/dbt/adapters/bigquery/impl.py index 2df35bc65..20b54e06e 100644 --- a/dbt/adapters/bigquery/impl.py +++ b/dbt/adapters/bigquery/impl.py @@ -158,6 +158,14 @@ def drop_relation(self, relation: BigQueryRelation) -> None: # mimic "drop if exists" functionality that's ubiquitous in most sql implementations conn.handle.delete_table(table_ref, not_found_ok=True) + def alter_table_comment(self, relation: BigQueryRelation, description) -> None: + conn = self.connections.get_thread_connection() + client = conn.handle + table_ref = self.get_table_ref_from_relation(relation) + table = client.get_table(table_ref) + table.description = description + client.update_table(table, ["description"]) + def truncate_relation(self, relation: BigQueryRelation) -> None: raise dbt_common.exceptions.base.NotImplementedError( "`truncate` is not implemented for this adapter!" diff --git a/dbt/include/bigquery/macros/adapters.sql b/dbt/include/bigquery/macros/adapters.sql index f166e5d05..a0ea38ef4 100644 --- a/dbt/include/bigquery/macros/adapters.sql +++ b/dbt/include/bigquery/macros/adapters.sql @@ -49,6 +49,8 @@ {%- set old_relation = adapter.get_relation(database=relation.database, schema=relation.schema, identifier=relation.identifier) -%} {%- if (old_relation.is_table and (should_full_refresh())) -%} {% do adapter.drop_relation(relation) %} + {%- else -%} + {% do adapter.alter_table_comment(relation, model.description) %} {%- endif -%} {{ py_write_table(compiled_code=compiled_code, target_relation=relation.quote(database=False, schema=False, identifier=False)) }} {%- else -%} From 13f17015adbdc2dad4078e01f8f5cf53ad48f693 Mon Sep 17 00:00:00 2001 From: kiwamizamurai <24860100+kiwamizamurai@users.noreply.github.com> Date: Tue, 26 Mar 2024 20:25:31 +0900 Subject: [PATCH 2/5] refactor: modify to use existing implementation for alter table description --- dbt/adapters/bigquery/impl.py | 13 ++----------- dbt/include/bigquery/macros/adapters.sql | 3 +-- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/dbt/adapters/bigquery/impl.py b/dbt/adapters/bigquery/impl.py index 20b54e06e..a736a4f35 100644 --- a/dbt/adapters/bigquery/impl.py +++ b/dbt/adapters/bigquery/impl.py @@ -158,14 +158,6 @@ def drop_relation(self, relation: BigQueryRelation) -> None: # mimic "drop if exists" functionality that's ubiquitous in most sql implementations conn.handle.delete_table(table_ref, not_found_ok=True) - def alter_table_comment(self, relation: BigQueryRelation, description) -> None: - conn = self.connections.get_thread_connection() - client = conn.handle - table_ref = self.get_table_ref_from_relation(relation) - table = client.get_table(table_ref) - table.description = description - client.update_table(table, ["description"]) - def truncate_relation(self, relation: BigQueryRelation) -> None: raise dbt_common.exceptions.base.NotImplementedError( "`truncate` is not implemented for this adapter!" @@ -633,12 +625,11 @@ def update_columns(self, relation, columns): @available.parse_none def update_table_description( - self, database: str, schema: str, identifier: str, description: str + self, relation: BigQueryRelation, description: str ): conn = self.connections.get_thread_connection() client = conn.handle - - table_ref = self.connections.table_ref(database, schema, identifier) + table_ref = self.get_table_ref_from_relation(relation) table = client.get_table(table_ref) table.description = description client.update_table(table, ["description"]) diff --git a/dbt/include/bigquery/macros/adapters.sql b/dbt/include/bigquery/macros/adapters.sql index a0ea38ef4..18fb7d049 100644 --- a/dbt/include/bigquery/macros/adapters.sql +++ b/dbt/include/bigquery/macros/adapters.sql @@ -49,8 +49,6 @@ {%- set old_relation = adapter.get_relation(database=relation.database, schema=relation.schema, identifier=relation.identifier) -%} {%- if (old_relation.is_table and (should_full_refresh())) -%} {% do adapter.drop_relation(relation) %} - {%- else -%} - {% do adapter.alter_table_comment(relation, model.description) %} {%- endif -%} {{ py_write_table(compiled_code=compiled_code, target_relation=relation.quote(database=False, schema=False, identifier=False)) }} {%- else -%} @@ -101,6 +99,7 @@ {% macro bigquery__persist_docs(relation, model, for_relation, for_columns) -%} {% if for_columns and config.persist_column_docs() and model.columns %} {% do alter_column_comment(relation, model.columns) %} + {% do adapter.update_table_description(relation, model.description) %} {% endif %} {% endmacro %} From 26330aa145af01d114177f27511a62ede2fc9468 Mon Sep 17 00:00:00 2001 From: kiwamizamurai <24860100+kiwamizamurai@users.noreply.github.com> Date: Tue, 26 Mar 2024 20:30:43 +0900 Subject: [PATCH 3/5] add: changelog by changie --- .changes/unreleased/Features-20240326-203007.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changes/unreleased/Features-20240326-203007.yaml diff --git a/.changes/unreleased/Features-20240326-203007.yaml b/.changes/unreleased/Features-20240326-203007.yaml new file mode 100644 index 000000000..494cfd07a --- /dev/null +++ b/.changes/unreleased/Features-20240326-203007.yaml @@ -0,0 +1,6 @@ +kind: Features +body: Support the updating of incremental model description after initial creation +time: 2024-03-26T20:30:07.092671+09:00 +custom: + Author: kiwamizamurai + Issue: "1138" From ac75ff21a4432627aa218a810af8e7383101daa3 Mon Sep 17 00:00:00 2001 From: kiwamizamurai <24860100+kiwamizamurai@users.noreply.github.com> Date: Fri, 29 Mar 2024 10:03:48 +0900 Subject: [PATCH 4/5] fix: update_table_description like the seed materialization --- dbt/adapters/bigquery/impl.py | 5 +++-- dbt/include/bigquery/macros/adapters.sql | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dbt/adapters/bigquery/impl.py b/dbt/adapters/bigquery/impl.py index a736a4f35..2df35bc65 100644 --- a/dbt/adapters/bigquery/impl.py +++ b/dbt/adapters/bigquery/impl.py @@ -625,11 +625,12 @@ def update_columns(self, relation, columns): @available.parse_none def update_table_description( - self, relation: BigQueryRelation, description: str + self, database: str, schema: str, identifier: str, description: str ): conn = self.connections.get_thread_connection() client = conn.handle - table_ref = self.get_table_ref_from_relation(relation) + + table_ref = self.connections.table_ref(database, schema, identifier) table = client.get_table(table_ref) table.description = description client.update_table(table, ["description"]) diff --git a/dbt/include/bigquery/macros/adapters.sql b/dbt/include/bigquery/macros/adapters.sql index 18fb7d049..ce69fc9f3 100644 --- a/dbt/include/bigquery/macros/adapters.sql +++ b/dbt/include/bigquery/macros/adapters.sql @@ -99,7 +99,9 @@ {% macro bigquery__persist_docs(relation, model, for_relation, for_columns) -%} {% if for_columns and config.persist_column_docs() and model.columns %} {% do alter_column_comment(relation, model.columns) %} - {% do adapter.update_table_description(relation, model.description) %} + {% endif %} + {% if config.persist_relation_docs() and 'description' in model %} + {{ adapter.update_table_description(model['database'], model['schema'], model['alias'], model['description']) }} {% endif %} {% endmacro %} From 8282d00286e86531d4a75b210220efa64fa74168 Mon Sep 17 00:00:00 2001 From: kiwamizamurai <24860100+kiwamizamurai@users.noreply.github.com> Date: Fri, 3 May 2024 12:01:52 +0900 Subject: [PATCH 5/5] Update dbt/include/bigquery/macros/adapters.sql Co-authored-by: Colin Rogers <111200756+colin-rogers-dbt@users.noreply.github.com> --- dbt/include/bigquery/macros/adapters.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbt/include/bigquery/macros/adapters.sql b/dbt/include/bigquery/macros/adapters.sql index ce69fc9f3..91653db72 100644 --- a/dbt/include/bigquery/macros/adapters.sql +++ b/dbt/include/bigquery/macros/adapters.sql @@ -100,7 +100,7 @@ {% if for_columns and config.persist_column_docs() and model.columns %} {% do alter_column_comment(relation, model.columns) %} {% endif %} - {% if config.persist_relation_docs() and 'description' in model %} + {% if config.persist_relation_docs() and model.description %} {{ adapter.update_table_description(model['database'], model['schema'], model['alias'], model['description']) }} {% endif %} {% endmacro %}