DBT带参数宏中IF条件传入TABLE1/TABLE2时判断失效
问题原因及解决方法
你的DBT宏条件判断失效,核心是两个低级错误导致:
- 在Jinja2的
if语句块内,直接引用宏参数不需要套{{}}——你当前的写法会把modelName当成字符串字面量'{{modelName}}',而非传入的参数值 - 代码里用了中文单引号,Jinja2无法识别这种符号,必须使用英文单引号
修正后的宏代码:
{% macro cloud_test_results_get_standard_columns(modelName) %} result, Length, estimatedLength as estimatedLength, {% if modelName == 'TABLE1' %} TABL1_COL1, TABL1_COL1, TABL1_COL1, {% elif modelName == 'TABLE2' %} TABL2_COL1, TABL2_COL1, TABL2_COL1, {% else %} TABL_DEFAULT1, TABL_DEFAULT2, TABL_DEFAULT3, {% endif %} {% endmacro %}
额外提醒:你原代码中TABLE2分支的列名还是TABL1_COL1,建议改成对应TABLE2的列名,避免后续逻辑混淆。
内容的提问来源于stack exchange,提问作者jks20
相关产品推荐
相关产品推荐

