首页 > 解决方案 > Airflow:如何使用宏获取上个月的第一天?

问题描述

我正在尝试回填一份需要将日期调整到上个月第一天的工作。

我可以使用:

from datetime import datetime, timedelta, date

date = (date.today().replace(day=1) - timedelta(days=1)).replace(day=1)

但我不确定 Airflow 中的回填是否会返回 date.today() 作为运行日期。

标签: airflow

解决方案


我得到了这个,它仍然会吐出一个时间戳,如果你需要的话,需要添加一些字符串格式来获得一个日期

dag = DAG('test',default_args=default_args, schedule_interval='@daily')

def test_print(input):
    print('Testing')
    print(input)

test_print = PythonOperator(
        task_id='test_print',
        python_callable=test_print,
        op_args=['{{ execution_date + macros.dateutil.relativedelta.relativedelta(months=-1, day=1) }}'],
        dag=dag
)

注意相对和绝对参数的混合relativedelta

年、月、日、时、分、秒、微秒:绝对信息(参数为单数);使用绝对信息添加或减去 relativedelta 不会执行算术运算,而是将原始日期时间中的相应值替换为 relativedelta 中的值。


推荐阅读