我面临 Airflow 的问题,即我的 DAG 未将正确的执行日期传递给 DAG 内的查询。我有两个 DAG,一个计划每月第一天运行,另一个计划每周三运行。以下是每个 DAG 的配置方式:
每月DAG
@dag(
dag_id="monthly_dag",
description="Monthly pipeline",
start_date=datetime.datetime(2024, 10, 1),
schedule_interval="0 18 1 * *", # Every month on the 1st day at 18:00 UTC
catchup=False,
default_args={
"retries": 3,
"retry_delay": datetime.timedelta(seconds=30),
},
)
每周DAG
@dag(
dag_id="weekly_dag",
description="Weekly pipeline",
schedule="0 8 * * 3", # Every Wednesday at 08:00 UTC
start_date=datetime.datetime(2024, 10, 26),
catchup=False,
default_args=default_args,
)
问题 每月 DAG 在 2024 年 11 月 1 日触发时,记录逻辑运行日期 2024 年 10 月 1 日,导致传递给查询的日期为 2024 年 10 月 1 日,而不是预期的 2024 年 11 月 1 日。
对于每周DAG,错过了下一个执行日期(2024-10-30),并且DAG没有被触发。
如何配置两个 DAG 以确保它们以正确的执行日期(它们计划运行的实际日期)运行,以便该日期准确地传递到下游任务和查询?
逻辑日期在安排下一次运行时确定。因此,在您的情况下,逻辑日期将是上个月的日期。这是违反直觉的,但却是预期的行为。在这里阅读更多相关信息:https://www.astronomer.io/docs/learn/scheduling-in-airflow/