スケジューリング周期は、本番環境でノードが自動的に実行される頻度を定義します。この周期に基づき、DataWorks のスケジューリングシステムは定期インスタンスを生成し、ノードの依存関係と各インスタンスのスケジュール時刻に従って実行します。
基本概念
定期インスタンス:データタイムスタンプごとに、スケジューリングシステムは、毎日 00:00 に実行するなどのスケジューリング設定に基づいて、定期タスクのランタイムエンティティを生成します。このエンティティが定期インスタンスです。ノードのランタイム、ステータス、ログは、このインスタンスに関連付けられます。
周期をまたぐ依存関係:DataWorks では、異なるスケジューリング周期を持つノードが相互に依存できます。たとえば、日単位の下流ノードが時間単位の上流ノードに依存する場合があります。ノード間の依存関係は、それらの定期インスタンス間の依存関係です。詳細については、「周期をまたぐ依存関係」をご参照ください。
ドライラン: 週次、月次、または年次ノードなど、毎日実行されないノードに対して、スケジューリングシステムはスケジュールされていない日にドライランインスタンスを生成します。このインスタンスがスケジュール時刻に達すると、そのステータスはすぐに「成功」に変わりますが、ノード内のコードロジックは実行しません。ドライランの主な目的は、依存関係を解決し、下流の日次ノードが正しくトリガーされるようにすることです。
インスタンスステータスは「成功」、実行時間は 0 秒で、ログは生成されません。
スケジューリングリソースやコンピューティングリソースを使用しません。
下流ノードの実行をブロックしません。上流ノードがドライランインスタンスの場合でも、下流ノードは実行条件が満たされると、スケジュールどおりに実行されます。
基本原則とシナリオ
スケジュール実行の条件
定期インスタンスは、以下の両方の条件が満たされた場合にのみ実行されます。条件が満たされる順序は問いません。
すべての上流インスタンスが正常に実行完了していること。これには、ドライランとして完了したインスタンスも含まれます。
インスタンスがスケジュール時刻に達していること。
したがって、設定されたスケジュール時刻はあくまで期待されるスケジュール時刻です。ノードの実際の実行時間は、上流ノードの完了時刻、利用可能なコンピューティングリソース、ノード固有の実行条件などの要因に影響されます。
ワークフローのスケジューリングシナリオ
ノード 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 のスケジュール時刻を | |
スケジュール時刻更新の影響
Scheduling Settings でノードのスケジュール時刻を変更してノードを再度公開すると、その影響は選択する インスタンス生成メソッド によって異なります。
翌日 (T+1) に生成:このオプションを選択してノードを公開すると、当日 (T) と前日 (T-1) にすでに生成されているインスタンスのスケジュール時刻が新しい時刻に更新されます。これは、完了したインスタンスとまだ実行されていないインスタンスの両方に適用されます。将来のインスタンスは新しい時刻に基づいて生成されます。
今すぐインスタンスを生成:このオプションを選択すると、新しい設定に基づいて新しいインスタンスが即座に生成されます。過去のインスタンスのスケジュール時刻は変更されません。
スケジューリングタイプの構成
DataWorks は、分、時間、日、週、月、年の 6 つのスケジューリング周期に対応しています。Data Studio のノード編集ページで、右側の Scheduling Settings をクリックします。次に、Scheduling time セクションで設定を構成します。
スケジュール時刻の設定方法は、ノードの構成方法によって異なります:
ワークフローノード:ノードがワークフローの一部である場合、スケジュール時刻はワークフロー全体に対して設定されます。ワークフロー内の個々のノードのスケジュール時刻を設定することはできません。変更するには、ワークフローのスケジューリング設定に移動してください。
独立ノード:ノードがどのワークフローにも属していない場合、そのスケジュール時刻はノード自体で独立して設定されます。
分単位のスケジューリング
分単位のスケジューリングの最小間隔は 1 分です。
設定例
目標:毎日 00:00 から 23:59 まで 30 分ごとにノードを実行するようにスケジュールします。
cron 式は時刻の選択に基づいて自動的に生成され、手動で変更することはできません。

スケジューリングの詳細
この設定により、毎日 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 式は時刻の選択に基づいて自動的に生成され、手動で変更することはできません。

スケジューリングの詳細
スケジューリングシステムは、毎日 00:00、06:00、12:00、18:00 のスケジュール時刻を持つ 4 つのインスタンスを生成します。
詳細については、「時間単位タスクの依存関係」をご参照ください。
日単位のスケジューリング
日単位のノードは、指定された時刻に 1 日 1 回実行されます。新しい定期タスクを作成すると、デフォルトのスケジュール時刻は 00:00 から 00:30 の期間内でランダムに生成されます。この時刻は必要に応じて変更できます。
設定例
目標:毎日 13:00 にノードを 1 回実行します。
cron 式は時刻の選択に基づいて自動的に生成され、手動で変更することはできません。

スケジューリングの詳細
スケジューリングシステムは、このタスクに対して毎日 1 つのインスタンスを生成し、その日の 13:00 にスケジュール時刻が設定されます。
詳細については、「日単位タスクの依存関係」をご参照ください。
週単位のスケジューリング
スケジュールされていない日には、週単位のノードはドライランをトリガーして、下流の依存関係が正しく実行されるようにします。詳細については、「ドライラン」をご参照ください。
設定例
目標:毎週月曜日と金曜日の指定された時刻にタスクを実行します。月曜日と金曜日に生成されたインスタンスは正常にスケジュールされ、実行されます。他の日に生成されたインスタンスはドライランになります。
cron 式は時刻の選択に基づいて自動的に生成され、手動で変更することはできません。

スケジューリングの詳細
スケジューリングシステムは、タスクのインスタンスを自動的に生成して実行します。
データバックフィル機能を使用する際は、選択するデータタイムスタンプに注意してください。DataWorks では、データタイムスタンプ = スケジュール日付 - 1 日です。たとえば、月曜日に実行される週単位タスクのデータをバックフィルするには、データタイムスタンプとして前の日曜日を選択する必要があります。他の日付を選択した場合、データバックフィルインスタンスはドライランになります。
月単位のスケジューリング
スケジュールされていない日には、月単位のノードはドライランをトリガーして、下流の依存関係が正しく実行されるようにします。詳細については、「ドライラン」をご参照ください。
月単位のスケジューリングでは、Specified time パラメーターを Last day of every month に設定できます。
設定例
目標:毎月最終日の指定された時刻にタスクを実行します。月の最終日に生成されたインスタンスは正常にスケジュールされ、実行されます。他の日に生成されたインスタンスはドライランになります。
cron 式は時刻の選択に基づいて自動的に生成され、手動で変更することはできません。

スケジューリングの詳細
スケジューリングシステムは、タスクのインスタンスを自動的に生成して実行します。
データバックフィル機能を使用する際は、選択するデータタイムスタンプに注意してください。DataWorks では、データタイムスタンプ = スケジュール日付 - 1 日です。たとえば、1 月 31 日に実行される月末タスクのデータをバックフィルするには、データタイムスタンプとして 1 月 30 日を選択する必要があります。他の日付を選択した場合、データバックフィルインスタンスはドライランになります。
年単位のスケジューリング
スケジュールされていない日には、年単位のノードはドライランをトリガーして、下流の依存関係が正しく実行されるようにします。詳細については、「ドライラン」をご参照ください。
設定例
目標:毎年 1 月、4 月、7 月、10 月の 1 日と最終日にタスクを実行します。指定された日に生成されたインスタンスは正常にスケジュールされ、実行されます。他の日に生成されたインスタンスはドライランになります。

スケジューリングの詳細
スケジューリングシステムは、タスクのインスタンスを自動的に生成して実行します。
詳細については、「複雑な依存関係を設定するための原則と例」をご参照ください。