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

如何在dbt宏日志中添加本地时间戳

解决dbt宏日志添加本地时间戳的问题

你的问题出在时间戳代码没有整合到log函数的消息中,而是被渲染到了SQL脚本里,所以日志不会显示时间戳。以下是修正后的实现:

方案1:使用UTC时间戳(dbt默认的run_started_at是UTC时区)

{% macro create_local_database(username, reset_environment = false) %}

  {% set setup_script1 %}
    {%- if reset_environment == false -%}
      CREATE DATABASE ANALYTICS_LOCAL_MART_{{username}}
      {% set timestamp = run_started_at.strftime("%d:%m:%Y %H:%M") %}
      {% do log('Operation Completed  ' ~ timestamp, True) %}
    {%- endif -%}
  {% endset %}

{% endmacro %}

方案2:转换为本地时区时间戳

如果需要显示系统本地时间,利用datetime.astimezone()将UTC时间转换为本地时区:

{% macro create_local_database(username, reset_environment = false) %}

  {% set setup_script1 %}
    {%- if reset_environment == false -%}
      CREATE DATABASE ANALYTICS_LOCAL_MART_{{username}}
      {% set local_timestamp = run_started_at.astimezone().strftime("%d:%m:%Y %H:%M") %}
      {% do log('Operation Completed  ' ~ local_timestamp, True) %}
    {%- endif -%}
  {% endset %}

{% endmacro %}

关键说明:

  • 用~符号拼接字符串,把时间戳和日志消息合并后传入log函数,确保时间戳包含在日志内容里。
  • strftime("%d:%m:%Y %H:%M")可以根据需求调整格式,比如改成"%Y-%m-%d %H:%M:%S"显示秒数。
  • 如果需要指定特定时区(如上海时区),可以先导入时区库,示例:
    {% set shanghai_tz = modules.pytz.timezone('Asia/Shanghai') %}
    {% set local_timestamp = run_started_at.astimezone(shanghai_tz).strftime("%d:%m:%Y %H:%M") %}
    

内容的提问来源于stack exchange,提问作者etan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:35:17