スケジューリングパラメーターは DataWorks のコア機能であり、自動化されたタスクの実行中にコード内の時間ベースの値を動的に置き換えます。これにより、定期的なタスクで日付をハードコーディングする必要がなくなり、ワークフローがさまざまな業務日付や実行時間に自動的に適応できるようになります。このトピックでは、スケジューリングパラメーターのパラメーター値でサポートされているフォーマットとその使用方法について説明します。
このトピックを読む前に、スケジューリングパラメーターの構成方法を理解していることを確認してください。詳細については、「スケジューリングパラメーターの構成と使用」をご参照ください。
コアコンセプト: 時間ベースライン
DataWorks のすべての動的時間パラメーターは、次の 2 つのコアタイムベースラインに基づいています。
概念 | 定義 | パラメーター値 | カスタムフォーマット | 時間精度 |
業務日付 | 処理されるデータの日付で、通常はタスクのスケジュールされた実行日の前日です。 T+1 バッチ処理シナリオ (今日のタスクが昨日のデータを処理する場合) では、これは業務データが発生した日付を表します。たとえば、今日の売上を計算する場合、昨日はトランザクションが発生した日付であり、これが業務日付となります。 |
|
| 年、月、日 |
スケジュール時刻 | タスクの [スケジューリング] で構成された スケジュール時刻 です。インスタンスが作成されると、この値が設定され、固定されます。秒単位で正確であり、タスクの実際の実行時間とは無関係です。 これはタスクの期待される実行時間を表し、実際の開始時刻と同一ではない場合があります。実際の開始時刻は複数の要因に影響されます。 |
|
| 年、月、日、時、分、秒 |
概念のまとめ:
業務日付 ≈ 昨日 (データの日付)
スケジュール時刻 ≈ 今日 (タスクが実行されるとき)
典型的な T+1 タスクは、今日 (スケジュール時刻) の早朝に開始され、昨日 (業務日付) のデータを処理します。
原則
でパラメーターを構成し、値を割り当てることができます。また、パラメータープレビュー機能を使用して、将来のタスクインスタンスの置換値をプレビューできます。パラメーター構成プロセスの詳細については、「スケジューリングパラメーターの構成と使用」をご参照ください。
ビルトインシステムパラメーター
$bizdateと$cyctimeを使用して、業務日付とスケジュール時刻の値を直接割り当てることができます。値の観点から、$bizdateは${yyyymmdd}と同等であり、$cyctimeは$[yyyymmddhh24miss]と同等です。

図は、
$bizdateと${yyyymmdd}、および$cyctimeと$[yyyymmddhh24miss]の業務日付が 2025 年 10 月 16 日の場合のパラメーター定義とプレビュー結果を示しています。ベースライン時間パラメーターの戻り値が要件を満たさない場合は、
${...}と$[...]を使用してカスタム時間パラメーターを作成できます。カスタム時間パラメーターは、2 つの時間ベースラインに基づく変換であり、次のメソッドをサポートしています。
カスタムメソッドを使用してスケジューリングパラメーターに値を割り当てる場合、2 つの括弧フォーマット {...} と [...] の違いに注意してください。2 つのフォーマットは異なるベースライン値を使用し、全く異なるパラメーター値を生成します。これらを混同すると、本番環境でデータエラーが発生する可能性があります。
値の割り当てタイプ
スケジューリングパラメーターは、以下を含むいくつかの割り当てタイプをサポートしています。
ビルトインシステムパラメーター:
$bizdate、$bizmonth、$jobidなど。これらを使用して、業務日付、業務月、ワークフロー ID などを取得できます。これらは時間ベースの値に限定されません。詳細については、「ビルトインシステムパラメーター」をご参照ください。カスタム時間パラメーター:
${...}や$[...]など。これらは 2 つの時間ベースライン値に基づいて変換できます。詳細については、「カスタム時間パラメーター」をご参照ください。定数:
'123'や'abc'など。
カスタム時間パラメーター
DataWorks は ${...} と $[...] を使用して業務日付とスケジュール時刻を取得することをサポートしています。また、時間を調整するための変換もサポートしています。以下の例では、ノードが日次スケジューリングで構成され、スケジュール時刻が 02:30:45 であると仮定します。業務日付が 2025 年 10 月 31 日であると仮定すると、ベースライン時間は次のようになります。
業務日付: ${yyyymmdd}、この例では 20251031 です。
スケジュール時刻: $[yyyymmddhh24miss]、この例では 20251101023045 です。
重要スケジュール時刻は、タスクインスタンスが生成されるときに固定される事前設定値です。リソースの制約や上流ノードのステータスなどの要因でインスタンスが遅延した場合でも、そのスケジュール時刻は変更されません。実際の実行時間とは無関係です。
${...} と $[...] のコアな違い
${...} と $[...] フォーマットのコアな違いを理解することは非常に重要です。これらは時間ベースラインと計算能力に根本的な違いがあるためです。これらを混同すると、データエラーにつながる可能性があります。
比較 |
|
|
時間ベースライン | 業務日付 (T-1) | スケジュール時刻 (T) |
時間精度 | 日 (年、月、日) | 秒 (年、月、日、時、分、秒) |
オフセット計算能力 | 年、月、週、日のオフセットをサポートします。 | 日、時、分のオフセットをサポートします。 |
コアな制約 | 時、分、秒などのより小さな単位のフォーマットやオフセット計算はサポートしていません。 |
|
デフォルトの同等性 |
|
|
時間フォーマット
2 つの時間ベースラインは、${...} または $[...] を yyyy、mm、dd などの時間フォーマット指定子と組み合わせてフォーマットできます。
コード | 説明 |
|
| ||
割り当て | 結果 | 割り当て | 結果 | ||
| 4 桁の年 |
|
|
|
|
| 2 桁の月 |
|
|
|
|
| 2 桁の日 |
|
|
|
|
| 24 時間形式の時 | サポートされていません (日精度) | - |
|
|
| 12 時間形式の時 | - |
|
| |
| 分 | - |
|
| |
| 2番目 | - |
|
| |
| 年と月を取得 |
|
|
|
|
| ハイフンでフォーマット |
|
|
|
|
| ハイフンでフォーマット | サポートされていません (日精度) | - | サポートされているメソッドについては、「文字列連結: ケース 2」をご参照ください。 | |
オフセット計算
オフセット計算は動的パラメーターのコアであり、業務日付またはスケジュール時刻に時間を加算または減算できます。たとえば、ベースラインの N 年、月、または日前後、あるいは N 時間または N 分 (時と分はスケジュール時刻でのみサポート) の日付を取得します。${...} と $[...] は、時間ベースラインの精度が異なるため、サポートする範囲も異なります。
${...}モードでのオフセット計算コア機能: 年、月、週、日の整数オフセットをサポートします。
重要時または分のオフセットはサポートしていません。
${yyyy-mm-dd-1/24}のような構文はサポートされていません。構文:
${<time_format><±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関数を使用してください。構文:
$[<time_format><±N>]。ここで、時間オフセットはN/24として指定され、分オフセットはN/24/60として指定されます。Nはオフセットの時または分の数です。要件
オフセット単位
メソッド
例
N 年前後
年
$[add_months(yyyymmdd, 12*N)](N 年後)$[add_months(yyyymmdd, -12*N)](N 年前)前年:
$[add_months(yyyymmdd, -12*1)]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]、$[<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 時間を引くと、日をまたぐパラメーター置換をどのように処理すればよいですか?」をご参照ください。
エンジン関数を使用した二次変換
ビルトイン機能で必要な値 (たとえば、前月の最終日を取得する) を生成できない場合は、ターゲットノードのコンピュートエンジンのビルトイン関数または代入ノードを使用して、時間パラメーターを呼び出すときに二次変換を実行します。
詳細については、「スケジューリングパラメーターの戻り値の二次処理の典型的なシナリオ」をご参照ください。
文字列連結
このメソッドは、ビルトイン構文でサポートされていない特定の日付文字列を構築するために使用されます。スケジューリングパラメーターによって生成された日付部分と固定の定数文字列を組み合わせます。
例 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などです。実装:
2 つのパラメーターを設定します:
datetime1とdatetime2に、それぞれ値datetime1=$[yyyy-mm-dd]とdatetime2=$[hh24:mi:ss-1/24/60]を割り当てます。パラメーターを連結:
datetime1とdatetime2をスペースで連結する 3 番目のパラメーターを定義します。パラメーターの割り当て:
pt=${datetime1} ${datetime2}。
結果: タスクが実行されると、
${pt}の呼び出しは2023-11-01 02:29:45を返します。
ビルトインシステムパラメーター
DataWorks は、以下の表にリストされているシステムパラメーターをサポートしており、これらを使用してスケジューリングパラメーターの値を設定できます。ただし、このメソッドは柔軟性が低く、固定の時間フォーマットを使用します。柔軟な変換をサポートするカスタム時間パラメーターを使用することをお勧めします。
組み込みパラメーター | 定義 |
$bizdate | 業務日付、 このパラメーターは広く使用されています。日次スケジューリングでは、業務日付はデフォルトでタスクの期待される実行時間の前日になります。 |
$cyctime | タスクのスケジュール時刻、 |
$gmtdate | 現在の日付、 このパラメーターはデフォルトで現在の日付になります。データバックフィル操作を実行すると、値は |
$bizmonth | 業務月、
|
$jobid | タスクが属するワークフローの ID。 |
$nodeid | ノード ID。 |
$taskid | ノードによって生成されたインスタンス ID。 |
付録
データバックフィル中のパラメーター置換
タスクをオペレーションセンターにコミットした後、データバックフィルを実行して、指定された日付範囲の過去のタスクインスタンスをバッチ生成および実行し、データの修正、バックフィル、または遡及分析を完了できます。
業務日付: データバックフィル用に選択された業務日付は、$bizdate の置換結果と一致します。スケジューリングパラメーターが
${...}カスタムフォーマットを使用する場合、そのベースラインは選択された日付であり、指定された時間式によって変換されます。スケジュール時刻: データバックフィルを実行すると、$cyctime の置換結果は
選択された業務日付 + 1日になります。 たとえば、データバックフィル用に選択された業務日付が20250315の場合、$cyctimeパラメーターの値は20250316000000になります。スケジューリングパラメーターが$[...]フォーマットを使用する場合、そのベースラインは選択された業務日付 + 1日であり、指定された時間式によって変換されます。
スケジューリングパラメーター、業務日付、スケジュール時刻、および実際の実行時間の関係
関係 | 説明と例 |
スケジューリングパラメーターと実際の実行時間の関係 | スケジューリングパラメーターの値は、そのインスタンスが生成されるときに設定され、インスタンスの実際の実行時間が遅延しても変更されません。 |
スケジューリングパラメーターとタスクのスケジュール時刻の関係 | スケジューリングパラメーターが たとえば、ノードが |
スケジューリングパラメーター、業務日付、スケジュール時刻の関係 |
夏時間について
DataWorks は、夏時間 (DST) が開始および終了する日にタスクが正しく実行されることを保証します。プロダクトが DST トランジションをどのように処理するかの詳細については、「シナリオ: 夏時間の移行がスケジュールされたタスク実行に与える影響」をご参照ください。DST を採用しているリージョンにお住まいの場合は、移行期間中の混乱を避けるために、このドキュメントを確認してください。