首页/数据/数据工程与 ETL 速查/Airflow 分支与触发规则

Airflow 分支与触发规则

BranchPythonOperator 按条件选择走哪条分支,未选中分支标记 skipped;trigger_rule 控制上游处于什么状态才执行本任务,如 all_success、all_done、one_failed。

分支算子BranchPythonOperator / @task.branch
跳过语义未选中分支标记 skipped
常用触发规则all_success / all_done / one_success / none_failed
典型用法收尾清理任务用 all_done

分支与收尾示意

分支与收尾示意
from airflow.operators.python import BranchPythonOperator, PythonOperator
from airflow.utils.trigger_rule import TriggerRule

choose = BranchPythonOperator(task_id="choose", python_callable=lambda: "full")
clean = PythonOperator(task_id="clean", python_callable=clean_fn,
                       trigger_rule=TriggerRule.ALL_DONE)
下游任务默认 all_success;上游有 skipped 时也会导致下游跳过,收尾任务记得改 all_done。

易错点

  • 分支函数的返回值必须是下游 task_id,拼错会直接失败
  • 用 all_success 做告警任务,恰好在上游失败时不触发,失去告警意义

数据来源与参考

  • Apache Airflow 官方文档:Branching 与 Trigger Rules
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌