dbt CLI字符串变量作为整数从YAML字典中插入



我正在尝试使用一些自定义值运行run命令:

dbt run --vars "{start_date: '2022-08-01', end_date: '2022-08-02'}"

然后在以下上下文中使用这些变量:

WHERE session_date BETWEEN {{ var('start_date') }} AND {{ var('end_date') }}

值需要作为字符串插入(保留单引号(,但它被编译为:

WHERE session_date BETWEEN 2022-08-01 AND 2022-08-02

这就是不正确的SQL("参数类型为DATE、INT64、INT64的运算符BETWEEN没有匹配的签名"(。我试过切换单引号和双引号,但问题仍然存在。

我如何才能让它尊重YAML dict中传递的引号?

我只需在变量语句周围添加单引号就解决了这个问题:

WHERE session_date BETWEEN '{{ var("start_date") }}' AND '{{ var("end_date") }}'

尝试postgresql TO_DATE函数将输入的string变量转换为datetime变量,以便于比较。

E.g(

WHERE session_date BETWEEN to_date({{ var('start_date') }}) AND to_date({{ var('end_date') }})

最新更新