Skip to content

Commit

Permalink
Add tests on incremental materialization (dbt-labs#37)
Browse files Browse the repository at this point in the history
  • Loading branch information
Kayrnt authored Nov 8, 2021
1 parent 1f9cb16 commit b5f336b
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 1 deletion.
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
16 changes: 15 additions & 1 deletion tests/integration/incremental_schema_tests/models/schema.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,21 @@ 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:
- name: id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,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 Expand Up @@ -121,6 +136,7 @@ def test__redshift__run_incremental_ignore(self):
@use_profile('redshift')
def test__redshift__run_incremental_append_new_columns(self):
self.run_incremental_append_new_columns()
self.run_incremental_append_new_columns_remove_one()

@use_profile('redshift')
def test__redshift__run_incremental_sync_all_columns(self):
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 b5f336b

Please sign in to comment.