我正在使用 insert_overwrite
策略和尝试设置 partitions_to_replace
使用变量:
{% set partitions_to_replace = [var('execution_date')] %}
只是为了测试编译,我在我的 dbt_project.yml
看起来像 execution_date: '2020-01-01'
. 但是,似乎在物化生成的merge语句中,日期没有被引用,因此失败并返回错误 No matching signature for operator IN for argument types DATE and {INT64}
. 以下是生成的sql的相关片段:
when not matched by source
and DBT_INTERNAL_DEST.visit_date in (
2020-01-01
)
有没有办法确保变量周围有引号?当在我编写的sql中使用变量时,我知道我可以将 var
函数,但在这种情况下,sql是由具体化生成的。
1条答案
按热度按时间vtwuwzda1#
这是个公平的问题。为了灵活性,物化并不试图 Package
partitions
引号中的值,作为支持sql表达式和文本作为潜在输入的一种方式。i、 你可能想要
merge
predicate 为:但你可能同样希望它是:
因此,您需要:
将字符串文本传递到
var
用双引号括起来:或者在你的网站上处理额外的报价
set
陈述,大致如下:查看此相关问题。op对我们可以添加的语法有一些建议,以使这更简单;我很想知道哪一个对你有意义。