Hey @dabit – I got some more info internally on this, and my previous reply is not a good one! Running a commit;
isn’t a great idea because it might mess with other queries that dbt runs, where dbt is expecting a transaction to already be open.
Instead, you could run this statement as an operation
(docs). So, before you dbt run
, execute the following:
dbt run-operation create_udfs
You’ll have to adjust your create_udfs
macro to actually run each query – the run_query
macro will not begin a transaction automatically.
{% macro create_udfs() %}
{% do run_query('create or replace library my_library language plpythonu') %}
{% do run_query('create schema if not exists {{ target.schema }}') %};
{% do run_query(create_f_list_custom_keys()) %};
{% do run_query(create_f_count_custom_keys()) %};
{% do run_query(create_f_future_date() %}
{% endmacro %}
^ I haven’t tested this code but it should be close to the thing that you want!