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
相关产品推荐
相关产品推荐

