我希望在Airflow中创建一个转换,并且我想确保自上次运行DAG以来从源中获取所有数据以更新目标表。为此,我希望能够获得成功的最新执行。
我发现了这一点:Apache airflow macro to get last dag run execution time使我到达了最终目标的位置,但是,这仅是DAG上一次执行的时间,无论它是否成功。
SELECT col1, col2, col3
FROM schema.table
WHERE table.updated_at > '{{ last_dag_run_execution_date(dag) }}';
如果执行失败(由于连接或类似原因),则last_dag_run_execution_date(dag)将更新,但我们错过了上一次DAG运行的执行。
理想情况下,这将拉出最近的未失败执行。或者,如果有人对我如何实现此想法有任何想法,请告诉我
答案 0 :(得分:1)
我最终将引用的问题中的函数更改为使用Latest_execution_date,这是Airflow中的预定义宏,例如:
def get_last_dag_run(dag):
last_dag_run = dag.latest_execution_date
if last_dag_run is None:
return '2013-01-01'
else:
return last_dag_run
目前似乎正在为我工作。