8
8
9
9
{%- macro default__sat(src_pk, src_hashdiff, src_payload, src_eff, src_ldts, src_source, source_model) - %}
10
10
11
+ {{- dbtvault .check_required_parameters (src_pk= src_pk, src_hashdiff= src_hashdiff, src_payload= src_payload,
12
+ src_eff= src_eff, src_ldts= src_ldts, src_source= src_source,
13
+ source_model= source_model) - }}
14
+
11
15
{%- set source_cols = dbtvault .expand_column_list (columns= [src_pk, src_hashdiff, src_payload, src_eff, src_ldts, src_source]) - %}
12
16
{%- set rank_cols = dbtvault .expand_column_list (columns= [src_pk, src_hashdiff, src_ldts]) - %}
17
+ {%- set pk_cols = dbtvault .expand_column_list (columns= [src_pk]) - %}
13
18
14
19
{%- if model .config .materialized == ' vault_insert_by_rank' %}
15
20
{%- set source_cols_with_rank = source_cols + [config .get (' rank_column' )] - %}
@@ -26,6 +31,9 @@ WITH source_data AS (
26
31
FROM {{ ref(source_model) }} AS a
27
32
{%- if model .config .materialized == ' vault_insert_by_period' %}
28
33
WHERE __PERIOD_FILTER__
34
+ AND {{ dbtvault .multikey (src_pk, condition= ' IS NOT NULL' ) }}
35
+ {% elif model .config .materialized != ' vault_insert_by_rank' and model .config .materialized != ' vault_insert_by_period' %}
36
+ WHERE {{ dbtvault .multikey (src_pk, condition= ' IS NOT NULL' ) }}
29
37
{% endif %}
30
38
{%- set source_cte = " source_data" %}
31
39
),
@@ -34,6 +42,7 @@ WITH source_data AS (
34
42
rank_col AS (
35
43
SELECT * FROM source_data
36
44
WHERE __RANK_FILTER__
45
+ AND {{ dbtvault .multikey (src_pk, condition= ' IS NOT NULL' ) }}
37
46
{%- set source_cte = " rank_col" %}
38
47
),
39
48
{% endif - %}
@@ -63,8 +72,9 @@ records_to_insert AS (
63
72
FROM {{ source_cte }} AS e
64
73
{%- if dbtvault .is_vault_insert_by_period () or dbtvault .is_vault_insert_by_rank () or is_incremental() %}
65
74
LEFT JOIN latest_records
66
- ON {{ dbtvault .prefix ([src_hashdiff], ' latest_records' , alias_target= ' target' ) }} = {{ dbtvault .prefix ([src_hashdiff], ' e' ) }}
67
- WHERE {{ dbtvault .prefix ([src_hashdiff], ' latest_records' , alias_target= ' target' ) }} IS NULL
75
+ ON {{ dbtvault .prefix ([src_pk], ' latest_records' , alias_target= ' target' ) }} = {{ dbtvault .prefix ([src_pk], ' e' ) }}
76
+ WHERE {{ dbtvault .prefix ([src_hashdiff], ' latest_records' , alias_target= ' target' ) }} != {{ dbtvault .prefix ([src_hashdiff], ' e' ) }}
77
+ OR {{ dbtvault .prefix ([src_hashdiff], ' latest_records' , alias_target= ' target' ) }} IS NULL
68
78
{%- endif %}
69
79
)
70
80
0 commit comments