DataWorks中我有个任务是每小时执行一次,同时有个日任务依赖这个小时任务做日统计。但是因为延迟问题,需要将当日0点执行的小时任务数据也加上。我应当如何设置日任务的依赖?
在DataWorks中,您可以设置日任务的依赖关系,以确保当日0点执行的小时任务数据也被包含在日统计中。以下是一些可能有用的设置:
在小时任务中,将输出结果写入到一个新的表中,例如hourly_data
。
在日任务中,将依赖于hourly_data
表的查询语句设置为@daily_upstream
,以确保当日0点执行的小时任务数据也被包含在日统计中。
在日任务中,将查询语句设置为SELECT * FROM hourly_data WHERE date = @daily_time
,其中@daily_time
是一个自定义参数,用于指定当日的日期。
在日任务中,将输出结果写入到一个新的表中,例如daily_data
。
在日任务中,将依赖于daily_data
表的查询语句设置为@daily_upstream
,以确保当日0点执行的小时任务数据也被包含在日统计中。
在日任务中,将查询语句设置为SELECT * FROM daily_data WHERE date = @daily_time
,其中@daily_time
是一个自定义参数,用于指定当日的日期。
通过这些设置,当小时任务执行时,它将输出结果写入到hourly_data
表中,而日任务将依赖于hourly_data
表,并使用@daily_time
参数来指定当日的日期。当日任务执行时,它将输出结果写入到daily_data
表中,而日任务将依赖于daily_data
表,并使用@daily_time
参数来指定当日的日期。这样,当日任务执行时,它将包含当日0点执行的小时任务数据。
可以在日任务中设置两个依赖。一个是依赖前一天的小时任务,另一个是依赖当天0点的小时任务。
假设你的小时任务名称为"HourlyTask",日任务名称为"DailyTask",你可以按照以下步骤设置日任务的依赖:
1、打开DataWorks的任务设计页面,找到"DailyTask"任务。
2、在任务设计页面的左侧面板中,选择"依赖"选项。
3、点击"添加依赖"按钮,选择"任务"类型的依赖。
4、在弹出的对话框中,选择"HourlyTask"任务作为依赖。
5、点击"确定"按钮,完成对"HourlyTask"的依赖设置。
6、再次点击"添加依赖"按钮,选择"任务"类型的依赖。
7、在弹出的对话框中,选择"HourlyTask"任务,并在时间设置中选择当天的0点作为依赖时间。
8、点击"确定"按钮,完成对当天0点"HourlyTask"的依赖设置。
9、确认依赖设置无误后,保存并发布"DailyTask"任务。
通过这样的设置,"DailyTask"任务将会依赖前一天的小时任务和当天0点的小时任务,确保日任务能够包含当天0点的数据。
有以下几种方式可以解决这个问题:
保留上一日最终数据
将前一日的最后一次小时任务数据以某种方式保存下来,作为当日0点执行的日统计的初始数据。
具体可采用:
将小时任务最后一次执行的数据结果写入一个表,日统计任务初始从这个表读取
或者将数据导出到文件,日统计任务首次读取这个文件数据
对小时任务做归档
将每日的小时任务数据以日期分区的方式归档,日统计任务启动时读取相应日期的所有小时数据。
具体可在小时任务结束时:
将结果写入日期分区表,日统计任务union所有分区表数据
或者将结果导出到日期命名的文件,日统计任务合并这些文件数据
在日统计任务启动时重新回溯执行
日统计任务启动时,检查昨日是否有遗漏的小时数据,如果有则重新执行一次。
设定起始执行时间
你可以指定一个小时任务与日任务都以0点为执行起始时间,解决0点前后数据重复的问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。