首页/数据/数据工程与 ETL 速查/Airflow 数据集驱动调度
本包目录(311 条)

Airflow 数据集驱动调度

数据集(Airflow 2.4 引入的 Dataset,3.x 改名 Asset)把上游产出更新作为下游 DAG 的触发条件,替代按时间硬对齐的 cron;同一数据集被多个 DAG 更新时,下游等齐所有更新才触发。

声明方式schedule=[Dataset("s3://bucket/dw/orders")]
生产者任务用 outlets 声明产出数据集
触发语义数据集更新即产生一次下游运行
版本差异2.4 为 Dataset,3.x 为 Asset

数据集声明示例

数据集声明示例
from datetime import datetime
from airflow.datasets import Dataset
from airflow.decorators import dag, task

orders_ds = Dataset("s3://lake/dw/orders")

@task(outlets=[orders_ds])
def produce_orders():
    pass

@dag(schedule=[orders_ds], start_date=datetime(2026, 1, 1))
def downstream():
    pass
数据集调度适合上游不定时、一到下游就要跑的场景;仍要配兜底超时告警,防止上游整天无产出。

易错点

  • 数据集标识写错(路径或命名空间不一致)会让下游永不触发且无明显报错
  • 数据集触发只表示产生了更新,不校验数据内容是否正确

数据来源与参考

  • Apache Airflow 官方文档:Data-aware scheduling(Datasets / Assets)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌