使用 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。请推荐。
您需要将变量放入命名空间中,以便在循环中更新它:
{% 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 }}