Skip to content

Commit

Permalink
Follow up change for lean return version
Browse files Browse the repository at this point in the history
  • Loading branch information
Kayrnt committed Nov 7, 2021
1 parent 2bfde1e commit 1ae2790
Show file tree
Hide file tree
Showing 8 changed files with 84 additions and 4 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ N/A

### Contributors
- [@NiallRees](https://github.com/NiallRees) ([#32](https://github.com/dbt-labs/dbt-snowflake/pull/32))
- [@Kayrnt](https://github.com/Kayrnt) ([38](https://github.com/dbt-labs/dbt-snowflake/pull/38))
- [@Kayrnt](https://github.com/Kayrnt) ([#38](https://github.com/dbt-labs/dbt-snowflake/pull/38))

## dbt-snowflake v1.0.0b1 (October 11, 2021)

Expand Down
8 changes: 5 additions & 3 deletions dbt/include/snowflake/macros/materializations/incremental.sql
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,11 @@
{% do adapter.expand_target_column_types(
from_relation=tmp_relation,
to_relation=target_relation) %}
{% set schema_changes_dict = process_schema_changes(on_schema_change, tmp_relation, existing_relation) %}
{#-- Destination columns is the intersection of source and target table --#}
{% set dest_columns = schema_changes_dict.get('in_target_and_source', existing_columns) %}
{#-- Process schema changes. Returns dict of changes if successful. Use source columns for upserting/merging --#}
{% set dest_columns = process_schema_changes(on_schema_change, tmp_relation, existing_relation) %}
{% if not dest_columns %}
{% set dest_columns = adapter.get_columns_in_relation(existing_relation) %}
{% endif %}
{% set build_sql = dbt_snowflake_get_incremental_sql(strategy, tmp_relation, target_relation, unique_key, dest_columns) %}

{% endif %}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{{
config(
materialized='incremental',
unique_key='id',
on_schema_change='append_new_columns'
)
}}

{% set string_type = 'string' if target.type == 'bigquery' else 'varchar(10)' %}

WITH source_data AS (SELECT * FROM {{ ref('model_a') }} )

{% if is_incremental() %}

SELECT id,
cast(field1 as {{string_type}}) as field1,
cast(field3 as {{string_type}}) as field3,
cast(field4 as {{string_type}}) as field4
FROM source_data WHERE id NOT IN (SELECT id from {{ this }} )

{% else %}

SELECT id,
cast(field1 as {{string_type}}) as field1,
cast(field2 as {{string_type}}) as field2
FROM source_data where id <= 3

{% endif %}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{
config(materialized='table')
}}

{% set string_type = 'string' if target.type == 'bigquery' else 'varchar(10)' %}

with source_data as (

select * from {{ ref('model_a') }}

)

select id,
cast(field1 as {{string_type}}) as field1,
cast(CASE WHEN id > 3 THEN NULL ELSE field2 END as {{string_type}}) AS field2,
cast(CASE WHEN id <= 3 THEN NULL ELSE field3 END as {{string_type}}) AS field3,
cast(CASE WHEN id <= 3 THEN NULL ELSE field4 END as {{string_type}}) AS field4

from source_data
14 changes: 14 additions & 0 deletions tests/integration/incremental_schema_tests/models/schema.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,20 @@ models:
tags: [column_level_tag]
tests:
- unique

- name: incremental_append_new_columns_remove_one
columns:
- name: id
tags: [column_level_tag]
tests:
- unique

- name: incremental_append_new_columns_remove_one_target
columns:
- name: id
tags: [column_level_tag]
tests:
- unique

- name: incremental_sync_all_columns
columns:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,21 @@ def run_incremental_append_new_columns(self):
self.list_tests_and_assert(select, exclude, expected)
self.run_tests_and_assert(select, exclude, expected, compare_source, compare_target)

def run_incremental_append_new_columns_remove_one(self):
select = 'model_a incremental_append_new_columns_remove_one incremental_append_new_columns_remove_one_target'
compare_source = 'incremental_append_new_columns_remove_one'
compare_target = 'incremental_append_new_columns_remove_one_target'
exclude = None
expected = [
'select_from_a',
'select_from_incremental_append_new_columns_remove_one',
'select_from_incremental_append_new_columns_remove_one_target',
'unique_model_a_id',
'unique_incremental_append_new_columns_remove_one_id',
'unique_incremental_append_new_columns_remove_one_target_id'
]
self.run_tests_and_assert(select, exclude, expected, compare_source, compare_target)

def run_incremental_sync_all_columns(self):
select = 'model_a incremental_sync_all_columns incremental_sync_all_columns_target'
compare_source = 'incremental_sync_all_columns'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
select * from {{ ref('incremental_append_new_columns_remove_one') }} where false
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
select * from {{ ref('incremental_append_new_columns_remove_one_target') }} where false

0 comments on commit 1ae2790

Please sign in to comment.