首页/数据/数据工程与 ETL 速查/Airflow 动态任务映射与 TaskGroup

Airflow 动态任务映射与 TaskGroup

动态任务映射用 task.expand(...) 按运行时列表生成一批并行任务(如按分区展开);TaskGroup 做界面上的分组折叠,不改变依赖语义,两者常配合管理复杂 DAG 的图结构。

动态映射partial(...).expand(param=[...])
数量保护可配置映射任务数上限
TaskGroup逻辑分组、界面折叠显示
依赖声明可整体引用 group 或逐个任务声明

expand 与 TaskGroup

expand 与 TaskGroup
@task
def load(part: str) -> None:
    print(part)

@task_group(group_id="loads")
def make_group(parts):
    load.expand(part=parts)

make_group(["dt=2026-10-09", "dt=2026-10-10"])
映射任务数在运行前就能从入参推出,不要把展开列表写成会随数据无限增长的来源。

易错点

  • expand 参数为空列表时映射任务不生成,下游需要显式处理零分区分支
  • 把 TaskGroup 当成执行顺序控制,实际依赖仍要靠关系声明

数据来源与参考

  • Apache Airflow 官方文档:Dynamic Task Mapping 与 TaskGroups
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌