スケジューリング周期は、本番環境でノードが自動実行される頻度を定義します。この周期に基づき、DataWorks のスケジューリングシステムは定期インスタンスを生成し、ノードの依存関係と各インスタンスのスケジュール時刻に従って実行します。
基本概念
-
定期インスタンス:スケジューリングシステムは、各データタイムスタンプに対して、スケジューリング設定 (例:毎日 00:00 に実行) に基づいて定期タスクのランタイムエンティティを生成します。このエンティティが定期インスタンスです。ノードのランタイム、ステータス、ログはこのインスタンスに関連付けられます。
-
周期をまたぐ依存関係:DataWorks では、異なるスケジューリング周期を持つノード同士が依存関係を持つことができます。例えば、日次実行の下流ノードが、時間単位で実行される上流ノードに依存するケースなどです。ノード間の依存関係は、それぞれの定期インスタンス間の依存関係となります。詳細については、「周期をまたぐ依存関係」をご参照ください。
-
ドライラン:週次、月次、年次ノードなど、毎日実行されないノードに対して、スケジューリングシステムはスケジュールされていない日にドライランインスタンスを生成します。このインスタンスは、スケジュール時刻に達すると、ステータスが即座に「成功」に変わりますが、ノード内のコードロジックは実行されません。ドライランの主な目的は、依存関係を解決し、下流の日次ノードが正しくトリガーされることを保証するためです。
-
インスタンスのステータスは「成功」となり、実行時間は 0 秒で、ログは生成されません。
-
スケジューリングリソースやコンピューティングリソースを使用しません。
-
下流ノードの実行をブロックしません。上流ノードがドライランインスタンスであっても、下流ノードは実行条件が満たされ次第、スケジュール通りに実行されます。
-
基本原則とシナリオ
スケジュール実行の条件
定期インスタンスは、以下の両方の条件が満たされた後にのみ実行されます。条件が満たされる順序は問いません。
-
すべての上流インスタンスが正常に実行完了していること。これには、ドライランとして完了したインスタンスも含まれます。
-
インスタンスがスケジュール時刻に達していること。
したがって、設定されたスケジュール時刻はあくまで期待されるスケジュール時刻です。ノードの実際の実行時間は、上流ノードの完了時刻、利用可能なコンピューティングリソース、ノード固有の実行条件などの要因に影響されます。
毎日 00:00 前後の時間帯は DataWorks のスケジューリングが最も集中する時間帯であり、大量のタスクが同時にトリガーされます。タスクが 00:00 にスケジュールされている場合、通常、スケジュール時刻と実際の実行開始との間に数分の遅延が発生します。これは想定される動作です。
タスクが開始時刻の影響を受けやすい場合は、ピーク期間を避けるため、スケジュール時刻を 00:00 以降の時刻 (例: 00:10 または 01:00) に設定することをお勧めします。 ビジネス要件でタスクを 00:00 に開始する必要がある場合 (T+1 データウェアハウス処理パイプラインの第 1 レイヤーのタスクなど)、ダウンストリームの適時性評価でこの遅延を考慮してください。
ワークフローのスケジューリングシナリオ
ノード A、B、C (A→B→C) で構成されるワークフローにおいて、スケジュール時刻の設定はワークフロー全体の実行に影響します。
|
シナリオ 1:開始時刻の統一 |
|
|
|
ワークフロー全体は 03:00 以降に開始する必要があります。 これを実現するには、開始ノード A のスケジュール時刻を |
|
シナリオ 2:各ノードで異なる開始時刻 |
|
|
|
ノード A は 03:00 に実行がスケジュールされ、ノード B は 05:00 以降、ノード C は 06:00 以降に実行される必要があります。ノード A、B、C のスケジュール時刻を、それぞれ |
|
シナリオ 3:一部のノードに特定の開始時刻 |
|
|
|
ノード A は 03:00 に実行されるようにスケジュールされ、ノード B は 05:00 になるまで実行してはならず、ノード C には特定の時刻要件はありません。ノード A のスケジュール時刻を |
スケジュール時刻更新の影響
スケジューリング設定 でノードのスケジュール時刻を変更し、ノードを再デプロイすると、選択した インスタンス生成モード によって影響が異なります。
-
モード A:翌日 (T+1、デフォルト):このオプションを選択してノードをデプロイすると、既に生成されている過去 2 日間 (T および T-1) のインスタンス (完了済みおよび待機中のインスタンスを含む) のスケジュール時刻が、新しく設定された時刻に更新されます。まだ生成されていない将来のインスタンスは、新しい時刻で生成されます。
-
モード B:デプロイ後すぐ:このオプションを選択すると、新しい設定に基づいて新しいインスタンスが即座に生成されます。履歴インスタンスのスケジュール時刻は変更されません。
スケジューリングタイプの設定
DataWorks は、分、時、日、週、月、年という 6 つのスケジューリング周期をサポートしています。DataStudio のノード編集ページで、右側の スケジューリング設定 をクリックし、スケジュール時刻 セクションで設定します。
スケジュール時刻の設定方法は、ノードの構成方法によって異なります。
-
ワークフローノード:ノードがワークフロー内に構成されている場合、スケジュール時刻はワークフローレベルで設定されます。ワークフロー内の個々のノードは、独自のスケジュール時刻設定を持つことはできません。スケジュール時刻を変更するには、ワークフローのスケジューリング設定に移動します。
-
スタンドアロンノード:ノードがどのワークフローにも属していない場合、スケジュール時刻はノード自体で独立して設定されます。
分レベルのスケジューリング
分レベルのスケジューリングの最小間隔は 1 分です。
設定例
目標: ノードが毎日 00:00 から 23:59 の間に 30 分ごとにスケジュールされます。
cron 式は選択した時刻に基づいて自動生成され、手動での変更はできません。
有効日を [永続] に設定します。自動生成された cron 式は 00 */30 00-23 * * ? です。
スケジューリングの詳細
上記の設定では、1 日あたり 48 個の定期インスタンスが生成され、スケジュール時刻は 00:00、00:30、01:00、...、23:30 となります。各インスタンスのデータタイムスタンプ (bizdate) は当日です。
分レベルのスケジューリングに関するその他の依存関係シナリオについては、「分レベルのスケジューリングにおける周期をまたぐ依存関係」をご参照ください。
時間レベルのスケジューリング
注意事項
-
時間範囲は、両端を含む原則に従います。 たとえば、ノードを
00:00から03:00の間で 1 時間ごとに実行するように設定した場合、スケジューリングシステムは、スケジュール時刻が00:00、01:00、02:00、および03:00である 4 つのインスタンスを生成します。 -
時間範囲と間隔を設定するか、複数の特定の実行時刻を直接指定することができます。
設定例
目的: ノードは毎日 00:00 から 23:59 の間に 6 時間ごとにスケジュールされます。
cron 式は選択した時刻に基づいて自動生成され、手動での変更はできません。
[実行周期] を [時間] に設定し、[時間範囲]タブを選択し、[有効日] を [無期限] に設定します。 自動的に生成された cron 式は 00 00 00-23/6 * * ? です。
スケジューリングの詳細
スケジューリングシステムは、1 日あたり 4 つのインスタンスを生成し、スケジュール時刻は 00:00、06:00、12:00、18:00 です。
時間レベルのスケジューリングに関するその他の依存関係シナリオについては、「時間レベルのスケジューリングにおける周期をまたぐ依存関係」をご参照ください。
日次スケジューリング
日次スケジュールのノードは、指定されたスケジュール時刻に 1 日 1 回実行されます。ノードを作成すると、多数のタスクが 00:00 に同時に開始されるのを防ぐために、デフォルトのスケジュール時刻は 00:00–00:30 の範囲内でランダムに生成されます。これは必要に応じて変更できます。
設定例
目標: ノードを1日に1回、13:00に実行する。
cron 式は選択した時刻に基づいて自動生成され、手動での変更はできません。
[有効期間] を [無期限] に設定します。
スケジューリングの詳細
スケジューリングシステムは、このタスクに対して 1 日 1 つのインスタンスを生成し、スケジュール時刻は当日の 13:00 です。
日次スケジューリングに関するその他の依存関係シナリオについては、「日次スケジューリングにおける周期をまたぐ依存関係」をご参照ください。
週次スケジューリング
スケジュールされていない日には、週次スケジューリングされたノードはドライランをトリガーし、下流の依存関係が正常に実行されるようにします。詳細については、「ドライラン」をご参照ください。
設定例
目標:タスクを毎週月曜日と金曜日の指定時刻に実行します。月曜日と金曜日に生成されたインスタンスは正常にスケジュール・実行され、他の曜日のインスタンスはドライランインスタンスとなります。
cron 式は選択した時刻に基づいて自動生成され、手動での変更はできません。
スケジュール時刻 を [00:00] に、[有効日] を [無期限] に設定します。自動生成された cron 式は 00 00 00 ? * 1,5 です。
スケジューリングの詳細
スケジューリングシステムは、タスクのインスタンスを自動的に生成して実行します。
データ補填機能を使用する場合、選択するデータタイムスタンプに注意してください。DataWorks では、データタイムスタンプ = スケジュール日 - 1 となります。例えば、月曜日に実行される週次スケジューリングタスクを補填するには、前週の日曜日をデータタイムスタンプとして選択します。他の日付を選択した場合、補填インスタンスはドライランインスタンスになります。
月次スケジューリング
スケジュールされていない日には、月次ノードはドライランをトリガーし、下流の依存関係が正常に実行されるようにします。詳細については、「ドライラン」をご参照ください。
月次スケジューリングでは、指定時間 を 月末 に設定できます。
設定例
目標:ノードを毎月最終日の指定時刻に実行します。毎月最終日に生成されたインスタンスはスケジュール通りに実行され、他の日のインスタンスはドライランとなります。
cron 式は選択した時刻に基づいて自動生成され、手動での変更はできません。
[スケジューリング周期] を [月] に設定し、時刻を毎月最終日の [00:00] に設定します。
スケジューリングの詳細
スケジューリングシステムは、ノードのインスタンスを自動的に生成して実行します。
データ補填機能を使用する場合、選択するデータタイムスタンプに注意してください。DataWorks では、データタイムスタンプ = スケジュール日 - 1 となります。例えば、1 月 31 日に実行される月末ノードを補填するには、データタイムスタンプを 1 月 30 日に設定します。異なる日付を選択した場合、補填インスタンスはドライランになります。
年次スケジューリング
スケジュールされていない日には、年次ノードはドライランをトリガーし、下流の依存関係が正常に実行されるようにします。詳細については、「ドライラン」をご参照ください。
設定例
目標:ノードを毎年 1 月、4 月、7 月、10 月の 1 日と最終日に実行します。指定日に生成されたインスタンスはスケジュール通りに実行され、他の日のインスタンスはドライランとなります。
フォームで、スケジュール時刻 を [00:00] に、[有効日] を [永続] に設定します。対応する cron 式は 00 00 00 L,1 1,4,7,10 ? です。
スケジューリングの詳細
スケジューリングシステムは、ノードのインスタンスを自動的に生成して実行します。
その他の依存関係シナリオについては、「周期をまたぐ依存関係」をご参照ください。