任务依赖型 DAG
本页概述了启用任务依赖项有向无环图 (DAG) 的步骤,以便在单个 DAG 内的 SQL 表节点之间指定任务依赖项,而不是依赖于跨多个 DAG 的 cron 调度。可自定义的设置用于生成包含多个相互依赖的表刷新节点的 Cloud Composer DAG。Cortex Framework 为任务依赖的 SAP DAG(ECC 和 S/4HANA)提供了建议的设置。不过,您可以进一步对其进行自定义,或为任何数据源定义任务依赖 DAG。
启用任务依赖 DAG
- 修改 config.json 文件,将
enableTaskDependencies
字段设置为True
。此设置会启用 Cortex Framework 对后缀为_task_dep.yaml
的任务依赖报告设置文件的搜索。 - 为需要任务依赖项的每个数据源创建一个后缀为
_task_dep.yaml
的专用报告设置文件。如需了解详情,请参阅定义任务依赖的报告设置。 - 将
table_setting.dag_setting
添加为table
类型节点的新部分,以自定义任务依赖项。如需了解详情,请参阅指定和自定义任务依赖项。 - 使用标准构建流程构建 Cortex Framework。
- 检查位于目标存储分区中
dags/data_source/reporting/task_dep_dags/dag_name
下的生成文件。此文件夹将包含用于定义 Cloud Composer DAG 的 Python 文件,以及包含 DAG 中每个表节点的刷新查询的 SQL 文件。 - 将文件复制到 Cloud Composer DAG 存储分区,以使用标准构建流程部署 Cortex Framework。
定义与任务相关的报告设置
对于需要任务依赖项的每个数据源,Cortex Framework 都希望报告设置文件带有 _task_dep.yaml
后缀。创建和更新这些文件时,请考虑以下事项:
- 对于 SAP,您可以自定义并使用提供的设置文件
reporting_settings_ecc_task_dep.yaml
和reporting_settings_s4_task_dep.yaml
。 - 对于其他数据源,请在原始设置旁边创建自己的任务依赖报告设置,例如:
reporting_settings_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 刷新表的节点。