我正在尝试使用一些自定义值运行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') }})