Airflow ETL在不中断捕获的情况下,在没有计划间隔延迟的情况下呈现数据

Airflow ETL在不中断捕获的情况下,在没有计划间隔延迟的情况下呈现数据,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我有一个需要每周二和周五触发的DAG(在上下文中,DAG的目的基本上是每周只在周二和周五发布两次ETL数据) 这个达格人需要追忆过去 我在许多运算符参数中使用{execution_date}}(对于API调用参数,在存储名称中用于保存原始数据的副本,…) 追上来的效果很好,我的问题是现在 由于计划间隔,每周五将ETL上周二的数据(API调用参数使用execution_date),每周二将ETL上周五的数据 我需要的是周二的数据,而不是上周五的数据 我考虑对API调用使用start_date而不是

我有一个需要每周二和周五触发的DAG(在上下文中,DAG的目的基本上是每周只在周二和周五发布两次ETL数据)

这个达格人需要追忆过去

我在许多运算符参数中使用{execution_date}}(对于API调用参数,在存储名称中用于保存原始数据的副本,…)

追上来的效果很好,我的问题是现在

由于计划间隔,每周五将ETL上周二的数据(API调用参数使用execution_date),每周二将ETL上周五的数据

我需要的是周二的数据,而不是上周五的数据

我考虑对API调用使用start_date而不是execution_date,但在这种情况下,Catchup将无法按预期工作

我找不到任何很好的解决方案,在没有计划间隔延迟的情况下,Catchup可以很好地工作并处理当前数据

有什么想法吗

根据andscoop答案编辑:

最好的解决方案是使用下一个执行日期而不是执行日期

不会阻止最新的DAG运行。它仅确定以前未运行的DAG是否将运行到“catchup”

本质上没有延迟,您看到的是报告的执行日期仅显示最后完成的计划间隔

您需要查看气流,以确定所需的准确时间戳。

不会阻止运行最新的DAG。它仅确定以前未运行的DAG是否将运行到“catchup”

本质上没有延迟,您看到的是报告的执行日期仅显示最后完成的计划间隔


您需要查看气流,以确定所需的准确时间戳。

我已尽我所能回答了所提供的信息,但请提供代码片段,我可能会进一步帮助您。我已尽我所能回答了所提供的信息,但请提供一个代码片段,我可能会进一步帮助您。也许我的问题还不够清楚。通过使用执行日期提取数据,星期五运行的DAG将从星期二提取数据(因为星期五运行的DAG的执行日期将等于前一个星期二)。如果我使用开始日期而不是执行日期来提取数据,那么捕获将不再有效,因为对于任何过去的间隔,它将使用相同的日期。我相信我清楚地了解到,我发布到airflow macros的链接提供了执行日期的其他几种替代方法,它们很可能会满足您的需要。请根据您的具体需要查看
下一个执行日期
上一个执行日期
。如果这些不符合这些需要,您将需要考虑编写自定义宏。代码示例将帮助我提供更准确的答案。你说得对,下一个执行日期可能是一个有趣的解决方案,因为它将确保周五运行的DAG将获得周五的数据,并且不会破坏捕获。谢谢,也许我的问题不够清楚。通过使用执行日期提取数据,星期五运行的DAG将从星期二提取数据(因为星期五运行的DAG的执行日期将等于前一个星期二)。如果我使用开始日期而不是执行日期来提取数据,那么捕获将不再有效,因为对于任何过去的间隔,它将使用相同的日期。我相信我清楚地了解到,我发布到airflow macros的链接提供了执行日期的其他几种替代方法,它们很可能会满足您的需要。请根据您的具体需要查看
下一个执行日期
上一个执行日期
。如果这些不符合这些需要,您将需要考虑编写自定义宏。代码示例将帮助我提供更准确的答案。你说得对,下一个执行日期可能是一个有趣的解决方案,因为它将确保周五运行的DAG将获得周五的数据,并且不会破坏捕获。谢谢