DataWorks_数据开发_调度参数场景案例

调度参数场景案例

场景

取值节点

测试返回值

取上个月的最后一天。

预期返回格式: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]
注:如需间隔时间1小时,请配置beginDateTime=$[yyyymmddhh24-1/24] endDateTime=$[yyyymmddhh24]。

调度参数引用:select '${beginDateTime}000000 ${endDateTime}000000';

注:当间隔时间配置为1小时时,select '${beginDateTime}0000 ${endDateTime}0000';


测试定时时间CYCTIME:20220117002300

返回值:20220116000000 20220117000000
注:当间隔时间配置为1小时时,返回20220116230000 20220117000000




FAQ

Q1:当取值节点为离线同步节点等不方便二次处理参数值的节点类型,如何解决?
A1:可以使用赋值节点处理好调度参数,通过节点上下文传递给取值节点(需要对调度参数二次处理的通用解决方案)。


Q2:结合调度参数取值的方式和直接使用MaxCompute日期函数取值有什么区别?

A2:直接使用日期函数取值返回的是计算任务执行机器的时间,不同时间执行同个实例,返回时间会变;结合调度参数取值的方式返回的是和定时时间相关的时间,也就是在任何时候执行同一个实例,返回时间不会变。


Q3:节点中调度参数无论怎么配置且已经提交发布,返回的值始终没有变化。

A3:大概率被同名业务流程参数覆盖,检查业务流程参数,如果不需要可以删除,如果需要节点参数更名。



调度参数调试通用方法

如何测试调度参数配置返回判断是否符合预期?

如图:以ODPS SQL节点为例,橙色测试步骤,绿色配置步骤。date和time的加减规则参见调度参数官方文档

DataWorks_数据开发_调度参数场景案例


以下了解:
开发环境冒烟测试,业务日期选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:

DataWorks_数据开发_调度参数场景案例


附录

上一篇:Linux磁盘分区之fdisk命令


下一篇:ODPS_数据倾斜查看key分布的通用方案_200628