The problem I’m having:
I have a dbt Python model configured with strategy = 'incremental'.
-
In dbt-snowflake v1.9.2, the intermediate table was being created as a temporary table.
-
After upgrading to dbt-snowflake v1.10.0, the Python model (via the stored procedure
__dbt_sp) now saves the DataFrame as type = ‘TRANSIENT’ instead.
At the same time, I observed that SQL models do not create transient intermediate tables (dbt__temp or views) and continue to behave as before without any issues.
The context of why I’m trying to do this:
I would like to understand whether this change in behavior for Python models is intentional in dbt-snowflake 1.10.0 / higher versions, and if there is any configuration or flag available to control it.
My requirement is to have the stored procedure (__dbt_sp) create temporary tables or views, instead of transient tables.
What I’ve already tried:
- Tried setting
transient = False, which results in the table being created as a permanent table - Tried
tmp_relation_type = 'view', which failed with the error:
"python model supports only 'table'"
[base] Python models currently only support ‘table’ for tmp_relation_type but view was specified.
[base] > in macro dbt_snowflake_get_tmp_relation_type (macros/materializations/incremental.sql)
called by macro materialization_incremental_snowflake (macros/materializations/incremental.sql)
[base] > called by model DIGT_ALRT_DETC_MICR_BTCH_OTBG (resources/DIGT_ALRT_DETC_MICR_BTCH_OTBG.py)
Some example code or error messages
dbt config in python model :
dbt.config(
packages=["pandas", "numpy"],
materialized="incremental",
)