jinja2 - 如何在 dbt 中使用与 dbt_utils.dateadd 中的字符串连接的变量?

标签 jinja2 dbt

我设置了一个名为年份的变量。 我想使用 dateadd 函数,但不是像下面的示例那样使用 from_date_or_timestamp

{{ dbt_utils.dateadd(datepart='day', interval=1, from_date_or_timestamp="'2017-01-01'") }}

我想使用变量年份与月份和日期连接,如下所示

{{ dbt_utils.dateadd(datepart='day', interval=1, from_date_or_timestamp= year ~ '-01-01') }}

但是我无法让它工作...有人可以帮助我吗?

最佳答案

解决此问题的方法可能如下:

{% set year = 2021 %}

select 
  {{ dbt_utils.dateadd(
    datepart = 'day',
    interval = 1,
    from_date_or_timestamp = "'" ~ year ~ "-01-01'"
    )
  }} as date_add_field

由于您需要输入 from_date_or_timestamp 为字符串,因此添加尾部 ',然后添加 -01-01',两者均进行包装在 "" 中,您将使其正常工作。编译的 SQL 将如下所示(我使用的是 Snowflake,您编译的 SQL 可能会延迟):

select 
  dateadd(day, 1, '2021-01-01') as date_add_field

关于jinja2 - 如何在 dbt 中使用与 dbt_utils.dateadd 中的字符串连接的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74235293/

相关文章:

python - 教程生成信号量问题的 dbt 调试

jinja2 - 当我尝试运行 dbt jinja 模型时,为什么会收到 "unexpected ' )' "错误?

dbt - dbt 测试可以相互依赖吗?

python - 使用 render_template 有条件地呈现 HTML 片段

python - 使用 Flask 进行 POST 后,选择选项保持选中状态

dbt - 不编译运行dbt

dbt - 运行 dbt 种子时出现 "Tried to resolve a name to a reference that was unknown to the frame"错误

python - Jinja 模板将双引号或单引号呈现为 ' "

templates - 使用 Jinja2,是否可以禁用标签和/或过滤器?

html - 居中 Bootstrap/FlaskWTForms (Jinja)