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

Airflow 2.11.0中传递带时区转换的logical_date至dbt模型报错

Airflow 2.11.0中传递带时区转换的logical_date到dbt的解决方案

问题原因

Airflow 2.x版本对模板变量的属性访问逻辑做了调整,直接在Jinja模板中调用in_timezone方法会触发变量未定义的报错,旧版本的语法不再兼容。

解决方法

方法一:使用Airflow内置模板过滤器tz_convert

Airflow提供了专门的时区转换过滤器tz_convert,符合新版本模板语法规范,替换原有代码即可:

dbt_task = DbtTaskGroup(
    select=["mymodel"],
    operator_args={
        "vars": {
            "logical_date_to_use_in_model": "{{ logical_date | tz_convert('America/Vancouver') }}"
        },
    },
)

方法二:通过Jinja模板调用标准时区转换方法

如果偏好直接使用Python方法,可在模板中调用astimezone配合pytz完成转换(Airflow默认已安装pytz):

dbt_task = DbtTaskGroup(
    select=["mymodel"],
    operator_args={
        "vars": {
            "logical_date_to_use_in_model": "{{ logical_date.astimezone(pytz.timezone('America/Vancouver')) }}"
        },
    },
)

若需要特定格式(如ISO字符串),可追加.isoformat():

"logical_date_to_use_in_model": "{{ (logical_date.astimezone(pytz.timezone('America/Vancouver'))).isoformat() }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 05:12:05