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

上記の例は、$bizdate (${yyyymmdd} に解決) と $cyctime ($[yyyymmddhh24miss] に解決) のパラメーター定義と、ビジネス日付が 2025-10-16 の場合のプレビュー結果を示しています。
デフォルトのベース時間の値が要件を満たさない場合は、
${...}と$[...]構文を使用して、2 つのベース時間をカスタム時間パラメーターに変換します。
カスタム時間パラメーター
DataWorks は、それぞれ ${...} と $[...] フォーマットを使用して、ビジネス日付とスケジュール時刻の取得をサポートしています。これらのフォーマットを使用すると、ビジネス要件に合わせて時間値を変換できます。以下の例では、ノードが毎日 02:30:45 に実行されるようにスケジュールされており、ビジネス日付が 20251031 であると仮定します。ベースライン時間は次のとおりです:
ビジネス日付:${yyyymmdd} の値は 20251031 です。
スケジュール時刻:$[yyyymmddhh24miss] の値は 20251101023045 です。
${...} と $[...] の主な違い
${...} と $[...] フォーマットは、時間ベースラインと計算機能が異なります。これらを混在させると、データエラーにつながる可能性があります。
比較 |
|
|
時間ベースライン | ビジネス日付 (T-1) | スケジューリング時間 (T) |
時間精度 | 日 (年、月、日) | 秒 (年、月、日、時、分、秒) |
サポートされるオフセット | 年、月、週、日のオフセット計算をサポートします。 | 日、時、分のオフセット計算をサポートします。 |
主な制限事項 | 時、分、秒などのより小さな時間単位のフォーマットやオフセット計算はサポートしていません。 |
|
同等のシステムパラメーター |
|
|
時間フォーマット
${...} または $[...] フォーマットを使用して時間パラメーターを生成します。yyyy、yy、mm、dd などのフォーマットコードを組み合わせて、ビジネス日付の N 年、月、または日前後の日付を生成します。
コード | 説明 |
|
| ||
例 | 結果 | 例 | 結果 | ||
| 4桁の年 |
|
|
|
|
| 2桁の月 |
|
|
|
|
| 2桁の日 |
|
|
|
|
| 24時間形式の時 | サポートされていません (日次精度) | - |
|
|
| 12時間形式の時 | - |
|
| |
| 分 | - |
|
| |
| 2 番目 | - |
|
| |
| 年と月 |
|
|
|
|
| アンダースコアでフォーマットされた年と月 |
|
|
|
|
| ハイフンでフォーマットされた日付 |
|
|
|
|
| ハイフンとコロンでフォーマットされた日付と時刻 | サポートされていません (日次精度) | - | このフォーマットは文字列連結を使用して実現できます。「文字列連結:ケース 2」をご参照ください。 | |
オフセット計算
オフセット計算を使用すると、ビジネス日付またはスケジュール時刻から時間を加算または減算できます。ベースライン時間に対して N 年、月、日、時、または分のオフセットを適用できます。時と分のオフセットは、スケジュール時刻でのみサポートされます。${...} と $[...] のオフセット機能は、サポートする時間精度が異なるため、違いがあります。
${...}のオフセット計算コア機能:年、月、週、日の整数オフセットをサポートします。
重要時と分のオフセットはサポートされていません。例えば、${yyyy-mm-dd-1/24} は無効な構文です。
構文:
${<時間フォーマット><±N>}。ここで、N の単位はフォーマット内の最小単位 (例:yyyymmやyyyymmdd) です。要件
オフセット単位
構文
例
N 年前/後
年
${yyyy±N}または${yy±N}前年を取得:
${yyyy-1}N ヶ月前/後
月
${yyyymm±N}前月を取得:
${yyyymm-1}N 週間前/後
週
${yyyymmdd±7*N}前週を取得:
${yyyymmdd-7*1}N 日前/後
日
${yyyymmdd±N}前日を取得:
${yyyymmdd-1}
$[...]のオフセット計算コア機能:日、時、分の分数オフセットをサポートします。
重要$[...]フォーマットでは、$[yyyy-N]や$[mm-N]のような式を使用して N 年前または N ヶ月前の日付を取得することはできません。年または月のオフセットを実行するには、add_months関数を使用する必要があります。構文:
$[<時間フォーマット><±N>]。ここで、N は 1 日の端数を表します。N 時間のオフセットにはN/24を、N 分のオフセットにはN/24/60を使用します。要件
オフセット単位
構文
例
N 年前/後
年
N 年後:
$[add_months(yyyymmdd,12*N)]
N 年前:$[add_months(yyyymmdd,-12*N)]前年を取得:
$[add_months(yyyymmdd,-12)]N ヶ月前/後
月
N ヶ月後:
$[add_months(yyyymmdd,N)]
N ヶ月前:$[add_months(yyyymmdd,-N)]前月を取得:
$[add_months(yyyymmdd,-1)]
翌月を取得:$[add_months(yyyy_mm,1)]N 週間前/後
週
$[yyyymmdd±7*N]前週を取得:
$[yyyymmdd-7*1]N 日前/後
日
$[yyyymmdd±N]前日 (昨日) を取得:
$[yyyymmdd-1]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 分前/後
分
利用可能なフォーマット:
$[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 が返されます。
エンジン関数を使用した2次変換
組み込みのフォーマットおよびオフセット機能で必要な正確な値 (例えば、前月の最終日) を生成できない場合は、ノードのエンジン関数または代入ノードを使用して 2 次変換を適用します。
ご参照ください:「スケジューリングパラメーターの戻り値の 2 次処理の典型的なシナリオ」
文字列連結
文字列連結を使用して、組み込み構文でサポートされていない構造化された日付文字列を構築します。このメソッドは、スケジューリングパラメーターによって生成された日付部分と定数文字列を組み合わせます。
ケース 1:毎月の初日を動的に取得
シナリオ:タスクが実行される日に関係なく、現在の月の初日を
yyyymm01フォーマットで表す文字列が必要です。実装:
年と月の部分を抽出:
${yyyymm}を使用して、現在のビジネス日付の年と月を取得します。例えば、ビジネス日付が20231027の場合、結果は202310です。抽出した年と月を定数文字列
'01'と連結します。パラメーター呼び出し:
first_day_of_month=${yyyymm}01
結果:タスク実行時、
${first_day_of_month}は20231001に置き換えられます。
ケース 2:yyyy-mm-dd hh24:mi:ss フォーマットでのタイムスタンプの生成
シナリオ:
2023-11-01 02:30:45のようなyyyy-mm-dd hh24:mi:ssフォーマットでタイムスタンプを生成する必要があります。実装:
datetime1とdatetime2の 2 つのパラメーターを定義します。次のように設定します:datetime1=$[yyyy-mm-dd]およびdatetime2=$[hh24:mi:ss]。datetime1とdatetime2パラメーターをスペースで区切って連結します。パラメーター呼び出し:pt=
${datetime1}${datetime2}
結果:タスク実行時、
${datetime1}${datetime2}は2023-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] |
|
|
|
よくある質問
スケジューリングパラメーターに関するご質問は、「スケジューリングパラメーターに関するよくある質問」をご参照ください。