ETL呈现数据而没有调度间隔延迟,同时不中断追赶

时间:2018-08-01 03:38:21

标签: airflow airflow-scheduler

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

此DAG需要赶上过去。

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

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

由于计划间隔,每个星期五将ETL上一个星期二的数据(使用execute_date作为API调用参数),每个星期二将ETL上一个星期五的数据。

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

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

在Catchup运作良好且处理当前数据而没有计划间隔延迟的情况下,我找不到任何不错的解决方案...

有什么想法吗?

编辑基于andscoop的答案:

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

1 个答案:

答案 0 :(得分:4)

Catchup不会阻止最新的DAG运行。它仅确定先前未运行的DAG是否将运行到“追赶”状态。

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

您将需要研究Airflow macros,以模板化所需的确切时间戳。