【问题标题】:is there any way to calculate date in airflow?有什么方法可以计算气流中的日期吗?
【发布时间】:2019-08-06 02:31:10
【问题描述】:

我创建了一个每天运行一次的 Dag - dag 不会获取任何参数。 dag 运行的每一天,我都需要计算昨天的日期(当前日期 -1)并将其传递给 dag 中的所有操作员(同一日期)。 我看到我可以使用 Airflow-macros 来计算日期,但问题是,我在 t2 中使用的运算符(必须使用此运算符并且不能更改它)将数据作为字符串传递给字典(default_param_dict)并且不要t 计算宏。

有没有其他方法可以在没有宏的情况下计算日期?使用 X-com 是不相关的,因为我只能使用操作员并且不能更改他们的代码。

需要你帮忙:)

添加我的 dag 示例:

t1 = SimpleHttpOperator(
    task_id='check_if_daily_report_ready',
    method='GET',
    endpoint="/bla/bla?date={date}".format(
        date='{{ (execution_date - macros.timedelta(days=1)).strftime("%Y-%m-%d") }}'),
    http_conn_id="conn1",
    headers={"Content-Type": "application/json"},
    response_check=lambda response: True if response.status_code == 200 else False,
    dag=dag,
)



t2 = Queryperator(
    task_id='cal',
    query_file='ca.sql',
    query_folder='include/sql_files/bla',
    token='Token',
    default_param_dict={"date": '{{ (execution_date - macros.timedelta(days=1)).strftime("%Y-%m-%d") }}'},
    dag=dag
)

【问题讨论】:

    标签: airflow


    【解决方案1】:

    如果我理解了这个问题,您想将昨天的日期添加到 default_param_dict,如果是这样,我建议使用 datetime,如下所示,

    import datetime
    
    t2 = Queryperator(
        task_id='cal',
        query_file='ca.sql',
        query_folder='include/sql_files/bla',
        token='Token',
        default_param_dict={"date": (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d')},
        dag=dag
    )
    

    【讨论】:

    • 感谢您的回答!这会计算每个计划的 dag 运行的日期吗?
    • 它应该计算。
    猜你喜欢
    • 1970-01-01
    • 2015-12-18
    • 2011-12-13
    • 1970-01-01
    • 2020-01-10
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多