有什么方法可以计算出气流的日期?

时间:2019-08-05 17:40:09

标签: airflow

我创建了一个Dag,该Dag计划每天运行一次-该dag不会获取任何参数。 dag运行的每一天,我需要计算昨天的日期(当前Date -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
)

1 个答案:

答案 0 :(得分:0)

如果我理解这个问题,您想将昨天的日期添加为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
)