创建一个变量来查看使用 dbt 运行模型的日期

问题描述 投票:0回答:2

我需要向我的 dbt 模型添加一列,显示模型运行时的当前日期。

我已经尝试过

{{ run_started_at.strftime("%Y-%m-%d") }}
将其直接添加到我的模型中,并且还尝试设置一个名为 date 的变量并创建这段代码(
{% set report_date = dbt_utils.get_query_results_as_dict("select dateadd(day,-1,current_date()) as col")["COL"][0] %}
),但问题是日期,就像我们今天在 2021 年一样12-14,该列的结果是 1995(这是减去
2021 - 12 - 14
)。那么,现在有人有办法将此变量转换为日期吗?谢谢!

date variables casting dbt
2个回答
6
投票

我想我现在知道这个秘密了

请记住dbt是一个类似代码生成的工具

就你而言,我想你必须将 jinja 代码包装在字符串引号中

错误:

SELECT {{ run_started_at.strftime("%Y-%m-%d") }} as YourColumn
--compiled: SELECT 2021-12-14 as YourColumn
--YourColumn=1995

正确:

SELECT '{{ run_started_at.strftime("%Y-%m-%d") }}' as YourColumn
--compiled: SELECT '2021-12-14' as YourColumn
--YourColumn=2021-12-14

0
投票

此外,如果您想要所需时区的时间戳,您可以使用:

'{{ run_started_at.astimezone(modules.pytz.timezone("America/New_York")) }}' as run_started_at_est

这将返回一个 varchar 字段

2023-11-02 09:42:09.343605-04:00

有关可用时区的列表,请参阅:

https://gist.github.com/heyalexej/8bf688fd67d7199be4a1682b3eec7568

© www.soinside.com 2019 - 2024. All rights reserved.