{% macro get_insert_overwrite_sql(source_relation, target_relation) %} {%- set dest_columns = adapter.get_columns_in_relation(source_relation) -%} {%- set dest_cols_csv = dest_columns | map(attribute='name') | join(', ') -%} set hive.exec.dynamic.partition.mode=nonstrict dbt_next_query insert overwrite table {{ target_relation }} {{ partition_cols(label="partition") }} select {{dest_cols_csv}} from {{ source_relation }} {% endmacro %} {% macro get_insert_into_sql(source_relation, target_relation) %} {%- set dest_columns = adapter.get_columns_in_relation(target_relation) -%} {%- set dest_cols_csv = dest_columns | map(attribute='name') | join(', ') -%} insert into table {{ target_relation }} select {{dest_cols_csv}} from {{ source_relation }} {% endmacro %} {% macro dbt_glue_get_incremental_sql(strategy, source, target, unique_key) %} {%- if strategy == 'append' -%} {#-- insert new records into existing table, without updating or overwriting #} {{ get_insert_into_sql(source, target) }} {%- elif strategy == 'insert_overwrite' -%} {#-- insert statements don't like CTEs, so support them via a temp view #} {{ get_insert_overwrite_sql(source, target) }} {%- elif strategy == 'merge' -%} {#-- merge all columns with databricks delta - schema changes are handled for us #} {{ get_merge_sql(target, source, unique_key, dest_columns=none, predicates=none) }} {%- else -%} {% set no_sql_for_strategy_msg -%} No known SQL for the incremental strategy provided: {{ strategy }} {%- endset %} {%- do exceptions.raise_compiler_error(no_sql_for_strategy_msg) -%} {%- endif -%} {% endmacro %}