You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DBT双变量同时遍历问题:代码正常但输出不符合预期

DBT Jinja2循环并行遍历两个变量的错误修正

你的问题出在循环遍历两个列表的方式错误。当前的(VARIABLE,VARIABLE1)是将两个列表作为元组的两个元素进行遍历,而非将两个列表的对应元素配对。这就导致第一次循环取的是VARIABLE列表的全部元素(col=123,col1=1234),第二次循环取的是VARIABLE1列表的全部元素(col=abc,col1=def),完全不符合你想要的对应配对逻辑。

修正方案

使用Jinja2内置的zip()函数,将两个列表的对应元素一一配对,这样循环时就能同时取到两个列表中索引相同的元素。

修改后的代码如下:

{%-    set VARIABLE = ["123","1234"]    -%}
{%-    set VARIABLE1 = ["abc","def"]    -%}
with FINAL as (
    
    {% for col, col1 in zip(VARIABLE, VARIABLE1) %}

      Select
      current_date as date,
    
       {{ col }} as test1,
       '{{ col1 }}' as test2
     
       UNION ALL
     
    {% endfor %}
  select current_date as date1,
  'Temp' as test1,
  'Temp' as test2
) select * from FINAL

修正后的效果

生成的SQL会按照预期将123与abc配对、1234与def配对,得到你想要的输出结果。

内容的提问来源于stack exchange,提问作者Bharat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:55:25