Skip to content

Commit 4b4458b

Browse files
committed
base incremental predicate impl
1 parent 7502c8b commit 4b4458b

File tree

1 file changed

+41
-37
lines changed
  • dbt/include/sqlserver/macros/materializations/models/incremental

1 file changed

+41
-37
lines changed

dbt/include/sqlserver/macros/materializations/models/incremental/merge.sql

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,49 +5,53 @@
55
https://getdbt.slack.com/archives/C50NEBJGG/p1636045535056600
66
#}
77

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) }};
1010
{% endmacro %}
1111

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 %}
1815

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
2726
{% for key in unique_key %}
2827
{{ source }}.{{ key }} = {{ target }}.{{ key }}
2928
{{ "and " if not loop.last }}
3029
{% 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 %}
4230

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+
)
5357
{% endmacro %}

0 commit comments

Comments
 (0)