如何在Airflow中保持执行日期并将时间转换为00:00

4 投票
1 回答
101 浏览
提问于 2025-04-14 15:50

我在我的dag.py程序中使用了time_marker = {{execution_date.in_timezone('Europe/Amsterdam')}}。我想保留执行日期的日期部分,并把时间设置为"T00:00:00"。这样无论在执行日期的哪个时刻运行,time_marker都会始终是比如说20240115T00:00:00这样的格式。

我该怎么做呢?我试过使用pendulum.parse,但没搞明白怎么实现。谢谢。

1 个回答

1

在DAG定义中添加一个自定义宏

功能:

def format_execution_date(execution_date):
    amsterdam_time = execution_date.in_timezone('Europe/Amsterdam')
    midnight_amsterdam_time = amsterdam_time.start_of('day')
    return midnight_amsterdam_time.format('YYYYMMDDT00:00:00')

使用这个功能:

with DAG(
...

    user_defined_macros={'format_execution_date': format_execution_date},

) as dag:
...

在你的任务中,你可以这样使用:

params={
    'time_marker': '{{ format_execution_date(execution_date) }}'
}

撰写回答