Airflow 2.10.3:如何查询提取任务实例等控制台相关信息?
Airflow 2.10.3 元数据SQL查询指南
核心表对应关系(匹配控制台页面)
Airflow的元数据都存在你找到的scheduler schema里,控制台各页面对应的核心表如下:
- DAG运行页面 →
dag_run - 任务实例页面 →
task_instance(核心表,包含你要的任务时间、状态信息) - 作业页面 →
job - 审计日志页面 →
log - SLA错过页面 →
sla_miss
任务实例核心信息查询(启动/结束时间、状态等)
直接用以下SQL提取任务的关键属性,可按需添加筛选条件:
SELECT ti.task_id, d.dag_id, ti.start_date, ti.end_date, ti.state, -- 状态值:success/failed/running/queued等 ti.duration, -- 任务运行时长(秒) ti.try_number, -- 重试次数 ti.execution_date FROM scheduler.task_instance ti JOIN scheduler.dag d ON ti.dag_id = d.dag_id -- 示例筛选条件:指定DAG、时间范围 WHERE d.dag_id = '你的DAG_ID' AND ti.execution_date >= '2024-01-01' ORDER BY ti.execution_date DESC, ti.start_date DESC;
其他控制台页面数据查询
DAG运行数据
SELECT dr.dag_id, dr.run_id, dr.state, dr.start_date, dr.end_date, dr.execution_date, dr.created_at FROM scheduler.dag_run dr WHERE dr.state IN ('success', 'failed', 'running') ORDER BY dr.execution_date DESC;
作业数据
SELECT job_id, job_type, start_date, end_date, state, hostname, unixname FROM scheduler.job WHERE start_date >= '2024-01-01' ORDER BY start_date DESC;
审计日志数据
SELECT dttm, dag_id, task_id, event, -- 事件类型:task_instance_success/task_instance_failed等 execution_date, owner, extra FROM scheduler.log WHERE event IN ('task_instance_success', 'task_instance_failed', 'dag_run_created') ORDER BY dttm DESC;
SLA错过数据
SELECT sm.dag_id, sm.task_id, sm.execution_date, sm.sla_missed_time, sm.description, sm.notification_sent -- 是否已发送通知 FROM scheduler.sla_miss sm JOIN scheduler.dag d ON sm.dag_id = d.dag_id ORDER BY sm.sla_missed_time DESC;
工具操作说明
- DBeaver:连接PostgreSQL数据库后,直接切换到
schedulerschema,打开SQL编辑器粘贴上述语句执行即可。 - Qlik:创建PostgreSQL数据源,通过自定义SQL加载上述查询结果,或直接加载对应表后做数据关联分析。
内容的提问来源于stack exchange,提问作者SamCle88
相关产品推荐
相关产品推荐

