本ガイドでは、本番環境における DataWorks ノードの時刻プロパティの設定方法について説明します。基本的なスケジューリング設定および複雑なビジネスシナリオ向けの高度なロジックをカバーしています。時刻プロパティは、データ出力のタイムリネスを決定し、本番ワークフローの安定性および決定論的動作に直接影響します。インスタンスのライフサイクル、スケジュール時刻、実行ポリシー、フォールトトレランスを適切に設定することで、ビジネスロジックと計算フローを分離した柔軟かつ堅牢な自動スケジューリングシステムを構築できます。
時刻設定の基本原則
DataWorks のスケジューリングシステムは、依存関係駆動型および時刻制約型の 2 種類のロジックを使用します。ノードは、これらの条件の両方が満たされた場合にのみ実行されます。これらのパターンを理解することは、スケジュール設定の基礎となります。
スケジューリング依存関係の詳細については、「スケジューリング依存関係の設定」をご参照ください。
パターン 1:依存関係駆動型実行
ワークフロー内のすべての計算を可能な限り速やかに完了させることが目的の場合に、このパターンを使用します。ワークフロー内のすべてのノードは、入力データが準備できた時点で直ちに実行され、計算チェーン全体を最高速度で完了させます。
設定方法:ワークフロー内の最初のノード(または上流依存関係を持たないノード)のみに特定のスケジュール時刻(例:
02:00)を設定します。すべての子孫ノードのスケジュール時刻は00:00に設定します。実行ロジック:子孫ノードは、上流依存関係が満たされるまで待機状態を維持します。先祖ノードが正常に実行されると、その子孫ノードは直ちにトリガーされます。
設定および実行時の例:
ノード
スケジュール時刻の設定
推定実行時間
トリガーロジック
A(開始ノード)
02:0002:00スケジュール時刻に達すると実行されます。
B(下流)
00:00~02:10(A の完了後)ノード B は、上流依存関係であるノード A が正常に実行された直後にトリガーされます。
C(下流)
00:00~02:18(B の完了後)ノード C は、上流依存関係であるノード B が正常に実行された直後にトリガーされます。
パターン 2:時刻制約型実行
外部依存関係またはビジネスルールにより、ワークフロー内のノードが特定の時刻以降に実行される必要がある場合に、このパターンを使用します。例えば、外部のビジネスルールやシステムのメンテナンスウィンドウのため、ノードは 05:00 以降に計算を開始する必要があります。
設定方法:時刻制約のあるノードに特定のスケジュール時刻(例:
05:00)を設定します。実行ロジック:ノードは、上流依存関係が完了し、かつ自身のスケジュール時刻が到来したという 2 つの条件がともに満たされた場合にのみ実行されます。先祖ノード A が
02:00に完了したとしても、ノード B は自身のスケジュール時刻05:00になるまで実行を待機します。設定および実行時の例:
ノード
スケジューリング設定
インスタンスランタイム
トリガーロジック
A(開始ノード)
02:0002:00スケジュール時刻に達すると実行されます。
B(時刻制約あり)
05:0005:00上流依存関係(ノード A)が満たされています。ノードは自身のスケジュール時刻の到来を待機します。
C(時刻制約あり)
08:0008:00上流依存関係(ノード B)が満たされています。ノードは自身のスケジュール時刻の到来を待機します。
スケジュール時刻設定の計画
重要タスクのオンタイム完了の確保
出力データに厳しい納期要件がある場合(例:ノード E は毎日 09:00 前に完了する必要がある)、エンドポイントから逆算して、ビジネスプロセス全体のスケジュール時刻を計画する必要があります。
ソリューション 1:手動で時刻を設定 | ソリューション 2:依存関係駆動型の自動調整(推奨) |
|
|
ソリューション 2 は、静的計画と動的スケジューリング機能を組み合わせています。このアプローチにより、納期の確実な達成が可能となり、保守コストを低減し、運用上の柔軟性を高めます。手動設定が必要なのは開始点と終了点のみであり、中間プロセスはシステムが知的に管理します。このソリューションは強く推奨されます。 | |
図中のデフォルト時刻 00:00 は単なる例です。実際には、1 日ごとのノードのデフォルトスケジュール時刻は、00:00 から 00:30 の間にランダムに生成されます。
ノード | スケジュール時刻(ソリューション 1) | スケジュール時刻(ソリューション 2) | 実際の実行時間 |
A |
|
|
|
B |
|
|
|
C |
|
|
|
D |
|
|
|
E |
|
|
|
ベースライン優先度によるリソースピーク負荷のシフト
依存関係駆動型の方法は設定が容易ですが、深夜の 00:00 などに多数のノードが同時に開始することを招き、計算リソースの競合およびノードのキューイングを引き起こす可能性があります。このような場合は、ベースライン管理の優先度設定を活用して、重要なコアノードに高い優先度を付与し、優先的に実行させます。
ノードの優先度の識別:運用データストア(ODS)レイヤーのデータ抽出などのコアノードと、一部の内部レポートなどの非コアノードを区別します。
ジョブのスケジューリング優先度の設定:コアリソースの優先的獲得を目的として、ベースライン を設定できます。
最適化比較図:
スケジュール時刻とベースラインを組み合わせることで、スケジュールリソースの合理的な割り当ておよび優先度に基づくインテリジェントなスケジューリングを実現できます。これにより、各ノードに対して個別にスケジュール時刻を設定する際に伴う運用保守コストおよび人的ミスを削減できます。
シナリオ | 説明 |
最適化前:リソース競合 | すべてのジョブ(コア A/B、レポート C/D)を |
最適化後:段階的実行 | コアノード A および B は、高い優先度によりリソースを迅速に取得し、 |
複雑なシナリオでの実践
クロスサイクル依存の設定
ノードの実行が、前サイクルの先祖ノードのインスタンスに依存する場合、クロスサイクル依存 を設定する必要があります。例として、T+1 の日次サマリーノードがあり、これは T 日のすべての時次ノードが完了するのを待つ必要があります。
シナリオ:日次サマリーノード B は、毎日
02:00にスケジュールされています。そのデータソースは 時次ノード A です。ノード B は、前日の(T 日の)すべての時次インスタンス(00:00から23:00まで)が正常に実行された後にのみ実行できます。設定方法:ノード B の スケジューリング依存関係 を設定するには、その先祖ノード A への依存関係を クロスサイクル依存 として設定します。詳細については、「前サイクルへの依存関係の設定(クロスサイクル依存)」をご参照ください。

動作の仕組み:設定後、データタイムスタンプ
2025-12-02のノード B のインスタンスは、データタイムスタンプ2025-12-01のノード A のすべてのインスタンスが正常に実行されるのを待ってからトリガーされます。
このシナリオにおいて、ノード B に他の先祖ノードがない場合、ワークスペースのルート頂点をその先祖ノードとして設定できます。
粒度の異なるシナリオおよびクロスサイクル依存関係の詳細については、「複雑な依存関係シナリオにおけるスケジューリング設定の原則と例」をご参照ください。
複雑な反復スケジュールの実装
四半期ごとや半年ごとなど、特別な反復パターンを持つノード(例:四半期決算ノード)については、スケジューリングサイクルと スケジューリングパラメーター を組み合わせることができます。
シナリオ:金融決算ノードは、各四半期の最終決算日に実行する必要があり、過去の四半期全体のデータに依存します。
決算日を設定する際には、月末の特殊項目(例:跨月補充注文、返金取消、手動監査など)に対応するために、通常バッファ期間を確保します。
設定方法:
スケジューリングサイクルの設定:ノードの時刻プロパティで、年次スケジュールを選択し、月を
1, 4, 7, 10と指定し、日を月末日と選択します。DataWorks は、日数が異なる月(30 日または 31 日)およびうるう年を自動的に処理します。スケジューリングパラメーターの使用:コード内で、スケジューリングパラメーターまたはユーザー定義関数を使用して、必要なデータ日付範囲を動的に計算します。たとえば、現在のデータタイムスタンプに基づいて四半期の開始日および終了日を決定できます。詳細については、「サポートされているスケジューリングパラメーターの形式」をご参照ください。
実行ロジック:DataWorks は、30 日または 31 日(うるう年の場合は 2 月 29 日)が「月末日」であるかどうかを自動的に識別します。この期間中、その他の日付のインスタンスは自動的にドライランを実行します。これにより、論理的な依存関係の継続性と金融計算の正確な実行の両方が保証されます。
取引日スケジュールのためのスケジューリングカレンダーの使用
スケジュール時刻(cron 式)は、ノードがスケジューリングサイクル内で実行される時刻を定義しますが、スケジューリングカレンダーは実行日付のフィルターとして機能します。これらを組み合わせることで、取引日やプロモーション日など、特定の営業日のみにノードを実行させることを精密に制御できます。
シナリオ:証券会社向けの証券清算ノードは、毎日の 取引日(祝日以外) に 22:00 に実行する必要があります。スケジュールされた日が週末または祝日に該当する場合、ノードは無効なインスタンスの生成やドライランによるリソースの浪費を避けるために、自動的に実行を停止する必要があります。
ソリューション:スケジューリングカレンダー + スケジュール時刻
カスタムカレンダーの作成:DataWorks のリソースセンターで、「取引カレンダー」を手動または自動同期により年間のすべての取引日を管理できます。詳細については、「スケジューリングカレンダーの設定」をご参照ください。
スケジューリングプロパティの設定:ノードを毎日
22:00にトリガーするよう設定し、カスタムの「取引カレンダー」を選択します。
実行ロジック:
取引日の場合:システムは、当日がカレンダーに登録されていることを検出し、ノードは 22:00 に定時に開始します。
非取引日の場合(例:中国正月):システムは、ノードのインスタンス生成を自動的にスキップするか、生成されたインスタンスをドライランとして実行し、実際の計算リソースを消費しません。
スケジューリングカレンダーは、実行日付のフィルターと考えることができます。これを時間単位または分単位のスケジュールと組み合わせることで、日付と時刻の両方に対する二重フィルターを実現できます。
たとえば、08:00 および 18:00 に毎日実行するよう設定された時間単位のノードを、月曜日および金曜日のみを含むスケジューリングカレンダーに関連付けた場合、最終的には月曜日および金曜日のこれらの指定時刻のみに実行されます。
ベストプラクティス
1. 静的スケジューリング計画および設定
目標:レイヤード戦略を用いて、スケジューリングロジックとビジネスロジックを分離します。
コア戦略:
線形ワークフロー
最初のノードのみにスケジュール時刻を設定します(例:最初のノードのスケジュール時刻を
07:00に設定)。子孫ノードは、依存関係を通じて自動的にトリガーされ、実行効率を最大化します。時刻ベースのタスク
特定のノードに対して、正確で独立したスケジュール時刻を設定します。時刻を設定する際には、先祖ノードのスケジュール時刻を子孫ノードよりも遅く設定しないように注意してください。そうすると、子孫ノードがオンタイムで実行されなくなる可能性があります。
スケジューリングカレンダーおよび有効期間を使用して、ノードのアクティブ期間を制御します。たとえば、ノードを 2026 年 1 月 1 日から 2026 年 12 月 31 日までの平日のみに実行するよう制御できます。
動的スケジューリングパラメーター
${yyyymmdd}などのスケジューリングパラメーターと組み合わせて、時間パラメーターを動的に置き換えます。
2. ベースラインを用いたインテリジェントな動的制御
目標:コアノードの納期達成を保証し、手動介入コストを削減します。
前提条件:すでに ベースライン を作成し、ノードの優先度を設定済みである必要があります。
コアメカニズム:
コミットメント時刻および優先度の定義:
コアノード(例:09:00)のコミット済み完了時刻を定義し、高優先度ベースライン に紐付けます。システムは、優先度に基づいてクリティカルパスを自動的に識別し、ODS レイヤーの抽出などの高優先度ノードにまず計算リソースを割り当てます。
自動リソース「ピーク負荷シフト」:
各非コアノードに対して、開始時刻を段階的に設定する手動作業は不要です。スケジューリングエンジンが、ピーク時のリソース競合を回避するために、非コアのレポートノードを自動的にキューイングし、クリティカルパスへのリソース供給を優先します。
動的予測およびリアルタイムアラート:
過去の実行時間に基づき、システムは早朝にその日のワークフローが納期を逃すかどうかを動的に予測できます。たとえば、07:00 にシステムが 09:15 への遅延を予測した場合、即座にアラートを発行し、クリティカルパス上のボトルネックノードをハイライト表示します。これにより、「事後対応」から「能動的介入」へのアプローチが実現します。
ベストプラクティスは、終了ノードから逆算して導き出された最遅開始時刻と、インテリジェントなベースラインを組み合わせることです。この方法では、静的計画によって起点を設定し、その後、ベースラインを用いてワークフロー全体にわたる動的かつ優先度に基づくスケジューリングを実施します。これにより、手動保守コストが削減され、計画から予測に至る包括的な保証システムが構築され、コアデータ出力の高い確実性が確保されます。