diff --git a/dbt/include/bigquery/macros/adapters/columns.sql b/dbt/include/bigquery/macros/adapters/columns.sql index c540f1e2d..ab8c42945 100644 --- a/dbt/include/bigquery/macros/adapters/columns.sql +++ b/dbt/include/bigquery/macros/adapters/columns.sql @@ -2,6 +2,15 @@ {%- if select_sql_header is not none -%} {{ select_sql_header }} {%- endif -%} + {%- set contract_config = config.get('contract') -%} + {%- if contract_config.enforced and '_dbt_max_partition' in compiled_code -%} + {%- set raw_partition_by = config.get('partition_by', none) -%} + {%- set partition_by = adapter.parse_partition_by(raw_partition_by) -%} + + declare _dbt_max_partition {{ partition_by.data_type_for_partition() }} default ( + select max({{ partition_by.field }}) from {{ this }} + where {{ partition_by.field }} is not null ); + {%- endif -%} select * from ( {{ select_sql }} ) as __dbt_sbq