|
73 | 73 | {% endmacro %} |
74 | 74 |
|
75 | 75 |
|
76 | | -{% macro oracle_incremental_upsert(tmp_relation, target_relation, dest_columns, unique_key=none, statement_name="main") %} |
| 76 | +{% macro oracle__get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %} |
| 77 | + {%- set default_cols = dest_columns | map(attribute='name') | list -%} |
| 78 | +
|
| 79 | + {%- if merge_update_columns and merge_exclude_columns -%} |
| 80 | + {{ exceptions.raise_compiler_error( |
| 81 | + 'Model cannot specify merge_update_columns and merge_exclude_columns. Please update model to use only one config' |
| 82 | + )}} |
| 83 | + {%- elif merge_update_columns -%} |
| 84 | + {%- set update_columns = merge_update_columns -%} |
| 85 | + {%- elif merge_exclude_columns -%} |
| 86 | + {%- set update_columns = [] -%} |
| 87 | + {%- for column in dest_columns -%} |
| 88 | + {% if column.column | lower not in merge_exclude_columns | map("lower") | list %} |
| 89 | + {%- do update_columns.append(column.name) -%} |
| 90 | + {% endif %} |
| 91 | + {%- endfor -%} |
| 92 | + {%- else -%} |
| 93 | + {%- set update_columns = default_cols -%} |
| 94 | + {%- endif -%} |
| 95 | +
|
| 96 | + {%- set quoted_update_columns = [] -%} |
| 97 | + {% for col in update_columns %} |
| 98 | + {% do quoted_update_columns.append(adapter.check_and_quote_identifier(col, model.columns)) %} |
| 99 | + {% endfor %} |
| 100 | + {{ return(quoted_update_columns)}} |
| 101 | +{% endmacro %} |
| 102 | +
|
| 103 | +
|
| 104 | +{% macro oracle__get_incremental_append_sql(arg_dict) %} |
| 105 | + {%- set dest_columns = args_dict["dest_columns"] -%} |
| 106 | + {%- set temp_relation = args_dict["temp_relation"] -%} |
| 107 | + {%- set target_relation = args_dict["target_relation"] -%} |
| 108 | + {%- set dest_column_names = dest_columns | map(attribute='name') | list -%} |
| 109 | + {%- set dest_cols_csv = get_quoted_column_csv(model, dest_column_names) -%} |
| 110 | + INSERT INTO {{ target_relation }} ({{ dest_cols_csv }}) |
| 111 | + ( |
| 112 | + SELECT {{ dest_cols_csv }} |
| 113 | + FROM {{ temp_relation }} |
| 114 | + ) |
| 115 | +{% endmacro %} |
| 116 | +
|
| 117 | +{% macro oracle__get_incremental_merge_sql(args_dict) %} |
| 118 | + {%- set dest_columns = args_dict["dest_columns"] -%} |
| 119 | + {%- set temp_relation = args_dict["temp_relation"] -%} |
| 120 | + {%- set target_relation = args_dict["target_relation"] -%} |
| 121 | + {%- set unique_key = args_dict["unique_key"] -%} |
77 | 122 | {%- set dest_column_names = dest_columns | map(attribute='name') | list -%} |
78 | 123 | {%- set dest_cols_csv = get_quoted_column_csv(model, dest_column_names) -%} |
79 | | - {%- set update_columns = oracle_check_and_quote_column_names_for_incremental_merge(dest_column_names) -%} |
| 124 | + {%- set merge_update_columns = config.get('merge_update_columns') -%} |
| 125 | + {%- set merge_exclude_columns = config.get('merge_exclude_columns') -%} |
| 126 | + {%- set update_columns = get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) -%} |
80 | 127 | {%- if unique_key -%} |
81 | 128 | {%- set unique_key_result = oracle_check_and_quote_unique_key_for_incremental_merge(unique_key) -%} |
82 | 129 | {%- set unique_key_list = unique_key_result['unique_key_list'] -%} |
83 | 130 | {%- set unique_key_merge_predicates = unique_key_result['unique_key_merge_predicates'] -%} |
84 | 131 | merge into {{ target_relation }} target |
85 | | - using {{ tmp_relation }} temp |
| 132 | + using {{ temp_relation }} temp |
86 | 133 | on ({{ unique_key_merge_predicates | join(' AND ') }}) |
87 | 134 | when matched then |
88 | 135 | update set |
|
100 | 147 | insert into {{ target_relation }} ({{ dest_cols_csv }}) |
101 | 148 | ( |
102 | 149 | select {{ dest_cols_csv }} |
103 | | - from {{ tmp_relation }} |
| 150 | + from {{ temp_relation }} |
104 | 151 | ) |
105 | 152 | {%- endif -%} |
106 | | -{%- endmacro %} |
| 153 | +{% endmacro %} |
| 154 | +
|
| 155 | +{% macro oracle__get_incremental_default_sql(arg_dict) %} |
| 156 | + {% do return(get_incremental_merge_sql(arg_dict)) %} |
| 157 | +{% endmacro %} |
| 158 | +
|
0 commit comments