如何在Airflow中保持执行日期并将时间转换为00:00
我在我的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) }}'
}