调度参数场景案例
场景 |
取值节点 |
测试返回值 |
取上个月的最后一天。 |
预期返回格式:yyyymmdd 节点类型:ODPS SQL节点为例 调度参数配置:last_month=$[yyyy-mm] 调度参数引用(对调度参数二次处理):SELECT REPLACE(DATEADD(date'${last_month}-01',-1,'dd'),'-',''); |
测试定时时间CYCTIME:20210926000000 返回值:20210831 |
取当前季度 |
预期返回类型:正整数 节点类型:ODPS SQL节点为例 调度参数配置:month=$[mm] 调度参数引用(对调度参数二次处理):SELECT CEIL(INT('${month}')/3); |
测试定时时间CYCTIME:20211025001700 返回值:4 |
取定时时间15分钟前的年、月、日、小时、分钟 |
预期返回格式:年yyyy、月yyyymm、日yyyymmdd、小时hh、分钟mm 节点类型:ODPS SQL节点为例 调度参数配置: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] 调度参数引用:select 'year=${year} month=${month} day=${day} hour=${hour} mi=${mi}'; |
测试定时时间CYCTIME:20210727000500 返回值: year=2021 month=202107 day=20210726 hour=23 mi=50 |
取昨天00:00:00到今天00:00:00区间,间隔时间为1天,精确到秒,格式为yyyymmddhh24miss |
预期返回格式:yyyymmddhh24miss 节点类型:ODPS SQL节点为例 注:离线同步Kafka Reader插件、Loghub Reader插件适用,左闭右开。 调度参数配置:beginDateTime=$[yyyymmdd-1] endDateTime=$[yyyymmdd] 调度参数引用:select '${beginDateTime}000000 ${endDateTime}000000'; 注:当间隔时间配置为1小时时,select '${beginDateTime}0000 ${endDateTime}0000'; |
测试定时时间CYCTIME:20220117002300 返回值:20220116000000 20220117000000 |
FAQ
Q1:当取值节点为离线同步节点等不方便二次处理参数值的节点类型,如何解决?
A1:可以使用赋值节点处理好调度参数,通过节点上下文传递给取值节点(需要对调度参数二次处理的通用解决方案)。
Q2:结合调度参数取值的方式和直接使用MaxCompute日期函数取值有什么区别?
A2:直接使用日期函数取值返回的是计算任务执行机器的时间,不同时间执行同个实例,返回时间会变;结合调度参数取值的方式返回的是和定时时间相关的时间,也就是在任何时候执行同一个实例,返回时间不会变。
Q3:节点中调度参数无论怎么配置且已经提交发布,返回的值始终没有变化。
A3:大概率被同名业务流程参数覆盖,检查业务流程参数,如果不需要可以删除,如果需要节点参数更名。
调度参数调试通用方法
如何测试调度参数配置返回判断是否符合预期?
如图:以ODPS SQL节点为例,橙色测试步骤,绿色配置步骤。date和time的加减规则参见调度参数官方文档。
以下了解:
开发环境冒烟测试,业务日期选2022-01-16 开始时间选00:00 结束时间选01:00
日志中相关参数展示
2022-01-17 12:13:49 INFO SKYNET_BIZDATE=20220116:
2022-01-17 12:13:49 INFO SKYNET_CYCTIME=20220117000000: