Dataphin通过各个节点的调度依赖配置结果,有序的运行业务流程中各个节点,保障业务数据有效、适时地产出。本文为您介绍调度依赖实现流程与主要配置原则。
背景信息
调度依赖就是节点间的上下游依赖关系,在Dataphin中,上游任务节点运行完成且运行成功,下游任务节点才会开始运行。配置调度依赖后,可以保障调度任务在运行时能获取到正确的数据(当前节点依赖的上游节点成功运行后,Dataphin通过节点运行的状态识别到上游表的最新数据已产生,下游节点再去取数)。避免下游节点取数据时,上游表数据还未正常产出,导致下游节点取数时出现问题。
操作步骤
- 在Dataphin首页的顶部菜单栏中,选择研发 > 数据研发。 
- 在开发页面的顶部菜单栏选择项目(Dev-Prod模式需要选择环境)。 
- 在左侧导航栏中选择数据处理 > 计算任务。 
- 在计算任务列表中,单击目标计算任务,打开对应计算任务页签。 
- 单击页面右侧边栏的属性,打开属性面板,并在调度依赖区域内配置以下参数。 - 上游依赖 - 自动解析 - 当节点的任务类型为SQL时,您可以单击自动解析,Dataphin将根据任务代码自动解析获取上游任务和输出表。解析后将在上游依赖列表中添加解析出来的全部依赖表。您可查看解析出的依赖表详情或进行编辑和删除操作。更多信息,请参见自动解析流程。 
 说明- 自动解析出的输入表如果存在多个产出任务,默认将所有产出任务作为上游依赖。 
- 解析出的所有依赖表,依赖周期默认为本周期。 
 - 如果代码中引用项目变量或不指定项目,则系统默认解析为生产项目名,以保证生成调度的稳定性。例如,开发项目名称为 - onedata_dev:- 如果代码里指定 - select * from s_order,则调度解析依赖为- onedata.s_order。
- 如果代码里指定 - select * from ${onedata}.s_order,则调度解析依赖为- onedata.s_order。
- 如果代码里指定 - select * from onedata.s_order,则调度解析依赖为- onedata.s_order。
- 如果代码里指定 - select * from onedata_dev.s_order,则调度解析依赖为- onedata_dev.s_order。
 
 
- 添加根节点 - 若任务无对应上游依赖时,您可单击添加根节点作为当前任务的上游依赖。 说明- 每个租户或企业在初始化时都会有一个以virtual_root_node开头的虚拟根节点。 
- 添加本节点上周期 - 即该节点任务的调度需要依赖于本节点上一周期(前1天或前n小时)运行成功。 
- 添加依赖 - 若自动解析无法解析出调度依赖关系或自动解析生成的上游依赖配置与实际应用不符时,您可以手动单击+添加依赖添加节点的上游依赖。 重要- 添加依赖时,物理节点和逻辑表节点的依赖周期与依赖策略自动使用系统推荐的最佳设置。若您需要修改,您可以单击依赖列表  编辑单个依赖的依赖周期和依赖策略。 编辑单个依赖的依赖周期和依赖策略。- 依赖周期:上游任务实例的定时运行时间(起调时间)区间范围。 一般情况下为当日,即区间范围为当日[00:00~24:00)。 
- 依赖策略:某些依赖周期内,可能存在多个实例,需要指定依赖策略。 只有一个实例时,依赖策略可以设置为任意选项。为了兼容上游任务可能的调度设置修改,仅支持相对路径策略。 
 
- 跨周期依赖的默认策略,请参见附录2:跨周期依赖默认策略。 
 - 添加物理节点依赖 - 单击添加依赖,选择物理节点。  
- 在添加依赖-物理节点对话框中,选择一个或多个节点。可通过项目、节点类型、节点名称或输出表明来筛选目标节点。 
- 单击确定。 
 
- 添加逻辑表节点 - 单击添加依赖,选择逻辑表节点。 
- 在添加依赖-逻辑表节点对话框中,选择一个或多个节点。可通过逻辑表类型、所属的板块、逻辑表名来筛选目标节点。 
- (可选)在节点列表中,单击目标节点依赖字段列的  图标,可查看逻辑表所拥有的表字段。 图标,可查看逻辑表所拥有的表字段。
- 单击确定。 
 
 
 
- 本节点输出 - 系统将为您所创建的节点自动生成输出名,若您需添加多个输出名,您可单击自动生成输出名。 重要- 系统使用输出名构建调度依赖图,系统将自动生成输出名,不建议人工干预设置。 
 
- 单击确定,即可完成调度依赖配置。 
依赖周期与依赖策略预览
- 单击目标离线计算任务的属性,在属性面板中定位至调度依赖区域。 
- 在调度依赖区域的上游依赖列表中,单击目标依赖操作列的  图标。 图标。
- 在编辑依赖对话框中,查看依赖的节点名称、依赖周期、依赖策略、节点依赖周期预览等信息。 - 依赖周期:上游任务实例的定时运行时间(起调时间)区间范围。一般情况下为当日,即区间范围为当日[00:00~24:00)。 
- 依赖策略:某些依赖周期内,可能存在多个实例,需要指定依赖策略。 只有一个实例时,依赖策略可以设置为任意选项。为了兼容上游任务可能的调度设置修改,仅支持相对路径策略。 
- 节点依赖周期预览:查看指定业务日期的当前节点实例列表和所选上游节点的实例列表。  - 区块 - 说明 - ①所选上游节点的实例列表 - 业务日期:根据依赖周期和所选的当前节点业务日期决定。 - 依赖周期为本周期(当日):业务日期与所选的当前节点业务日期一致。 
- 依赖周期为上周期(前1日):业务日期为所选的当前节点业务日期 - 1天。 
- 依赖周期为前N日:业务日期为所选的当前节点业务日期 - N天。 
- 依赖周期为最近24小时:如果包含的实例跨了两个业务日期,则业务日期展示为 - {yyyy-MM-dd ~ yyyy-MM-dd}。
 
- 实例列表:展示业务日期下,所选上游节点的总实例数。 - 当业务日期下,总实例数小于等于5时,实例列表中展示所有实例。 
- 当业务日期下,总实例数大于5时:可单击展开全部查看全部实例。 - 如果当前左侧(所选上游节点实例列表)实例被右侧列表(当前节点的实例列表)当前选中的实例所依赖,且在左侧列表中为第一个实例或最后一个实例,则列表中展示第一个实例和最后一个实例。 
- 如果当前左侧(所选上游节点实例列表)实例被右侧列表(当前节点的实例列表)当前选中实例所依赖,但不是第一个实例或最后一个实例,则列表中展示第一个实例、被右侧选中实例所依赖的实例和最后一个实例。 
 
- 实例列表中按照 - 实例n ({实例定时调度时间})格式,依次展示实例,其中n从1开始递增。
 
 - ②当前节点的实例列表 - 所选业务日期下,当前节点的总实例数。 - 当所选业务日期下,总实例数小于等于5时,实例列表中展示所有实例;当总实例数大于5时,实例列表中仅展示第一个实例和最后一个实例,可单击展开全部查看全部实例。列表中默认选中第一个实例(实例1),可单击实例切换选中实例。 - 实例列表中按照 - 实例n ({实例定时调度时间})格式,依次展示实例,其中n从1开始递增。- ③右侧选中实例依赖左侧实例的连线 - 当依赖策略为第一个实例、最后一个实例、向后最近一个实例或向前最近一个实例时,连线为左侧(所选上游节点实例列表)单个实例与右侧(当前节点的实例列表)选中实例的单条连线。 
- 当依赖策略为全部实例时,左侧(所选上游节点实例列表)实例将被全部选中,此时连线代表左侧(所选上游节点实例列表)所有实例为右侧(当前节点的实例列表)选中实例的全部依赖。 
 
 
附录1:初始默认依赖周期和依赖策略
| 本节点调度周期 | 上游节点调度周期 | 上游节点是否自依赖 | 默认依赖周期 | 默认依赖策略 | 
| 日/周/月 | 日 | 是/否 | 本周期(当日) | 最后一个实例 | 
| 日/周/月 | 小时/分钟 | 否 | 本周期(当日) | 全部实例 | 
| 日/周/月 | 小时/分钟 | 是 | 本周期(当日) | 最后一个实例 | 
| 月/周/日/小时/分钟 | 月/周 | 是 | 本周期(当日) | 最后一个实例 | 
| 月/周/日/小时/分钟 | 月/周 | 否 | 本周期(当日) | 最后一个实例 | 
| 小时/分钟 | 日 | 是/否 | 本周期(当日) | 最后一个实例 | 
| 小时/分钟 | 小时/分钟 | 是/否 | 本周期(当日) | 最后一个实例 | 
附录2:跨周期依赖默认策略
下表中,-表示不涉及。
| 本节点调度周期 | 上游节点 | 上游节点调度周期 | 上游节点是否自依赖 | 默认依赖周期 | 
| 月 | 本节点(自依赖) | - | - | 上周期(前 1 日) | 
| 周 | 本节点(自依赖) | - | - | 上周期(前 1 日) | 
| 日 | 本节点(自依赖) | - | - | 上周期(前 1 日) | 
| 小时 | 本节点(自依赖) | - | - | 最近 24 小时 | 
| 分钟 | 本节点(自依赖) | - | - | 最近 24 小时 | 
| 日/周/月 | 非本节点 | 日 | - | 本周期(当日) | 
| 日/周/月 | 非本节点 | 小时/分钟 | 否 | 本周期(当日) | 
| 日/周/月 | 非本节点 | 小时/分钟 | 是 | 本周期(当日) | 
| 月/周/日/小时/分钟 | 非本节点 | 月/周 | 是 | 本周期(当日) | 
| 月/周/日/小时/分钟 | 非本节点 | 月 | 否 | 本周期(当日) | 
| 月/周/日/小时/分钟 | 非本节点 | 周 | 否 | 本周期(当日) | 
| 小时/分钟 | 非本节点 | 日 | - | 本周期(当日) | 
| 小时/分钟 | 非本节点 | 小时/分钟 | - | 本周期(当日) |