dbt中如何正确将命令行变量传递给Jinja函数?
问题解决步骤
1. 修正命令行--vars的格式
dbt的--vars参数要求传入合法的JSON键值对,你当前的写法{my_key, my_date_variable}不是有效JSON结构,需明确变量名与对应值。示例:
dbt run --vars '{"my_date_variable": "2024-05-20"}'
多变量传递写法:
dbt run --vars '{"my_key": "some_value", "my_date_variable": "2024-05-20"}'
2. 修正模型中的变量引用逻辑
在dbt模型里,引用命令行传入的变量必须通过var()函数,且整个Jinja表达式要包裹在双大括号{{ }}中,否则会被当作普通SQL语法解析导致报错。修正后的模型代码:
SELECT id, {{ my_jinja_func(var('my_date_variable')) }} AS x FROM my_table
额外注意事项
- 确保
my_jinja_func是你已在macros/目录下定义好的Jinja宏,否则dbt会无法识别该函数 - 若变量为日期类型,需保证传入值的格式与宏的预期一致,避免类型不匹配错误
内容的提问来源于stack exchange,提问作者mosiki
相关产品推荐
相关产品推荐

