You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写dbt宏将Unix整数转换为Snowflake中的datetime

Snowflake中使用dbt宏将Unix整数转换为datetime的语法问题

我有一个存储Unix整数的字段,需要在Snowflake中通过dbt宏将其转换为datetime。用纯SQL实现很简单,但始终搞不定dbt的转义语法。

我试过各种能搜到的方法,目前只有用{% raw %}标签硬编码值时能正常运行,但我需要用宏的输入参数来实现通用转换:

可行代码

{%- macro num_to_datetime(datetime_field) -%}
{% raw %}
    DATEADD(MILLISECOND, 1683668421712 % 1000, DATEADD(SECOND, 1683668421712 / 1000, '19700101'))
{% endraw %}
{%- endmacro -%}

不可行代码(无法解析宏参数)

{%- macro num_to_datetime(datetime_field) -%}
{% raw %}
    DATEADD(MILLISECOND, {{ datetime_field }} % 1000, DATEADD(SECOND, {{ datetime_field }}/ 1000, '19700101'))
{% endraw %}
{%- endmacro -%}

我还尝试用{% set %}标签把输入参数设为变量,但依然没生效,应该是语法问题。

补充说明:编写这个宏是为了实现自动化流程——我们用Python读取元数据生成staging view脚本,解析JSON并添加易读的业务列名;同时用该宏为特定字段应用默认转换逻辑,这样新源数据的导入只需要点击几次操作并执行dbt run就能完成。

内容的提问来源于stack exchange,提问作者Anton S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:02:11