我需要向我的 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
)。那么,现在有人有办法将此变量转换为日期吗?谢谢!
我想我现在知道这个秘密了
请记住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
此外,如果您想要所需时区的时间戳,您可以使用:
'{{ 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