我正在尝试在 dbt 宏内的 jinja 中实现 try catch 功能。 但 jinja 似乎不支持宏。 有什么其他方法可以实现同样的目标吗?
{% 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 %}
无法在 dbt 宏中使用 try/catch。您可以使用执行变量获得类似的结果。你的代码片段应该看起来像这样:
{% 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 %}
请记住替换 item.some_identifier,因为它只是实际列名称的占位符。