52 lines
1.7 KiB
MySQL
52 lines
1.7 KiB
MySQL
|
{#
|
||
|
This overrides the behavior of the macro `should_full_refresh` so full refresh are triggered if:
|
||
|
- the dbt cli is run with --full-refresh flag or the model is configured explicitly to full_refresh
|
||
|
- the column _airbyte_ab_id does not exists in the normalized tables and make sure it is well populated.
|
||
|
#}
|
||
|
|
||
|
{%- macro need_full_refresh(col_ab_id, target_table=this) -%}
|
||
|
{%- if not execute -%}
|
||
|
{{ return(false) }}
|
||
|
{%- endif -%}
|
||
|
{%- set found_column = [] %}
|
||
|
{%- set cols = adapter.get_columns_in_relation(target_table) -%}
|
||
|
{%- for col in cols -%}
|
||
|
{%- if col.column == col_ab_id -%}
|
||
|
{% do found_column.append(col.column) %}
|
||
|
{%- endif -%}
|
||
|
{%- endfor -%}
|
||
|
{%- if found_column -%}
|
||
|
{{ return(false) }}
|
||
|
{%- else -%}
|
||
|
{{ dbt_utils.log_info(target_table ~ "." ~ col_ab_id ~ " does not exist yet. The table will be created or rebuilt with dbt.full_refresh") }}
|
||
|
{{ return(true) }}
|
||
|
{%- endif -%}
|
||
|
{%- endmacro -%}
|
||
|
|
||
|
{%- macro should_full_refresh() -%}
|
||
|
{% set config_full_refresh = config.get('full_refresh') %}
|
||
|
{%- if config_full_refresh is none -%}
|
||
|
{% set config_full_refresh = flags.FULL_REFRESH %}
|
||
|
{%- endif -%}
|
||
|
{%- if not config_full_refresh -%}
|
||
|
{% set config_full_refresh = need_full_refresh(get_col_ab_id(), this) %}
|
||
|
{%- endif -%}
|
||
|
{% do return(config_full_refresh) %}
|
||
|
{%- endmacro -%}
|
||
|
|
||
|
{%- macro get_col_ab_id() -%}
|
||
|
{{ adapter.dispatch('get_col_ab_id')() }}
|
||
|
{%- endmacro -%}
|
||
|
|
||
|
{%- macro default__get_col_ab_id() -%}
|
||
|
_airbyte_ab_id
|
||
|
{%- endmacro -%}
|
||
|
|
||
|
{%- macro oracle__get_col_ab_id() -%}
|
||
|
"_AIRBYTE_AB_ID"
|
||
|
{%- endmacro -%}
|
||
|
|
||
|
{%- macro snowflake__get_col_ab_id() -%}
|
||
|
_AIRBYTE_AB_ID
|
||
|
{%- endmacro -%}
|