尝试在 jinja dbt 宏中进行 catch

问题描述 投票:0回答:1

我正在尝试在 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 %}

macros jinja2 dbt
1个回答
0
投票

无法在 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,因为它只是实际列名称的占位符。

© www.soinside.com 2019 - 2024. All rights reserved.