全部產品
Search
文件中心

DataWorks:自訂參數取值差異對比

更新時間:Jun 19, 2024

自訂參數分為系統內建參數、自訂參數${..}、自訂參數$[...]、常量,不同類別的參數賦值格式及取值不同。本文為您介紹不同格式自訂參數的取值差異對比情況。

不同格式自訂參數的應用對比

以目前時間為2021年11月01日,任務每天00:00定時運行,樣本不同格式自訂參數的賦值情況,具體如下表。
說明 假設代碼引用方式均為pt=${datetime}
參數格式描述調度參數賦值參數替換結果
${yyyymmdd}擷取業務時間。datetime=${yyyymmdd}datetime=20211031
$[yyyymmddhh24miss]擷取定時時間,精確到秒。datetime=$[yyyymmddhh24miss]datetime=20211101000000
$bizdate擷取業務時間。datetime=$bizdatedatetime=20211031
$cyctime擷取定時時間,精確到秒。datetime=$cyctimedatetime=20211101000000
$gmtdate擷取目前時間,精確到天。datetime=$gmtdate datetime=20211101
$bizmonth擷取業務月份。datetime=$bizmonth
  • 當業務時間與當前月份一致時,$bizmonth的值為目前時間上個月的月份。
  • 當業務時間與當前月份不一致時,$bizmonth的值為業務時間的月份。
樣本目前時間為2021年11月01日
  • 如果業務時間為2021年11月02日(當前月份),則datetime=202110
  • 如果業務時間為2021年10月31日(非當前月份),則datetime=202110

${…}和$[…]參數的功能差異

${…}和$[…]參數的功能差異如下表所示。
對比項${…}參數$[…]參數
時間基準$bizdate的取值時間為基準參與運算。

$bizdate為業務日期,預設為目前時間的前一天。

$cyctime的時間為基準參與運算。

$cyctime為任務的定時調度時間。例如,任務的定時調度時間為當天的00:30,即時間格式為yyyy-mm-dd 00:30:00

補資料功能補資料時選擇的業務日期和調度參數的替換結果保持一致。執行補資料時,調度參數替換結果為選擇的業務日期+1天。

例如,補資料選擇的業務日期為20220315,則執行補資料時,$cyctime參數的替換結果為20220316

時間精確度精確到天。

取N年前、N月前等時間資料時,建議使用${...}自訂運算式。

精確到秒。

取N小時前、N分鐘前等時間資料時,建議使用$[...]自訂運算式。例如:$[yyyymmdd-1-1/24]表示取前一天定時時間前一個小時對應的時間資料。

說明 $[…]參數不支援${yyyy-mm-dd-1/24}等用法,建議您使用$[yyyy-mm-dd-1-1/24]
本文以ODPS SQL節點為例,假設目前時間為2021年07月20日10時30分00秒,為您展示${…}和$[…]參數的時間取值配置,具體如下表。
時間取值${…}參數$[…]參數
取年份:2021
  • 調度參數賦值:datetime=${yyyy}
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=${yyyy}=2021
  • 調度參數賦值:datetime=$[yyyy]
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=$[yyyy]=2021
取年份:21
  • 調度參數賦值:datetime=${yy}
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=${yy}=21
  • 調度參數賦值:datetime=$[yy]
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=$[yy]=21
取年份:2020
  • 調度參數賦值:datetime=${yyyy-1}
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=${yyyy-1}=2020
不支援
取月份:07
  • 調度參數賦值:datetime=${mm}
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=${mm}=07
  • 調度參數賦值:datetime=$[mm]
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=$[mm]=07
取日期(天):20
  • 調度參數賦值:datetime=${dd}
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=${dd}=20
  • 調度參數賦值:datetime=$[dd]
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=$[dd]=20
取日期:2021年06月20日
  • 調度參數賦值:datetime=${yyyy-mm-dd-29}
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=${yyyy-mm-dd-29}=2021-06-20
  • 調度參數賦值:datetime=$[add_months(yyyymmdd,-1)]
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=$[add_months(yyyymmdd,-1)]=2021-06-20
取日期:2021年07月19日
  • 調度參數賦值:datetime=${yyyy-mm-dd}
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=${yyyy-mm-dd}=2021-07-19
  • 調度參數賦值:datetime=$[yyyy-mm-dd-1]
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=$[yyyy-mm-dd-1]=2021-07-19
取日期:2020年07月20日
  • 調度參數賦值:datetime=${yyyy-mm-dd-364}
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=${yyyy-mm-dd}=2020-07-20
  • 調度參數賦值:datetime=$[add_months(yyyymmdd,-12*1)]
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=$[add_months(yyyymmdd,-12*1)]=2020-07-20
取時間:10:30:00不支援
  • 調度參數賦值:datetime=$[hh24:mi:ss]
  • 代碼引用:pt=${datetime}
  • 參數替換結果:pt=$[hh24:mi:ss]=10:30:00
取時間:2021-07-20 10:30:00不支援
  • 調度參數賦值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss]
    說明 您需要自訂兩個參數datetime1和datetime2,兩個參數間使用一個空格分隔。
  • 代碼引用:pt=${datetime1} ${datetime2}
  • 參數替換結果:
    • datetime1=$[yyyy-mm-dd]=2021-07-20
    • datetime2=$[hh24:mi:ss]=10:30:00
    • pt=2021-07-20 10:30:00
取時間:2021-07-20 10:29:00不支援
  • 調度參數賦值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss-1/24/60]
    說明 您需要自訂兩個參數datetime1和datetime2,兩個參數間使用一個空格分隔。
  • 代碼引用:pt=${datetime1} ${datetime2}
  • 參數替換結果:
    • datetime1=$[yyyy-mm-dd]=2021-07-20
    • datetime2=$[hh24:mi:ss-1/24/60]=10:29:00
    • pt=2021-07-20 10:29:00
取時間:2021-07-20 09:30:00不支援
  • 調度參數賦值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss-1/24]
    說明 您需要自訂兩個參數datetime1和datetime2,兩個參數間使用一個空格分隔。
  • 代碼引用:pt=${datetime1} ${datetime2}
  • 參數替換結果:
    • datetime1=$[yyyy-mm-dd]=2021-07-20
    • datetime2=$[hh24:mi:ss-1/24]=09:30:00
    • pt=2021-07-20 09:30:00
取前一天時間,精確到秒,且年月日與時分秒之間無空格:

2021071910:30:00

不支援
  • 調度參數賦值:datetime=$[yyyymmddhh24miss-1]
  • 代碼引用:pt=${datetime}
  • 參數替換結果:
    • datetime=$[yyyymmddhh24miss-1]=2021071910:30:00
    • pt=2021071910:30:00
取前一天時間,精確到秒,且年月日與時分秒之間有空格:

20210719 10:30:00

不支援
重要 調度參數賦值運算式中不支援空格,您可以使用兩個調度參數,然後在代碼引用時使用空格進行拼接。
  • 調度參數賦值:datetime1=$[yyyymmdd-1] datetime2=$[hh24:mi:ss]
    說明 您需要自訂兩個參數datetime1和datetime2,兩個參數間使用一個空格分隔。
  • 代碼引用:pt=${datetime1} ${datetime2}
  • 參數替換結果:
    • datetime1=$[yyyymmdd-1]=2021-07-19
    • datetime2=$[hh24:mi:ss]=10:30:00
    • pt=20210719 10:30:00