具有DAG和任务的ETL模型

时间:2019-07-17 14:09:52

标签: python etl airflow

我正在尝试使用Airflow为我的ETL作业建模。所有作业都具有相同的结构:

  1. 从事务数据库中提取(N个提取,每个读取1 / N的表)
  2. 然后转换数据
  3. 最后,将数据插入到分析数据库中

所以E >> T >> L

Company Routine用户>>产品>>订单必须每2小时运行一次。然后,我将获得来自用户和购买的所有数据。

如何建模?

  • Company Routine(用户>>产品>>订单)必须是DAG,并且每个作业必须是单独的任务?在这种情况下,我该如何对任务中的每个步骤(E,T,L)建模并使其表现得像Airflow中的“子任务”?
  • 还是每个工作都是单独的DAG?在这种情况下。我怎么说我必须每2小时运行一次Company Routine(USER >> PRODUCT >> ORDER),它们具有这些依赖性。因为正如我所看到的,我们只能在DAG中的任务之间设置cron时间和相关性。

图:

Diagram

现在,我将每个Company Routine(用户>>产品>>订单)用作DAG,并且每个作业必须是一个单独的任务。

1 个答案:

答案 0 :(得分:0)

第二个选项更好(将Company Routine的每个子工作流作为顶级DAG),因为

  • 顶级DAG可以独立地重新运行(以防万一只需重新运行其中的一个),而您不能仅重新运行DAG的一部分(如果您将它们建模为整体式) DAG)
  • 回填同样适用

但是随后,您也必须将这些顶级DAG链接在一起(以便它们一个接一个地运行)。为此,请参见Wiring top-level DAGs together