From 9a585662d140dbcfe75c3bc28b7c56e8aec9b54c Mon Sep 17 00:00:00 2001 From: Colin Date: Wed, 10 Jul 2024 16:51:25 -0700 Subject: [PATCH 1/2] test dynamic snowflake warehouse assignment via macro --- .../adapter/dynamic_table_tests/files.py | 34 +++++++++++++++++++ .../test_dynamic_tables_basic.py | 24 +++++++++++++ 2 files changed, 58 insertions(+) diff --git a/tests/functional/adapter/dynamic_table_tests/files.py b/tests/functional/adapter/dynamic_table_tests/files.py index ef8d2bf1f..79cf47a6f 100644 --- a/tests/functional/adapter/dynamic_table_tests/files.py +++ b/tests/functional/adapter/dynamic_table_tests/files.py @@ -31,3 +31,37 @@ ) }} select * from {{ ref('my_seed') }} """ + +MY_DYNAMIC_TABLE = """ +{{ config( + materialized='dynamic_table', + snowflake_warehouse='DBT_TESTING', + target_lag='2 minutes', + refresh_mode='INCREMENTAL', +) }} +select * from {{ ref('my_seed') }} +""" + +MY_DYNAMIC_TABLE_WITH_DYNAMIC_WAREHOUSE = """ +{{ config( + materialized = 'dynamic_table', + snowflake_warehouse = get_warehouse('xsmall'), + target_lag = 'downstream', + on_configuration_change = 'apply', +) }} + +select * from {{ ref('my_seed') }} + +""" + +GET_WAREHOUSE_MACRO = """ +{% macro get_warehouse(size) %} + {% set warehouses = { + 'xsmall': 'DBT_TESTING', + 'small': 'DBT_TESTING', + 'medium': 'DBT_TESTING', + 'large': 'DBT_TESTING', + } %} + {{ return(warehouses[size]) }} +{% endmacro %} +""" diff --git a/tests/functional/adapter/dynamic_table_tests/test_dynamic_tables_basic.py b/tests/functional/adapter/dynamic_table_tests/test_dynamic_tables_basic.py index a17f5d267..cb1a228df 100644 --- a/tests/functional/adapter/dynamic_table_tests/test_dynamic_tables_basic.py +++ b/tests/functional/adapter/dynamic_table_tests/test_dynamic_tables_basic.py @@ -15,6 +15,8 @@ MY_SEED, MY_TABLE, MY_VIEW, + MY_DYNAMIC_TABLE_WITH_DYNAMIC_WAREHOUSE, + GET_WAREHOUSE_MACRO, ) from tests.functional.adapter.dynamic_table_tests.utils import query_relation_type @@ -184,3 +186,25 @@ def test_dynamic_table_only_updates_after_refresh(self, project, my_dynamic_tabl # new records were inserted in the table but didn't show up in the view until it was refreshed assert table_start < table_mid == table_end assert view_start == view_mid < view_end + + +class TestSnowflakeDynamicTableWithDynamicWarehouse: + @pytest.fixture(scope="class") + def macros(self): + return {"get_warehouse.sql": GET_WAREHOUSE_MACRO} + + @pytest.fixture(scope="class", autouse=True) + def seeds(self): + return {"my_seed.csv": MY_SEED} + + @pytest.fixture(scope="class", autouse=True) + def models(self): + yield { + "my_table.sql": MY_TABLE, + "my_view.sql": MY_VIEW, + "my_dynamic_table_with_dynamic_warehouse.sql": MY_DYNAMIC_TABLE_WITH_DYNAMIC_WAREHOUSE, + } + + def test_dynamic_table_create(self, project): + run_dbt(["seed"]) + run_dbt(["run"]) From 83b6454347a74daebb4004e38044738e42a7362b Mon Sep 17 00:00:00 2001 From: Colin Date: Wed, 10 Jul 2024 16:58:58 -0700 Subject: [PATCH 2/2] delete duplicate fixture --- tests/functional/adapter/dynamic_table_tests/files.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/tests/functional/adapter/dynamic_table_tests/files.py b/tests/functional/adapter/dynamic_table_tests/files.py index 79cf47a6f..c2d035c95 100644 --- a/tests/functional/adapter/dynamic_table_tests/files.py +++ b/tests/functional/adapter/dynamic_table_tests/files.py @@ -22,16 +22,6 @@ """ -MY_DYNAMIC_TABLE = """ -{{ config( - materialized='dynamic_table', - snowflake_warehouse='DBT_TESTING', - target_lag='2 minutes', - refresh_mode='INCREMENTAL', -) }} -select * from {{ ref('my_seed') }} -""" - MY_DYNAMIC_TABLE = """ {{ config( materialized='dynamic_table',