使用 DBT 宏时结果不正确

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

使用 dbt 运行宏并得到不正确的结果。

我正在运行以下宏:

{% set value = 0 %}
 {% for key , v in metrics.items() %}
     {% if col in v %}
          {% set value = value + 1 %}
          {{value}} 
           {{key}}({%- if relation_alias %}{{ relation_alias }}.{{ col|trim }}){%- endi -%}           
           {% endif %}           
 {% endfor %}          
 {{ value }}

即使满足 if 条件,我在 for 循环之外得到的值为 0。我期望 for 循环执行后值为 1。请推荐。

macros dbt
1个回答
0
投票

您需要将变量放入命名空间中,以便在循环中更新它:

{% set ns = namespace(value = 0) %}
{% for key , v in metrics.items() %}
    {% if col in v %}
        {% set ns.value = ns.value + 1 %}
        {{value}} 
        {{key}}({%- if relation_alias %}{{ relation_alias }}.{{ col|trim }}){%- endif -%}           
    {% endif %}           
 {% endfor %}          
 {{ ns.value }}
© www.soinside.com 2019 - 2024. All rights reserved.