スケジューリングパラメーターは DataWorks のコア機能であり、タスクの自動実行中にコード内の時間ベースの値を動的に置換します。これにより、定期的なタスクで日付をハードコーディングする必要がなくなり、ワークフローが異なる業務日付や実行時間に自動的に適応できるようになります。このトピックでは、サポートされているパラメーター値のフォーマットと、その使用方法について説明します。
このトピックを読む前に、スケジューリングパラメーターの設定方法を理解していることを確認してください。詳細については、「スケジューリングパラメーターの設定と使用」をご参照ください。
基本概念:時間のベースライン
時間パラメーターは、スケジューリングパラメーターの主要なユースケースです。タスク実行時にさまざまな時間文字列を動的に置換するために使用されます。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 年、N ヶ月、または N 日前後の日付を取得できます。
コード | 説明 |
|
| ||
割り当て方法 | 結果 | 割り当て方法 | 結果 | ||
| 4桁の年 |
|
|
|
|
| 2桁の月 |
|
|
|
|
| 2桁の日 |
|
|
|
|
| 24時間形式の時 | サポートされていません (日精度) | - |
|
|
| 12時間形式の時 | - |
|
| |
| 分 | - |
|
| |
| 2番目 | - |
|
| |
| 年と月を取得 |
|
|
|
|
| ハイフンでフォーマット |
|
|
|
|
| ハイフンでフォーマット、時間を含む | サポートされていません (日精度) | - | サポートされている方法については、「文字列連結:ケース 2」をご参照ください。 | |
オフセット計算
オフセット計算は、動的パラメーターのコア機能であり、業務日付やスケジューリング時間に時間を加算または減算できます。例えば、ベースラインの N 年、N ヶ月、または N 日前後の日付を取得できます。また、ベースラインの N 時間または N 分前後の時間を取得することもできますが、これはスケジューリング時間でのみサポートされています。${...} と $[...] フォーマットは、時間ベースラインの精度が異なるため、サポートする範囲が異なります。
${...}モードでのオフセット計算コア機能:年、月、週、日の整数オフセットをサポートします。
重要時または分のオフセットはサポートされていません。例えば、${yyyy-mm-dd-1/24} のような構文は無効です。
構文:
${<時間フォーマット><±N>}。このフォーマットでは、N は時間フォーマットの最小単位に対応します。例えば、フォーマットが yyyymm の場合、N は月 (mm) のオフセットを表します。フォーマットが yyyymmdd の場合、N は日 (dd) のオフセットを表します。日付オフセット期間
オフセット単位
方法
例
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]のようなフォーマットを使用した年または月のオフセットをサポートしていません。年または月のオフセット計算を実行するには、add_months関数を使用してください。構文:
$[<時間フォーマット><±N>]。時のオフセットを指定するには、N/24 を使用します。分のオフセットを指定するには、N/24/60 を使用します。これらの式では、N はオフセットの時または分の数です。シナリオ
オフセット単位
方法
例
N 年前/後
年
$[add_months(yyyymmdd,12*N)](N 年後)$[add_months(yyyymmdd,-12*N)](N 年前)前年:
$[add_months(yyyymmdd,-12)]N ヶ月前/後
月
$[add_months(yyyymmdd,N)](N ヶ月後)$[add_months(yyyymmdd,-N)](N ヶ月前)前月:
$[add_months(yyyymmdd,-1)]N 週間前/後
週
$[yyyymmdd±7*N]前週:
$[yyyymmdd±7*1]N 日前/後
日
$[yyyymmdd±N]昨日:
$[yyyymmdd-1]N 時間前/後
時
利用可能なフォーマット:
$[hh24miss±N/24],$[hh24±N/24]$[カスタム時間フォーマット±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]$[カスタム時間フォーマット±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 フォーマットの時間を取得する。
シナリオ:
yyyy-mm-dd hh24:mi:ssフォーマットの時間、例えば2023-11-01 02:30:45を取得する必要があります。実装:
datetime1パラメーターをdatetime1=$[yyyy-mm-dd]に、datetime2パラメーターをdatetime2=$[hh24:mi:ss-1/24/60]に設定します。パラメーターを連結する:
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 に実行されるようにスケジュールされており、2つのパラメーターが設定されているとします:
yesterday=${yyyymmdd}today=$[yyyymmddhh24miss]
以下の表は、そのインスタンスの 1 つの置換ロジックを示しています。
インスタンスのスケジューリング時間 | インスタンスの業務日付 | パラメーター:yesterday=${yyyymmdd} | パラメーター:today=$[yyyymmddhh24miss] |
|
|
|
|
シナリオ 2:データバックフィル
データバックフィルタスクを手動で実行する場合、パラメーター置換ロジックは手動で選択された業務日付に基づいて変更されます。特にスケジューリング時間についてです。
${...}(業務日付):そのベースラインは手動で選択された業務日付です。$[...](スケジューリング時間):そのベースラインは手動で選択された業務日付 + 1 日です。
例:同じタスク A のデータバックフィルを手動で実行し、業務日付 2025-03-15 を選択したとします。
手動で選択された業務日付 | パラメーター:yesterday=${yyyymmdd} | パラメーター:today=$[yyyymmddhh24miss] |
|
|
|
よくある質問
スケジューリングパラメーターの使用に関するよくある質問への回答については、「スケジューリングパラメーターに関するよくある質問」をご参照ください。