全部產品
Search
文件中心

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

更新時間:Oct 25, 2025

在資料處理任務中,常需要根據任務啟動並執行時間動態產生分區或檔案名稱。使用系統提供的參數(如基於業務日期的 ${...} 和基於定時時間的 $[...])可以實現動態時間值的注入。下文對比不同參數格式在精度、位移計算能力和使用情境上的核心差異

重要

瞭解基準時間的定義和自訂參數的變換方式,請參見調度參數支援的格式

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

以目前時間 2025年11月01日、任務每日定時已耗用時間 00:00 為例,不同格式自訂參數的賦值情況如下:

說明

假設代碼引用方式均為pt=${datetime}

參數格式

描述

調度參數賦值

參數替換結果

${yyyymmdd}

擷取業務時間。

datetime=${yyyymmdd}

datetime=20251031

$[yyyymmddhh24miss]

擷取定時時間,精確到秒。

datetime=$[yyyymmddhh24miss]

datetime=20251101000000

$bizdate

擷取業務時間。

datetime=$bizdate

datetime=20251031

$cyctime

擷取定時時間,精確到秒。

datetime=$cyctime

datetime=20251101000000

$gmtdate

擷取目前時間,精確到天。

datetime=$gmtdate

datetime=20251101

$bizmonth

擷取業務月份。取值邏輯如下:

  • 如果業務時間與目前時間在同一個月,則取上一個月的月份。

  • 否則,取業務時間所在的月份。

datetime=$bizmonth

例如,目前時間為2025年11月01日

  • 如果業務時間為2025年11月02日(與目前時間同月),則datetime=202510

  • 如果業務時間為2025年10月31日(與目前時間不同月),則datetime=202510

${…}和$[…]參數的核心差異

${…} 和 $[…] 參數的核心差異對比如下:

對比維度

${...} (基於業務日期)

$[...] (基於定時時間)

時間基準

業務日期(T-1)

定時時間(T)

時間精度

(年月日)

(年月日時分秒)

位移計算能力

支援對 年、月、周、天 進行位移計算。

支援對 天、小時、分鐘 進行位移計算。

核心限制

不支援時、分、秒等更小時間單位的格式化與位移計算。

不支援通過 $[yyyy±N]$[mm±N] 的文法直接對年、月進行位移,需藉助 add_months 函數。

預設等價

${yyyymmdd} 等價於 $bizdate

$[yyyymmddhh24miss] 等價於 $cyctime

本文以ODPS SQL節點為例,假設任務的調度時間為2025年07月20日10時30分00秒,展示${…}$[…]參數的時間取值配置,具體如下表。

時間取值

${…}參數

$[…]參數

取年份:2025

  • 調度參數賦值:datetime=${yyyy}

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=2025

  • 調度參數賦值:datetime=$[yyyy]

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=2025

取年份:25

  • 調度參數賦值:datetime=${yy}

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=25

  • 調度參數賦值:datetime=$[yy]

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=25

取年份:2024

  • 調度參數賦值:datetime=${yyyy-1}

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=2024

  • 調度參數賦值:datetime=$[add_months(yyyymmdd,-12)]

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=2024

取月份:07

  • 調度參數賦值:datetime=${mm}

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=07

  • 調度參數賦值:datetime=$[mm]

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=07

取日期(天):20

  • 調度參數賦值:datetime=${dd}

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=20

  • 調度參數賦值:datetime=$[dd]

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=20

取日期:2025年06月20日

  • 調度參數賦值:datetime=${yyyy-mm-dd-29}

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=2025-06-20

重要

此方式需考慮月份天數,不推薦使用,建議通過$[]方式擷取上月的同一日期。

  • 調度參數賦值:datetime=$[add_months(yyyymmdd,-1)]

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=2025-06-20

取日期:2025年07月19日

  • 調度參數賦值:datetime=${yyyy-mm-dd}

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=2025-07-19

  • 調度參數賦值:datetime=$[yyyy-mm-dd-1]

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=2025-07-19

取日期:2024年07月20日

  • 調度參數賦值:datetime=${yyyy-mm-dd-364}

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=2024-07-20

重要

此方法需考慮閏年,不推薦使用,建議通過$[]方式擷取上一年的同一日期。

  • 調度參數賦值:datetime=$[add_months(yyyymmdd,-12)]

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=2024-07-20

取時間:10:30:00

不支援

  • 調度參數賦值:datetime=$[hh24:mi:ss]

  • 代碼引用:pt=${datetime}

  • 參數替換結果:pt=10:30:00

取時間:2025-07-20 10:30:00

不支援

  • 調度參數賦值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss]

    說明

    您需要自訂兩個參數datetime1和datetime2,兩個參數間使用一個空格分隔。

  • 代碼引用:pt=${datetime1} ${datetime2}

  • 參數替換結果:

    • datetime1=$[yyyy-mm-dd]=2025-07-20

    • datetime2=$[hh24:mi:ss]=10:30:00

    • pt=2025-07-20 10:30:00

取時間:2025-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]=2025-07-20

    • datetime2=$[hh24:mi:ss-1/24/60]=10:29:00

    • pt=2025-07-20 10:29:00

取時間:2025-07-20 09:30:00

不支援

  • 調度參數賦值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss-1/24]

    說明

    您需要自訂兩個參數datetime1和datetime2,兩個參數間使用一個空格分隔。

  • 代碼引用:pt=${datetime1} ${datetime2}

  • 參數替換結果:

    • datetime1=$[yyyy-mm-dd]=2025-07-20

    • datetime2=$[hh24:mi:ss-1/24]=09:30:00

    • pt=2025-07-20 09:30:00

取前一天時間,精確到秒,且年月日與時分秒之間無空格:

2025071910:30:00

不支援

  • 調度參數賦值:datetime=$[yyyymmddhh24miss-1]

  • 代碼引用:pt=${datetime}

  • 參數替換結果:

    • datetime=$[yyyymmddhh24miss-1]=2025071910:30:00

    • pt=2025071910:30:00

取前一天時間,精確到秒,且年月日與時分秒之間有空格:

20250719 10:30:00

不支援

重要

調度參數賦值運算式中不支援空格,您可以使用兩個調度參數,然後在代碼引用時使用空格進行拼接。

  • 調度參數賦值:datetime1=$[yyyymmdd-1] datetime2=$[hh24:mi:ss]

    說明

    您需要自訂兩個參數datetime1和datetime2,兩個參數間使用一個空格分隔。

  • 代碼引用:pt=${datetime1} ${datetime2}

  • 參數替換結果:

    • datetime1=$[yyyymmdd-1]=20250719

    • datetime2=$[hh24:mi:ss]=10:30:00

    • pt=20250719 10:30:00