我创建了一个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
)
答案 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
)