|
5 | 5 | https://getdbt.slack.com/archives/C50NEBJGG/p1636045535056600
|
6 | 6 | #}
|
7 | 7 |
|
8 |
| -{% macro sqlserver__get_merge_sql(target, source, unique_key, dest_columns, predicates) %} |
9 |
| - {{ default__get_merge_sql(target, source, unique_key, dest_columns, predicates) }}; |
| 8 | +{% macro sqlserver__get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) %} |
| 9 | + {{ default__get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) }}; |
10 | 10 | {% endmacro %}
|
11 | 11 |
|
12 |
| -{% macro sqlserver__get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) %} |
13 |
| - {% if incremental_predicates %} |
14 |
| - {{ exceptions.raise_not_implemented('incremental_predicates are not implemented in dbt-sqlserver') }} |
15 |
| - {% endif %} |
16 |
| - |
17 |
| - {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute="name")) -%} |
| 12 | +{% macro sqlserver__get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header) %} |
| 13 | + {{ default__get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header) }}; |
| 14 | +{% endmacro %} |
18 | 15 |
|
19 |
| - {% if unique_key %} |
20 |
| - {% if unique_key is sequence and unique_key is not string %} |
21 |
| - delete from {{ target }} |
22 |
| - where exists ( |
23 |
| - SELECT NULL |
24 |
| - FROM |
25 |
| - {{ source }} |
26 |
| - WHERE |
| 16 | +{% macro sqlserver__get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) %} |
| 17 | + {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute="name")) -%} |
| 18 | + |
| 19 | + {% if unique_key %} |
| 20 | + {% if unique_key is sequence and unique_key is not string %} |
| 21 | + delete from {{ target }} |
| 22 | + where exists ( |
| 23 | + select null |
| 24 | + from {{ source }} |
| 25 | + where |
27 | 26 | {% for key in unique_key %}
|
28 | 27 | {{ source }}.{{ key }} = {{ target }}.{{ key }}
|
29 | 28 | {{ "and " if not loop.last }}
|
30 | 29 | {% endfor %}
|
31 |
| - ); |
32 |
| - {% else %} |
33 |
| - delete from {{ target }} |
34 |
| - where ( |
35 |
| - {{ unique_key }}) in ( |
36 |
| - select ({{ unique_key }}) |
37 |
| - from {{ source }} |
38 |
| - ); |
39 |
| - |
40 |
| - {% endif %} |
41 |
| - {% endif %} |
42 | 30 |
|
43 |
| - insert into {{ target }} ({{ dest_cols_csv }}) |
44 |
| - ( |
45 |
| - select {{ dest_cols_csv }} |
46 |
| - from {{ source }} |
47 |
| - ) |
48 |
| - |
49 |
| -{% endmacro %} |
50 |
| - |
51 |
| -{% macro sqlserver__get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header) %} |
52 |
| - {{ default__get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header) }}; |
| 31 | + ) |
| 32 | + {% if incremental_predicates %} |
| 33 | + {% for predicate in incremental_predicates %} |
| 34 | + and {{ predicate }} |
| 35 | + {% endfor %} |
| 36 | + {% endif %}; |
| 37 | + {% else %} |
| 38 | + delete from {{ target }} |
| 39 | + where ( |
| 40 | + {{ unique_key }}) in ( |
| 41 | + select ({{ unique_key }}) |
| 42 | + from {{ source }} |
| 43 | + ) |
| 44 | + {%- if incremental_predicates %} |
| 45 | + {% for predicate in incremental_predicates %} |
| 46 | + and {{ predicate }} |
| 47 | + {% endfor %} |
| 48 | + {%- endif -%}; |
| 49 | + {% endif %} |
| 50 | + {% endif %} |
| 51 | + |
| 52 | + insert into {{ target }} ({{ dest_cols_csv }}) |
| 53 | + ( |
| 54 | + select {{ dest_cols_csv }} |
| 55 | + from {{ source }} |
| 56 | + ) |
53 | 57 | {% endmacro %}
|
0 commit comments