我正在寻求采用Apache Airflow进行ETL流程,以将许多文本文件加载到许多表中。这些ETL始终由外部触发,并且永远不会按预定义的时间表运行。我想做的是可以选择为单个文件/表运行ETL,还是一次加载所有这些文件。
听起来SubDAG是实现此目的的最佳方法。我预想为每个要加载的文件定义一个SubDAG,然后有一个调用所有SubDAG的父DAG。如果我只想加载一个文件,我将使用airflow trigger_dag <subdag_id>
,如果我要加载所有文件,我将使用airflow trigger_dag <parent_dag_id>
。
我在Airflow's documentation中读到:
SubDAG必须具有时间表并已启用。如果SubDAG的时间表设置为
None
或@once
,则SubDAG将成功执行而无需执行任何操作
这听起来可能是个问题,因为我没有使用时间表。我的方法行得通,还是有更好的方法来限制通过Airflow加载哪些文件?