阅读126 返回首页    go 阿里云


系统调度参数__数据开发手册_用户操作指南_大数据开发套件-阿里云

目前系统参数有两个,这两个系统参数只要代码里用到,不需要做额外的赋值动作,节点自动调度的时候就会自动替换。系统参数分别为:

${bdp.system.bizdate}

格式yyyymmdd,日常调度实例定时时间的前一天(年月日)。节点每天自动调度实例定时时间年月日减1天。

${bdp.system.cyctime}

格式yyyymmddhh24miss,日常调度实例定时时间(年月日时分秒)。yyyy表示4位数年份,mm表示2位数月份,dd表示2位数天,hh24表示24小时制的时,mi表示2位数分钟,ss表示2位数秒。

■ 入门示例:工作流设置为小时调度,每天00:00-23:59时间段里每隔1小时执行一次。

节点代码如下:

  1. insert overwrite table tb1 partition(ds ='20150304') select
  2. c1,c2,c3
  3. from (
  4. select * from tb2
  5. where ds ='${bdp.system.cyctime}') t
  6. full outer join(
  7. select * from tb3
  8. where ds = '${bdp.system.bizdate}') y
  9. on t.c1 = y.c1;

相应的工作流和节点参数属性配置如下:

调度参数

2015年10月27日当天,工作流调度生成24个实例:

1)第一个实例定时时间为2015-10-27 00:00:00,则:

bdp.system.cyctime替换的结果为20151027000000,

bdp.system.bizdate替换的结果为20151026。

2)第二个实例定时时间为2015-10-27 01:00:00,则:

bdp.system.cyctime替换的结果为20151027010000,

bdp.system.bizdate替换的结果为20151026。

3)以此类推第24个实例定时时间为2015-10-27 23:00:00,则:

bdp.system.cyctime替换的结果为20151027230000,

bdp.system.bizdate替换的结果为20151026。

自定义参数

声明变量方式:${变量名}

自定义参数支持代码中自定义变量名,调度的时候需要给自定义变量名指定赋值。在大数据开发套件中以${变量名}方式来声明变量,在参数中以变量名=调度参数或常量的方式来赋值。

■ 入门示例 给节点代码中需要insert的表名配置成变量${tablename}。

节点代码如下:

  1. insert overwrite table ${tablename} partition(ds ='20150304') select
  2. c1,c2,c3
  3. from (
  4. select * from tb2
  5. where ds ='${bdp.system.cyctime}') t
  6. full outer join(
  7. select * from tb3
  8. where ds = '${bdp.system.bizdate}') y
  9. on t.c1 = y.c1;

对应节点参数属性配置如下图:

自定义参数

节点调度运行的时候,代码里${tablename}替换为‘t_table_001’。

$[…]基于系统参数${bdp.system.cyctime}进行自定义格式

${bdp.system.cyctime}=$[yyyymmddhh24miss]可以任意分解组合,以及指定格式,如定时时间年月日$[yyyymmdd]、$[yyyy-mm-dd]等格式可自定义,定时时间时分秒$[hh24miss]、$[hh24:mi:ss]等格式可自定义。

【注意】:所有参数都不允许包含空格!以cyctime为基准参与运行,具体使用方法见以下说明文档,和oracle的时间运算方式一致。补数据的时候,选中什么业务日期,参数替换结果是业务日期+1天,如果补数据选20140510这个业务日期,执行时cyctime替换结果是20140511。

获取+/-周期的方法:

  • 后N年:$[add_months(yyyymmdd,12*N)]

  • 前N年:$[add_months(yyyymmdd,-12*N)]

  • 后N月:$[add_months(yyyymmdd,N)]

  • 前N月:$[add_months(yyyymmdd,-N)]

  • 后N周:$[yyyymmdd+7*N]

  • 前N周:$[yyyymmdd-7*N]

  • 后N天:$[yyyymmdd+N]

  • 前N天:$[yyyymmdd-N]

  • 后N小时:$[hh24miss+N/24]

  • 前N小时:$[hh24miss-N/24]

  • 后N分钟:$[hh24miss+N/24/60]

  • 前N分钟:$[hh24miss-N/24/60]

■ 入门示例:工作流设置为小时调度,每天00:00-23:59时间段里每隔1小时执行一次。ODPS SQL节点代码如下:

  1. insert overwrite table tb1 partition(ds ='20150304') select
  2. c1,c2,c3
  3. from (
  4. select * from tb2
  5. where ds ='${thishour}') t
  6. full outer join(
  7. select * from tb3
  8. where ds = '${lasthour}') y
  9. on t.c1 = y.c1;

工作流、节点属性如下:

自定义参数配置如下:

thishour=$[yyyy-mm-dd/hh24:mi:ss]

lasthour =$[yyyy-mm-dd/hh24:mi:ss-1/24]

2015年10月27日当天,工作流生成24个实例:

  • 1)第一个实例定时时间为2015-10-27 00:00:00,那么thishour替换的结果为2015-10-27/00:00:00,lasthour替换的结果为2015-10-26/23:00:00。

  • 2)第二个实例定时时间为2015-10-27 01:00:00,那么thishour替换的结果为2015-10-27/01:00:00,lasthour替换的结果为2015-10-27/00:00:00。

  • 3)以此类推第24个实例定时时间为2015-10-27 23:00:00,那么thishour替换的结果为2015-10-27/23:00:00,lasthour替换的结果为2015-10-27/22:00:00。

最后更新:2016-11-24 11:23:48

  上一篇:go ODPS代码编辑器__数据开发手册_用户操作指南_大数据开发套件-阿里云
  下一篇:go 基本介绍__运维中心手册_用户操作指南_大数据开发套件-阿里云