依赖于任务的 DAG

本页概述了启用任务相关有向无环图 (DAG) 的步骤,以便在单个 DAG 内指定 SQL 表节点之间的任务依赖项,而不是依赖于多个 DAG 之间的 cron 调度。可自定义的设置用于生成 Managed Service for Apache Airflow DAG,其中包含多个相互依赖的表刷新节点。Cortex Framework 可为依赖于任务的 SAP DAG(ECC 和 S/4HANA)提供建议的设置。不过,您可以进一步自定义这些 DAG,也可以为任何数据源定义依赖于任务的 DAG。

启用依赖于任务的 DAG

  1. 修改 config.json 文件,将 enableTaskDependencies 字段设置为 True。此设置会激活 Cortex Framework,以搜索带有后缀 _task_dep.yaml 的依赖于任务的报告设置文件。
  2. 为每个需要任务依赖项的数据源创建一个带有后缀 _task_dep.yaml 的专用报告设置文件。如需了解详情,请参阅定义任务相关的报告设置
  3. 通过将 table_setting.dag_setting 添加为 table 类型节点的新部分,自定义任务依赖项。 如需了解详情,请参阅指定和自定义任务依赖项
  4. 使用标准构建流程构建 Cortex Framework。
  5. 检查位于目标存储桶中 dags/data_source/reporting/task_dep_dags/dag_name 下的已生成文件。此文件夹将包含一个定义了 Managed Airflow DAG 的 Python 文件,以及一个 SQL 文件,其中包含 DAG 中每个表节点的刷新查询。
  6. 将文件复制到 Managed Airflow DAG 存储桶,以使用标准构建流程部署 Cortex Framework。

定义任务相关的报告设置

对于需要任务依赖项的每个数据源,Cortex Framework 都需要带有后缀 _task_dep.yaml 的任务相关报告设置文件。创建和更新这些文件时,请考虑以下事项:

如需详细了解报告设置文件中的可用字段,请参阅 dag_types.py

指定和自定义任务依赖项

通过向 table 类型节点添加 table_setting.dag_setting 作为新部分,自定义任务依赖项:

    - sql_file: dependent_table2.sql
      type: table
      table_setting:
        dag_setting:
          name: "dag1"
          parents: ["dependent_table1.sql"]
  • DAG 设置包含两个字段:

    • name依赖于任务的 DAG 中所有节点的必需字符串,用于指定表节点所属的 DAG 的名称。这包括被 DAG 内的其他节点引用为父级的顶级节点。
    • parents:一个可选的字符串列表,包含同一 DAG 内其他表格节点的 sql_file 路径。这些父级必须成功运行,然后才能触发节点。

其他注意事项

  • 没有定义父节点的节点被视为顶级节点,将在 DAG 开始时运行。
  • 至少一个顶级节点必须定义了 table_setting.load_frequency,该值将用作 DAG 调度。
  • 如果多个顶级节点都定义了 load_frequency,则它们必须相同。
  • 定义了 parents 的子节点不能定义 load_frequency
  • 未定义 dag_setting 的节点将像以前一样生成,即生成一个包含单个表刷新节点且没有任务依赖关系的 DAG。
  • 其他节点类型(例如视图和脚本)无法包含在任务依赖型 DAG 中,此类 DAG 仅生成包含 DML 的节点来刷新表。