|
16 | 16 | {{ strategy.scd_id }} as dbt_scd_id,
|
17 | 17 | {{ strategy.updated_at }} as dbt_updated_at,
|
18 | 18 | {{ strategy.updated_at }} as dbt_valid_from,
|
19 |
| - null as dbt_valid_to |
| 19 | + cast(null as timestamp) as dbt_valid_to |
20 | 20 | from (
|
21 | 21 | {{ sql }}
|
22 | 22 | ) sbq
|
|
26 | 26 | {% macro iris__snapshot_staging_table(strategy, source_sql, target_relation) -%}
|
27 | 27 | select * from (
|
28 | 28 | select
|
29 |
| - 'insert' as dbt_change_type, |
30 |
| - source_data.* |
| 29 | + 'update' as dbt_change_type, |
| 30 | + source_data.*, |
| 31 | + snapshotted_data.dbt_scd_id |
31 | 32 |
|
32 | 33 | from (
|
33 |
| - |
34 | 34 | select
|
35 | 35 | *,
|
36 | 36 | {{ strategy.unique_key }} as dbt_unique_key,
|
37 | 37 | {{ strategy.updated_at }} as dbt_updated_at,
|
38 | 38 | {{ strategy.updated_at }} as dbt_valid_from,
|
39 |
| - null as dbt_valid_to, |
40 |
| - {{ strategy.scd_id }} as dbt_scd_id |
| 39 | + {{ strategy.updated_at }} as dbt_valid_to |
41 | 40 |
|
42 | 41 | from ( {{ source_sql }} )
|
43 | 42 |
|
44 | 43 | ) as source_data
|
45 |
| - left outer join ( |
| 44 | + join ( |
46 | 45 | select *,
|
47 | 46 | {{ strategy.unique_key }} as dbt_unique_key
|
48 | 47 |
|
49 | 48 | from {{ target_relation }}
|
50 |
| - where dbt_valid_to is null |
51 | 49 |
|
52 | 50 | ) as snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key
|
53 |
| - where snapshotted_data.dbt_unique_key is null |
54 |
| - or ( |
55 |
| - snapshotted_data.dbt_unique_key is not null |
56 |
| - and ( |
57 |
| - {{ strategy.row_changed }} |
58 |
| - ) |
| 51 | + where snapshotted_data.dbt_valid_to is null |
| 52 | + and ( |
| 53 | + {{ strategy.row_changed }} |
59 | 54 | )
|
60 |
| -) as insertions |
| 55 | +) as updates |
61 | 56 | union all
|
62 | 57 | select * from (
|
63 | 58 | select
|
64 |
| - 'update' as dbt_change_type, |
65 |
| - source_data.*, |
66 |
| - snapshotted_data.dbt_scd_id |
| 59 | + 'insert' as dbt_change_type, |
| 60 | + source_data.* |
67 | 61 |
|
68 | 62 | from (
|
| 63 | + |
69 | 64 | select
|
70 | 65 | *,
|
71 | 66 | {{ strategy.unique_key }} as dbt_unique_key,
|
72 | 67 | {{ strategy.updated_at }} as dbt_updated_at,
|
73 | 68 | {{ strategy.updated_at }} as dbt_valid_from,
|
74 |
| - {{ strategy.updated_at }} as dbt_valid_to |
| 69 | + cast(null as timestamp) as dbt_valid_to, |
| 70 | + {{ strategy.scd_id }} as dbt_scd_id |
75 | 71 |
|
76 | 72 | from ( {{ source_sql }} )
|
77 | 73 |
|
78 | 74 | ) as source_data
|
79 |
| - join ( |
| 75 | + left outer join ( |
80 | 76 | select *,
|
81 | 77 | {{ strategy.unique_key }} as dbt_unique_key
|
82 | 78 |
|
83 | 79 | from {{ target_relation }}
|
| 80 | + where dbt_valid_to is null |
84 | 81 |
|
85 | 82 | ) as snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key
|
86 |
| - where snapshotted_data.dbt_valid_to is null |
87 |
| - and ( |
88 |
| - {{ strategy.row_changed }} |
| 83 | + where snapshotted_data.dbt_unique_key is null |
| 84 | + or ( |
| 85 | + snapshotted_data.dbt_unique_key is not null |
| 86 | + and ( |
| 87 | + {{ strategy.row_changed }} |
| 88 | + ) |
89 | 89 | )
|
90 |
| -) as updates |
| 90 | +) as insertions |
| 91 | + |
91 | 92 | {%- if strategy.invalidate_hard_deletes %}
|
92 | 93 | union all
|
93 | 94 | select * from (
|
|
0 commit comments