Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Airflow 如何获得气流作业的最后两个成功执行日期?_Airflow - Fatal编程技术网

Airflow 如何获得气流作业的最后两个成功执行日期?

Airflow 如何获得气流作业的最后两个成功执行日期?,airflow,Airflow,我需要获取气流作业的最后两个成功执行日期,以便在当前运行中使用。 例子: 执行日期作业状态 2020-05-03成功 2020-05-04失败 2020-05-05成功 问题: 当我在5月6日运行作业时,我应该将5月3日和5日的值放入变量中。可能吗 您可以利用SQLAlchemymagic来检索上次成功运行的execution\u dates from pendulum import Pendulum from typing import List, Dict, Any, Optional fr

我需要获取气流作业的最后两个成功执行日期,以便在当前运行中使用。 例子: 执行日期作业状态 2020-05-03成功 2020-05-04失败 2020-05-05成功

问题:
当我在5月6日运行作业时,我应该将5月3日和5日的值放入变量中。可能吗

您可以利用
SQLAlchemy
magic来检索上次成功运行的
execution\u date
s

from pendulum import Pendulum
from typing import List, Dict, Any, Optional
from airflow.utils.state import State
from airflow.settings import Session
from airflow.models.taskinstance import TaskInstance

@provide_session
def last_n_execution_dates(dag_id: str,
                           task_id: str,
                           n: int,
                           session: Optional[Session]) -> List[Pendulum]:
    task_instances: TaskInstance = (session
                                    .query(TaskInstance)
                                    .filter(TaskInstance.dag_id == dag_id,
                                            TaskInstance.task_id == task_id,
                                            TaskInstance.state == State.SUCCESS)
                                    .order_by(TaskInstance.execution_date.desc())
                                    .limit(n)
                                    .all())
    execution_dates: List[Pendulum] = list(map(lambda ti: ti.execution_date, task_instances))
    return execution_dates
请注意,该代码段仅供参考,未经测试

我已经参考了of的剧本


或者,您可以向Airflow的meta db启动此SQL查询,以检索成功运行的最后n个执行日期

SELECT execution_date
FROM task_instance
WHERE dag_id = 'my_dag_id'
  AND task_id = 'my_task_id'
  AND state = 'success'
ORDER BY execution_date DESC
LIMIT n

对于这个问题的读者,也值得查阅[1]、[2]或以下内容