DataWorks ODPS SQL任务中使用调度参数是什么?
在DataWorks中,ODPS SQL任务中使用调度参数是一种在任务调度过程中,动态传递参数并控制任务执行的方式。通过使用调度参数,可以在同一个任务中,根据不同的调度场景和需求,传递不同的参数值,以实现任务的灵活控制和定制化执行。
调度参数可以在DataWorks任务的调度配置页面中进行设置,具体步骤如下:
进入任务调度配置页面:在DataWorks控制台中,选择需要设置调度参数的ODPS SQL任务,在任务卡片右侧点击“进入”,进入任务的调度配置页面。
设置调度参数:在任务调度配置页面中,可以看到任务的调度周期、调度时间和调度参数等信息。在“调度参数”栏中,可以设置任务需要传递的参数和对应的值。例如,设置参数名为“date”,参数值为“20220721”。
在任务中使用调度参数:在ODPS SQL任务中,可以使用${param_name}的方式,引用调度参数的值。例如,在SQL语句中使用${date}引用调度参数“date”的值。在任务执行时,调度参数的值会被自动替换成指定的值。
在DataWorks的ODPS SQL任务中,调度参数是一种用于在任务运行时传递参数值的机制。它允许你在调度任务时动态地设置特定的参数值,以满足不同场景下的需求。
通过使用调度参数,可以实现以下目标:
灵活性:通过将参数值作为输入,可以根据需要在任务运行时动态调整行为或配置。这样就可以避免硬编码和修改任务代码,提高任务的灵活性和可维护性。
复用性:通过定义通用的任务模板并使用调度参数,可以在不同场景中多次重用相同的任务。只需在每次调度时设置不同的参数值,即可适应不同的环境和需求。
安全性:使用调度参数可以避免在任务代码中硬编码敏感信息,如密码、密钥等。而是通过参数进行传递,提供了更安全的方式来处理敏感数据。
在DataWorks的ODPS SQL任务中,可以通过${param_name}
的方式引用调度参数。具体步骤如下:
${param_name}
。例如:SELECT *
FROM your_table
WHERE date = '${dt}';
在以上示例中,'${dt}'
是一个调度参数,用于在运行任务时传递日期值。
在DataWorks中创建一个ODPS SQL任务,并在任务配置的右侧找到“调度参数”选项。点击“添加参数”按钮,输入参数名称(如dt
)和初始值。
在调度任务时,可以为每次运行设置不同的参数值。在任务调度页面上,找到“调度参数”部分,并为每个参数指定对应的值。
【调度参数分类】 根据调度参数能否在代码中直接使用可以分为:系统内置变量,自定义参数。
A1:调度参数配置:year=$[yyyy-15/24/60] month=$[yyyymm-15/24/60] day=$[yyyymmdd-15/24/60] hour=$[hh24-15/24/60] mi=$[mi-15/24/60]
实现效果:
定时时间为20210727000500的取到的调度参数如下
SKYNET_PARAVALUE=year=2021 month=202107 day=20210726 hour=23 mi=50:
定时时间为20210727003000取到的调度参数如下
SKYNET_PARAVALUE=year=2021 month=202107 day=20210727 hour=00 mi=15:
Q2:如何结合调度参数取上个月的最后一天 > >A2:相关语料“结合调度参数取上个月最后一天” > --- 【相关文档:】 - 调度参数配置 - DataWorks:通过业务时间维度来看自定义参数“[ ]”与“{ }”的区别
【常用调度参数列表】假设定时时间是2022-10-01 00:10:59
取昨天的年月日:arg=$[yyyymmdd-1] 或arg=$[yyyy-mm-dd-1]或arg=$[yyyy/mm/dd-1]等 调用unknown
取昨天的年月日时分秒:返回值2022-09-31 00:10:59 需配置两个参数arg1=$[yyyymmdd-1] arg2=$[hh24:mi:ss] 调用'unknown unknown'
取今天的年月日: arg=$[yyyymmdd]等
取今天的年月日时分秒:返回值2022-10-01 00:10:59 配置两个参数arg1=$[yyyymmdd] arg2=$[hh24:mi:ss] 调用'unknown unknown'
取15分钟前的年、月、日、小时、分钟:year=$[yyyy-15/24/60] month=$[yyyymm-15/24/60] day=$[yyyymmdd-15/24/60] hour=$[hh24-15/24/60] mi=$[mi-15/24/60]
取1小时前的日、小时:day=$[yyyymmdd-1/24] hour=$[hh24-1/24]
取昨天时间区间:beginDateTime=$[yyyymmdd-1]000000 endDateTime=$[yyyymmdd]000000
取上一小时时间区间:beginDateTime=$[yyyymmddhh24-1/24]0000 endDateTime=$[yyyymmddhh24]0000
,此回答整理自钉群“DataWorks交流群(答疑@机器人)”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。