I am trying to achieve try catch functionality in jinja inside dbt macros. But it seems like jinja doesn't support it in macros. Any alternative way I can achieve the same thing?
{% macro example_macro() %}
{% for item in my_list_of_dicts %}
{% set delete_query %}
-- some logic
{% endset %}
{% try %} --how to achieve this in dbt macros
{{ run_query(delete_query) }}
{% except %}
SELECT 'Error executing delete query for' AS errormsg
{% endtry %}
{% endfor %}
{% endmacro %}
There's no way to use try/catch inside dbt macros. You can achieve a similar result using execute variable. Your snippet should look something like this:
{% macro example_macro() %}
{% for item in my_list_of_dicts %}
{% set delete_query %}
-- some logic
{% endset %}
{% set result = run_query(delete_query) %}
{% if not execute %}
SELECT 'Error executing delete query for {{ item.some_identifier }}' AS errormsg
{% endif %}
{% endfor %}
{% endmacro %}
Keep in mind to replace item.some_identifier as it is just a placeholder for your actual column name.