スケジューリングパラメーターは、ランタイムでコード内の時間に関する値を動的に置き換えます。これにより、定期的なワークフローで日付をハードコードする必要がなくなります。このトピックでは、サポートされているパラメーター値のフォーマットと使用法について説明します。
スケジューリングパラメーターの設定方法を理解しておく必要があります。詳細については、「スケジューリングパラメーターの設定と使用」をご参照ください。
コアコンセプト:時間ベースライン
時間パラメーターは、ランタイムに時間文字列を動的に置き換えます。DataWorks のすべての時間パラメーターは、次の2つの主要な時間ベースラインに基づいています。
|
コンセプト |
説明 |
デフォルト |
カスタムフォーマット |
精度 |
|
業務日付 |
タスクの予定実行日の前日です。T+1 オフラインコンピューティングのシナリオでは、業務データが生成された日付を表します。 たとえば、今日タスクを実行して昨日の売上高を計算する場合、「昨日」は取引が発生した日付を指します。これが業務日付です。 |
|
|
年-月-日 |
|
予定時刻 |
タスクのスケジューリングで設定された[予定時刻]です。ランタイムに、システムによって当日として解釈されます。これはタスクの理論上の実行時刻を表し、リソースのキューイングや遅延が発生しても変動しません。 |
|
|
年-月-日-時-分-秒 |
まとめ:
-
業務日付 ≈ 昨日 (データの日付)
-
予定時刻 ≈ 今日 (タスクの実行時刻)
一般的な T+1 タスクは、今日 (予定時刻) の早朝に開始し、昨日 (業務日付) のデータを処理します。
パラメーター値の式
スケジューリングパラメーターは、次のタイプの値をサポートします:
-
カスタム時間パラメーター:業務日付とスケジューリング時刻の2つの時間基準に基づいて値を変換する、
${...}や$[...]などの式です。詳細については、「カスタム時間パラメーター」をご参照ください。 -
組み込みシステムパラメーター:
$bizdate、$bizmonth、$jobidなど、業務日付、業務月、またはワークフロー ID などの値を返す、定義済みの変数です。これらは時間に基づく値に限りません。詳細については、「組み込みシステムパラメーター」をご参照ください。 -
定数:
'123'や'abc'などのリテラル値です。
特殊文字の制限:パラメーター式には、スペースまたは等号 ( = ) を含めることはできません。
使用法
スケジューリングパラメーターの代入ロジックは、にパラメーター名とパラメーター値を指定して定義します。パラメーターを定義した後、 ${parameter name} 構文を使用してコード内で参照できます。 詳細については、「スケジューリングパラメーターの設定と使用」をご参照ください。
-
業務日付と予定時刻を表すには、システム組み込みパラメーター の
$bizdateと$cyctimeを使用します。これらのパラメーターは、次の値に解決されます:-
$bizdate=${yyyymmdd} -
$cyctime=$[yyyymmddhh24miss]

The preceding examples show the parameter definitions for $bizdate (resolving to ${yyyymmdd}) and $cyctime (resolving to $[yyyymmddhh24miss]), and their preview results when the business date is 2025-10-16.
-
デフォルトの 基準時間 の値がニーズに合わない場合は、
${...}と$[...]構文を使用して、2 つの基準時間をカスタム時間パラメーターに変換します。
カスタム時刻パラメーター
DataWorks は、${...} フォーマットと $[...] フォーマットを使用して、それぞれ業務日付とスケジューリング時刻を取得できます。これらのフォーマットを使用すると、時間の値を業務要件に合わせて変換できます。次の例では、ノードが毎日 02:30:45 に実行されるようにスケジュールされており、業務日付が 20251031 であるものとします。ベースライン時刻は次のとおりです:
-
業務日付: ${yyyymmdd} の値は 20251031 です。
-
スケジューリング時刻: $[yyyymmddhh24miss] の値は 20251101023045 です。
${...} と $[...] の主な違い
${...} フォーマットと $[...] フォーマットは、時間ベースラインと計算機能が異なります。これらを混在させると、データエラーが発生する可能性があります。
|
比較 |
|
|
|
時間ベースライン |
業務日付 (T-1) |
スケジューリング時刻 (T) |
|
時間精度 |
日 (年、月、日) |
秒 (年、月、日、時、分、秒) |
|
対応オフセット |
年、月、週、日のオフセット計算をサポートしています。 |
日、時間、分のオフセット計算をサポートしています。 |
|
主な制限事項 |
時間、分、秒などのより小さい時間単位のフォーマットまたはオフセット計算はサポートされません。 |
|
|
同等のシステムパラメーター |
|
|
時間フォーマット
${...} または $[...] のフォーマットを使用して、時間パラメーターを生成します。yyyy、yy、mm、dd などのフォーマットコードを組み合わせて、業務日付の前後 N 年、N か月、または N 日の日付を生成します。
|
コード |
説明 |
|
|
||
|
例 |
結果 |
例 |
結果 |
||
|
|
4 桁の年 |
|
|
|
|
|
|
2 桁の月 |
|
|
|
|
|
|
2 桁の日 |
|
|
|
|
|
|
24 時間形式の時 |
サポートされません (日単位の精度) |
- |
|
|
|
|
12 時間形式の時 |
- |
|
|
|
|
|
分 |
- |
|
|
|
|
|
秒 |
- |
|
|
|
|
|
年と月 |
|
|
|
|
|
|
ハイフン区切りの日付 |
|
|
|
|
|
|
ハイフンとコロン区切りの日付と時刻 |
サポートされません (日単位の精度) |
- |
このフォーマットは、文字列連結を使用して作成できます。詳細については、「文字列連結:ケース 2」をご参照ください。 |
|
オフセット計算
オフセット計算では、業務日付またはスケジューリング時刻に対して時間を加算または減算できます。時間ベースラインに対して、N 年、N か月、N 日、N 時間、または N 分のオフセットを適用できます。時間と分のオフセットは、スケジューリング時刻に対してのみサポートされます。${...} と $[...] はサポートする時間精度が異なるため、オフセット機能も異なります。
-
${...}オフセット計算-
コア機能: 年、月、週、日について整数オフセットをサポートします。
重要時間と分のオフセットはサポートされません。たとえば、${yyyy-mm-dd-1/24} は無効な構文です。
-
構文:
${<time_format><±N>}。ここで、N の単位はフォーマット内の最小単位です (例:yyyymm、yyyymmdd)。要件
オフセット単位
構文
例
N 年前/N 年後
年
${yyyy±N}または${yy±N}前年を取得:
${yyyy-1}N か月前/N か月後
月
${yyyymm±N}前月を取得:
${yyyymm-1}N 週間前/N 週間後
週
${yyyymmdd±7*N}前週を取得:
${yyyymmdd-7*1}N 日前/N 日後
日
${yyyymmdd±N}前日を取得:
${yyyymmdd-1}
-
-
$[...]オフセット計算-
コア機能: 日、時間、分について分数オフセットをサポートします。
重要$[...]フォーマットでは、$[yyyy-N]や$[mm-N]などの式で、N 年前または N か月前の日付を取得することはできません。年または月のオフセットを実行するには、add_months関数を使用する必要があります。 -
構文:
$[<time_format><±N>]。ここで、N は 1 日の分数を表します。N 時間のオフセットにはN/24、N 分のオフセットにはN/24/60を使用します。要件
オフセット単位
構文
例
N 年前/N 年後
年
N 年後:
$[add_months(yyyymmdd,12*N)]
N 年前:$[add_months(yyyymmdd,-12*N)]前年を取得:
$[add_months(yyyymmdd,-12)]N か月前/N か月後
月
N か月後:
$[add_months(yyyymmdd,N)]
N か月前:$[add_months(yyyymmdd,-N)]前月を取得:
$[add_months(yyyymmdd,-1)]N 週間前/N 週間後
週
$[yyyymmdd±7*N]前週を取得:
$[yyyymmdd-7*1]N 日前/N 日後
日
$[yyyymmdd±N]前日 (昨日) を取得:
$[yyyymmdd-1]N 時間前/N 時間後
時間
使用可能なフォーマット:
-
$[hh24miss±N/24]、$[hh24±N/24] -
$[<custom_time_format>±N/24]
異なるフォーマットで前の時間を取得:
-
月:
$[mm-1/24] -
年:
$[yyyy-1/24] -
年と月:
$[yyyymm-1/24] -
年、月、日:
$[yyyymmdd-1/24] -
前日と前の時間:
$[yyyymmdd-1-1/24]
N 分前/N 分後
分
使用可能なフォーマット:
-
$[hh24miss±N/24/60] -
$[yyyymmddhh24miss±N/24/60] -
$[mi±N/24/60] -
$[<custom_time_format>±N/24/60]
異なるフォーマットで、スケジューリング時刻の 15 分前を取得:
-
$[yyyy-15/24/60] -
$[yyyymm-15/24/60] -
$[yyyymmdd-15/24/60] -
$[hh24-15/24/60] -
$[mi-15/24/60]
複合オフセット
日 + 時間
$[yyyymmdd±N±M/24]。ここで、N は日のオフセット、M は時間のオフセットです。例:
$[yyyymmdd-1-1/24]説明-
日またぎの処理: 時間と分のオフセットにより、日付が日またぎになる可能性があります。処理方法の詳細については、「1 時間のオフセット時における日またぎパラメーター置換の処理方法」をご参照ください。
-
月末日の調整: 月末日に月オフセットを適用した場合、対象月の日数が少ないときは、結果がその月の最終日に自動的に調整されます。たとえば、2025-03-31 から 1 か月減算すると、2 月には 31 日がないため 2025-02-28 が返されます。
-
-
エンジン関数を使用した二次変換
組み込みのフォーマットとオフセット機能で必要な値 (例:前月の最終日) を正確に生成できない場合は、ノードのエンジン関数または代入ノードを使用して二次変換を適用します。
参照: スケジューリングパラメーターの戻り値を二次処理する代表的なシナリオ。
文字列連結
文字列連結を使用して、組み込み構文ではサポートされない構造化された日付文字列を作成します。この方法では、スケジューリングパラメーターで生成した日付部分を定数文字列と組み合わせます。
ケース 1: 各月の 1 日を動的に取得
-
シナリオ: タスクの実行日によらず、当月の 1 日を表す文字列を
yyyymm01フォーマットで取得する必要があります。 -
実装:
-
年と月の部分を抽出します:
${yyyymm}を使用して、現在の業務日付の年と月を取得します。たとえば、業務日付が20251031の場合、結果は202510です。 -
抽出した年と月を、定数文字列
'01'と連結します。 -
パラメーター呼び出し:
first_day_of_month=${yyyymm}01
-
-
結果: タスクの実行時に、
${first_day_of_month}は20251001に置き換えられます。
ケース 2: yyyy-mm-dd hh24:mi:ss フォーマットのタイムスタンプを生成
-
シナリオ:
yyyy-mm-dd hh24:mi:ssフォーマットのタイムスタンプ (例:2025-11-01 02:30:45) を生成する必要があります。 -
実装:
-
datetime1とdatetime2の 2 つのパラメーターを定義します。次のように設定します:datetime1=$[yyyy-mm-dd]、datetime2=$[hh24:mi:ss]。 -
datetime1とdatetime2のパラメーターを、スペースで区切って連結します。 -
パラメーター呼び出し: pt=
${datetime1}${datetime2}
-
-
結果: タスクの実行時に、
${datetime1}${datetime2}は2025-11-01 02:30:45に置き換えられます。
組み込みシステムパラメーター
DataWorks は、以下の組み込みシステムパラメーターを提供しています。これらは時間フォーマットが固定で柔軟性に欠けるため、代わりにカスタム時間パラメーターを使用することを推奨します。
|
パラメーター |
説明 |
|
$bizdate |
通常、デフォルトではタスクの定時実行時間の前日になります。 |
|
$cyctime |
|
|
$gmtdate |
デフォルトは現在の日付です。データバックフィルの場合、日付は |
|
$bizmonth |
|
|
$jobid |
タスクを含むワークフローの ID。 |
|
$nodeid |
ノードの ID。 |
|
$taskid |
ノードが生成するインスタンスの ID。 |
パラメーター置換の例
スケジューリングパラメーターの置換値は、インスタンスの作成時に決定され、実際の開始時刻の影響は受けません。
シナリオ 1:通常スケジューリング
通常スケジューリングでは、パラメーター置換は、業務日付とスケジュール時刻という 2 つの時間ベースラインに基づいています。
-
${...}(業務日付):値はインスタンスの業務日付を基にします。 -
$[...](スケジュール時刻):値はインスタンスのスケジュール時刻を基にします。
たとえば、A という名前の日次タスクが 00:00 に実行されるようにスケジュールされていて、次のパラメーターがあるとします:
-
yesterday=${yyyymmdd} -
today=$[yyyymmddhh24miss]
次の表は、特定のインスタンスでこれらのパラメーターがどのように置換されるかを示しています:
|
スケジュール時刻 |
業務日付 |
yesterday=${yyyymmdd} |
today=$[yyyymmddhh24miss] |
|
|
|
|
|
シナリオ 2:データバックフィル
データバックフィル中、パラメーター置換ロジックは、選択された業務日付に基づいて変更されます。これは特に、スケジュール時刻に依存するパラメーターに影響します。
-
${...}(業務日付):ベースラインは手動で選択された業務日付です。 -
$[...](スケジュール時刻):ベースラインは手動で選択された業務日付 + 1 日です。
たとえば、業務日付を 2025-03-15 としてタスク A をバックフィルする場合:
|
選択された業務日付 |
yesterday=${yyyymmdd} |
today=$[yyyymmddhh24miss] |
|
|
|
|
よくある質問
スケジューリングパラメーターに関する質問は、スケジューリングパラメーターのよくある質問をご参照ください。