閱讀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 基本介紹__運維中心手冊_用戶操作指南_大數據開發套件-阿裏雲