依赖于任务的 DAG
本页概述了启用任务相关有向无环图 (DAG) 的步骤,以便在单个 DAG 内指定 SQL 表节点之间的任务依赖项,而不是依赖于多个 DAG 之间的 cron 调度。可自定义的设置用于生成 Managed Service for Apache Airflow DAG,其中包含多个相互依赖的表刷新节点。Cortex Framework 可为依赖于任务的 SAP DAG(ECC 和 S/4HANA)提供建议的设置。不过,您可以进一步自定义这些 DAG,也可以为任何数据源定义依赖于任务的 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下的已生成文件。此文件夹将包含一个定义了 Managed Airflow DAG 的 Python 文件,以及一个 SQL 文件,其中包含 DAG 中每个表节点的刷新查询。 - 将文件复制到 Managed Airflow 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 类型节点添加 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 的节点来刷新表。