任务依赖型 DAG

本页概述了启用任务依赖项有向无环图 (DAG) 的步骤,以便在单个 DAG 内的 SQL 表节点之间指定任务依赖项,而不是依赖于跨多个 DAG 的 cron 调度。可自定义的设置用于生成包含多个相互依赖的表刷新节点的 Cloud Composer DAG。Cortex Framework 为任务依赖的 SAP DAG(ECC 和 S/4HANA)提供了建议的设置。不过,您可以进一步对其进行自定义,或为任何数据源定义任务依赖 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 下的生成文件。此文件夹将包含用于定义 Cloud Composer DAG 的 Python 文件,以及包含 DAG 中每个表节点的刷新查询的 SQL 文件。
  6. 将文件复制到 Cloud Composer DAG 存储分区,以使用标准构建流程部署 Cortex Framework。

定义与任务相关的报告设置

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

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

指定和自定义任务依赖项

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

    - 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 刷新表的节点。