ETL 呈现数据时没有计划间隔延迟,同时不会中断追赶

ETL present data without the schedule interval delay while not breaking the Catchup

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

这个 DAG 需要赶上过去。

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

Catchup 效果很好,我的问题是现在。

由于调度间隔,每个星期五它会ETL 上一个星期二的数据(使用execution_date 作为API 调用参数),每个星期二它会ETL 上一个星期五的数据。

我需要的是星期二 运行 获取本星期二而不是上星期五的数据。

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

我没有找到任何漂亮的解决方案,其中 Catchup 运行良好并且当前数据在没有计划间隔延迟的情况下得到处理...

有什么想法吗?

编辑基于和独家答案:

最佳解决方案是使用 next_execution_date 而不是 execution_date

Catchup 不会阻止最新的 DAG 运行ning。它只决定以前的非运行 DAGs是否会运行 "catchup".

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

您需要查看 Airflow macros 以模板化您需要的确切时间戳。