dbt jinja“elif”功能?

gsc*_*ott 2 if-statement jinja2 dbt

根据 jinja 文档,and流else if中的情况存在一个标签:Jinja Control Structures/IFifelse

正在寻找一种在 dbt 宏中执行此操作的方法,例如:

my_macro.sql

-- macros/my_macro.sql
{% macro my_macro() %}
  {% if target.name == 'default' %}
      select 'A' as my_letter;
  {% elif target.name == 'dev' %}
      select 'B' as my_letter;
  {% elif target.name == 'qa' %}
      select 'C' as my_letter;
  {% elif target.name == 'prod' %}
      select 'D' as my_letter;
  {% else %}
     select 1; -- hooks will error if they don't have valid SQL in them, this handles that!
  {% endif %}

{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

如果elif标签或同等内容不可用,我有哪些选择?只有像下面这样的东西吗?

-- macros/my_macro.sql
{% macro my_macro() %}
  
  {% if target.name == 'default' %}
    select 'A' as my_letter;
  {% else %}
    select 1;
  {% endif %}
  
  {% if target.name == 'dev' %}
    select 'B' as my_letter;
  {% else %}
    select 1;
  {% endif %}
  
  {% if target.name == 'qa' %}
    select 'C' as my_letter;
  {% else %}
    select 1;
  {% endif %}
  
  {% if target.name == 'prod' %}
    select 'D' as my_letter;
  {% else %}
    select 1;
  {% endif %}

{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

gsc*_*ott 6

忽略上面的问题 - 这是一个缩进问题。

{% elif %}标签工作正常。