時間プロパティは、DataWorks がいつ、どのように定期タスクをトリガーするかを定義するコアスケジューリング条件です。これには、スケジュール時刻に加え、インスタンス生成モード、スケジューリングカレンダー、再実行設定、タイムアウトポリシーなどの詳細設定が含まれます。これらのパラメーターを組み合わせることで、タスクのトリガールール、実行境界、およびエラーからの自動回復を制御します。このガイドでは、これらの時間プロパティを設定して、安定的で信頼性の高い自動化されたデータワークフローを構築する方法について説明します。
クイックスタート:設定例
シナリオ: ある E コマース企業が、毎日 02:00 に前日の総売上を自動的に計算する必要があります。ネットワークの変動などの要因でタスクが失敗した場合、システムは自動的に 3 回再試行する必要があります。
ステップ 1: スケジュール時刻の設定
スケジューリング周期の設定:タスク名をダブルクリックします。右側の セクションで、[スケジューリング周期] を [日] に設定します。
スケジュール時刻の設定:スケジュール時刻を 02:00 に設定します。
ステップ 2: スケジューリングポリシーの設定
再実行プロパティの定義:[再実行] を [実行ステータスに関係なく許可] に設定します。
失敗時の自動再実行:[失敗時の自動再実行] を選択し、再試行回数を
3に、間隔を5 分に設定します。他のプロパティはデフォルト値のままにします。
結果:
タスクをデプロイすると、システムは翌日 (T+1) から毎日 02:00 にタスクを自動的にトリガーします。タスクが失敗した場合、システムは 5 分ごとに再試行します。タスクは最大 4 回 (通常の実行 1 回 + 再試行 3 回) 実行されます。
機能紹介
時間プロパティの設定は、定期タスクの生成から実行までの全プロセスを定義します。これには、以下のコアディメンションが含まれます:
スケジュール時刻:タスク実行のスケジューリング頻度と特定の時刻を定義します。
インスタンスのライフサイクル管理:インスタンスがいつ作成され、その有効期間がどうなるかを決定します。これには以下が含まれます:
インスタンス生成モード: インスタンスが生成されるタイミングを制御します。
デプロイメント当日または翌日。
有効期間:タスク全体の有効期間を設定します。
スケジューリングカレンダー:祝日などの非稼働日を除外します。
実行ポリシー:スケジュール時刻におけるインスタンスの動作を定義します。例えば、通常実行、ドライラン (スキップ)、または一時停止などです。
例外とフォールトトレランス:タイムアウト定義と再実行設定を通じて、タスクの失敗やタイムアウトなどの例外に対する自動処理を提供します。
スケジュール時刻
スケジュール時刻は、タスクの計画された実行時間 (定刻とも呼ばれる) を制御します。これにより、本番環境でタスクノードがどれくらいの頻度で自動的にトリガーされるかが決まります。システムは、設定した周期に基づいて対応する数の定期インスタンスをタスクに対して生成します。その後、これらのインスタンスのスケジュール時刻とスケジューリング依存関係を使用して、ワークフロー全体の自動実行を管理します。
スケジュール時間と業務日付は、最も重要な 2 つのベースライン時間
DataWorks の概念。 詳細については、「コアコンセプト: 時間ベースライン」をご参照ください。
スケジューリング周期の独立性と依存性
独立した頻度:タスクのスケジューリング頻度 (時間単位や日単位など) は、それ自体の設定によって決定され、上流タスクの頻度とは独立しています。例えば、日次レポートタスクは、時間単位のデータ準備タスクに依存することができます。異なる周期頻度を持つ依存関係の設定に関する詳細については、「ベストプラクティス:複雑な依存関係を持つスケジューリング設定の原則と例」をご参照ください。
インスタンスの依存関係:異なるスケジューリング周期を持つタスク間の依存関係 (周期をまたぐ依存関係) は、本質的にインスタンスの依存関係です。システムはこれらを自動的に解決し、下流インスタンスが、同じビジネス日付に対応するすべての上流インスタンスが成功した後にのみ実行されるようにします。
ドライランメカニズム:下流タスクのブロックを避けるため、非日次タスク (週次、月次、年次など) は、実行日以外の日にはドライランインスタンスを生成します。このインスタンスは、コードを実行したりリソースを消費したりすることなく、即座に成功状態に設定されます。これにより、下流の日次タスクが正常にトリガーされることが保証されます。
スケジュール時刻と実際の実行時間
スケジュール時刻:スケジューリング設定で指定した時刻は、タスクの期待される開始時刻です。これは、タスクが実行を開始できる最も早い時刻です。
実際の実行時間:タスクの実際の開始時刻は、以下の 2 つの条件が同時に満たされるかどうかに依存します:
すべての上流インスタンスが正常に実行された。
コンピューティングリソースが利用可能である。
スケジューリングタイムゾーン
タスクのスケジュール時刻は、デフォルトでそのワークスペースのリージョンのタイムゾーンを使用します。夏時間の変更などのシナリオに対応するために、スケジューリングタイムゾーンを変更することができます。詳細については、「スケジューリングタイムゾーンの切り替え」および「シナリオ:夏時間の変更が定期タスクに与える影響」をご参照ください。
以下のセクションでは、さまざまなシナリオの設定例を示します:
分単位のスケジューリング
開始時刻、終了時刻、および実行間隔を設定します。最小間隔は 1 分です。指定された期間内に、システムは固定間隔で複数のインスタンスを生成します。
設定例
対象ノードは、毎日 00:00 から 23:59 までの時間帯に 30 分ごとにスケジュールされます。以下の図に設定の詳細を示します。

インスタンスの詳細
以下の図は、30 分ごとにスケジュールされるノードのスケジュール時刻とスケジューリングパラメーターの置換を示しています。
時間単位のスケジューリング
これは、高頻度の同期やニアリアルタイムコンピューティングのシナリオに適しています。
インスタンス生成ロジック:システムは、閉区間 [開始時刻, 終了時刻] に基づいて定期インスタンスを計算します。
例:時間範囲を
[00:00, 03:00]、間隔を1 時間に設定した場合、システムは 4 つのインスタンスを生成します。それらの計画実行時刻は、正確に 00:00、01:00、02:00、03:00 です。
設定方法:
頻度ベースのトリガー:指定された期間内に、固定間隔 (1 時間ごとなど) でタスクがループ実行されます。
特定時刻トリガー:タスクを実行するための、1 つ以上の離散的で正確な時刻を直接指定します。
設定例
対象タスクは、毎日 00:00 から 23:59 までの時間帯に 6 時間ごとに自動的にスケジュールされます。以下の図に設定の詳細を示します。

スケジューリングの詳細
スケジューリングシステムは、毎日 4 つのインスタンスを生成し、それらをスケジュール時刻である 00:00、06:00、12:00、18:00 に実行します。以下の図に示します。
日単位のスケジューリング
日単位のスケジューリングは、最も一般的なスケジューリング方法です。指定された有効期間内に、1 日 1 回、指定された時刻にタスクを実行できます。タスクを作成すると、デフォルトで日単位のスケジューリングに設定され、スケジュール時刻は 00:00 から 00:30 の間でランダムに生成されます。必要に応じて、異なる実行時刻を指定できます。例えば、毎日 13:00 にタスクを 1 回実行するように指定できます。
設定例

スケジューリングの詳細
スケジューリングシステムは、タスクのインスタンスを自動的に生成して実行します。以下の図は、各ビジネス日付のデータ変換時刻を示しています。
週単位のスケジューリング
これは、週に 1 回の固定頻度で行われるビジネスサマリーや定期的なデータメンテナンスに適しています。
インスタンス生成ロジック:システムは、有効期間内に毎日インスタンスを生成します。
通常実行:コードロジックは、選択した実行日 (月曜日と金曜日など) にのみスケジュール通りにトリガーされます。
自動ドライラン:選択されていない日 (火曜日、水曜日、木曜日、土曜日、日曜日など) に生成されたインスタンスは、自動的に成功したドライラン状態に設定されます。これらは実際にはロジックを実行せず、コンピューティングリソースも消費しません。
設定例
対象タスクが毎週月曜日と金曜日にスケジュール実行されるように設定されている場合、月曜日と金曜日に生成されたインスタンスは正常にスケジュールされ、実行されます。火曜日、水曜日、木曜日、土曜日、日曜日に生成されたインスタンスはドライランされます。これは、スケジュールされた実行時刻に達すると、コードロジックを実行せずにステータスが直接「成功」に設定されることを意味します。以下の図に設定の詳細を示します。

スケジューリングの詳細
スケジューリングシステムは、タスクのインスタンスを自動的に生成して実行します。
月単位のスケジューリング
これは、暦月に基づくデータ処理シナリオに適しています。財務決済、月次業績レポート、ユーザー行動の月次分析など、コアタスクの一般的な周期です。
インスタンス生成ロジック:システムは、選択した月の特定の日付に基づいてインスタンスを生成します。月単位のスケジューリングインスタンスは、暦月全体を表します。
通常実行:コードロジックは、選択した実行日 (15 日や月の最終日など) にのみスケジュール通りにトリガーされます。
自動ドライラン:選択されていない日 (月の 1 日から 14 日など) に生成されたインスタンスは、自動的にドライラン状態に設定されます。これらは実際にはロジックを実行せず、コンピューティングリソースも消費しません。
設定例
対象タスクが毎月の最終日に決済を実行するように設定されている場合、月の最終日に生成されたインスタンスは正常にスケジュールされ、実行されます。他の日に生成されたインスタンスはドライランされます。これは、スケジュールされた実行時刻に達すると、コードロジックを実行せずにステータスが直接「成功」に設定されることを意味します。以下の図に設定の詳細を示します。

スケジューリングの詳細
スケジューリングシステムは、以下の図に示すように、タスクのインスタンスを自動的に生成して実行します。
データバックフィル機能を使用して月単位のスケジューリングタスクのデータをバックフィルする場合、バックフィル用に選択する日付はビジネス日付であり、ビジネス日付 = スケジュール時刻 - 1 日であることにご注意ください。
例:
月の初日に実行されるタスクのデータをバックフィルする場合、データタイムスタンプとして前月の末日を選択します。
月の末日に実行されるタスクのデータをバックフィルする場合、データタイムスタンプとして月の末日の前日を選択します。
バックフィルのデータタイムスタンプとして他の時刻を選択した場合、データバックフィルインスタンスはドライランされます。
依存関係のシナリオに関する詳細については、「ベストプラクティス:複雑な依存関係を持つスケジューリング設定の原則と例」をご参照ください。
年単位のスケジューリング
これは、四半期ごとのサマリー、年次監査、または特定の祝日のためのタスクなど、長周期のデータタスクに適しています。
インスタンス生成ロジック:インスタンスは年間を通じて毎日生成されますが、実際の計算は指定された月と日付にのみトリガーされます。
柔軟な組み合わせ:各四半期の初日または最終日にのみ実行するなど、異なる月にまたがる複数の日付の選択をサポートします。
ドライランメカニズム:実行条件を満たさない日付では、インスタンスは数秒でドライランされます。実際にはロジックを実行せず、コンピューティングリソースも消費しません。
設定例
対象タスクが毎年 1 月、4 月、7 月、10 月の 1 日と最終日に実行されるように設定されている場合、これらの指定された日付に生成されたインスタンスは正常にスケジュールされ、実行されます。他の日付に生成されたインスタンスはドライランされます。これは、スケジュールされた実行時刻に達すると、コードロジックを実行せずにステータスが直接「成功」に設定されることを意味します。以下の図に設定の詳細を示します。

スケジューリングの詳細
スケジューリングシステムは、以下の図に示すように、タスクのインスタンスを自動的に生成して実行します。
cron 式は、時間の選択に基づいて自動的に生成され、手動で変更することはできません。
インスタンスのライフサイクル管理
これらの設定は、タスクインスタンスが作成されるかどうかを決定します。タスクの特定の実行時間を制御するのではなく、より高いレベルでインスタンスを作成すべきか、スケジューリングルール自体がアクティブであるべきかを管理します。
インスタンス生成モード:設定変更が当日に有効になるか、翌日に有効になるかを決定します。翌日有効化 (デフォルト) は、変更が当日のタスクに干渉しないようにし、スムーズな移行を可能にします。即時有効化は、当日のインスタンスを強制的にリセットして変更を適用します。このオプションは、緊急の修正が必要で、変更のリスクを理解し評価した後にのみ使用してください。
有効期間:スケジューリングルール全体の有効期間を定義します。
スケジューリングカレンダー:「取引日」のみに実行するなど、スケジューリングを特定のカレンダーにバインドできます。これは、「週」単位のスケジューリングよりも柔軟な制御方法です。
インスタンス生成モード
ノードを本番環境のスケジューリングシステムにデプロイすると、プラットフォームはノードに設定された [インスタンス生成モード] に基づいて自動スケジュールされたインスタンスを生成します。これは [翌日] または [デプロイ後すぐに生成] のいずれかです。どちらのモードを使用しても、オペレーションセンターの定期タスクページでタスクの最新の依存関係ステータスを表示できます。ただし、定期インスタンスが有効になるタイミングや依存関係が更新されるタイミングは、選択したインスタンス生成モードによって異なります。
デプロイ後すぐに生成されたインスタンスが正常にスケジュールされ、「期限切れドライラン」にならないようにするには、タスクのスケジュール時刻がタスクのデプロイ時刻より少なくとも 10 分後であることを確認してください。タスクは、デプロイ後少なくとも 10 分経過した最初のスケジュール時刻に、新しい設定に基づいてコードロジックを実行するか、インスタンスを再生成します。
どちらのインスタンス生成モードを選択しても、
23:30–24:00の期間中に行われた変更は、ノードが本番環境にデプロイされてから 3 日目に有効になります。この時間帯にタスクの変更を行うことは避けてください。
インスタンス作成方法 | 説明 |
翌日 |
|
ノードはデプロイ後すぐに当日のインスタンスを生成します。生成されたインスタンスが正常にトリガーされるのは、そのスケジュール時刻がデプロイ時刻より少なくとも 10 分後である場合のみです。スケジュール時刻がこのしきい値より前の場合 (過去の時刻やバッファー期間内の時刻を含む)、インスタンスは自動的にドライラン状態に設定されます。これは、実際にはコードを実行せずに成功と見なされることを意味します。
|
有効日
タスクの自動スケジューリングの有効期間を定義します。タスクの有効期間が終了すると、インスタンスは生成されなくなり、期限切れのタスクになります。O&M ダッシュボードで期限切れのタスクを監視および管理できます。
スケジューリングカレンダー
タスクのスケジューリングプロパティを定義するために、DataWorks では以下の 2 種類のカレンダーを使用できます:
デフォルトカレンダー:DataWorks によって提供され、一般的なシナリオに適したカレンダー。
カスタムスケジューリングカレンダー:金融業界など、柔軟なスケジューリング日の要件がある業界やシナリオに適したカスタムカレンダーを定義できます。カレンダーが適用されるワークスペース、カレンダーの有効期間、指定された日付のタスクのスケジューリング方法に関するルールを設定できます。詳細については、「スケジューリングカレンダーの設定」をご参照ください。
選択したスケジューリングカレンダーに基づいて、スケジューリングタイプやスケジュール時刻などの他のスケジューリング設定と組み合わせて、指定された時刻にタスクをスケジュールする必要があります。
実行ポリシー
この設定は、タスクがトリガーされた後にどのように実行されるべきかを定義します。
スケジューリングタイプ
DataWorks は以下のスケジューリングタイプをサポートしています。
スケジューリングタイプ | 影響 | シナリオ |
通常 | コードを実行し、下流ノードをトリガーします。 | 通常状態で実行されている定期タスクは、同じく通常状態の定期インスタンスを生成します。 |
実行をスキップ | インスタンスのスケジュール時刻に達すると、実行されずにステータスが「失敗」に変わります。これにより、下流ノードがブロックされます。一時停止スケジューリングは、オペレーションセンターでノードを凍結するのと同じです。一時停止されたノードは、オペレーションセンターで凍結アイコン | ビジネスプロセスを緊急に中断するのに適しています。 ビジネスプロセスを一定期間実行する必要がない場合、このスケジューリングタイプを選択してビジネスプロセスのルートノードを凍結できます。ビジネスを実行する必要がある場合は、ルートノードの凍結を解除できます。タスクの凍結解除に関する詳細については、「タスクの凍結と凍結解除」をご参照ください。 |
ドライラン | インスタンスのスケジュール時刻に達すると、そのステータスは即座に「成功」に設定されます (実行時間は | ノードを一定期間実行する必要がなく、その下流ノードの実行をブロックしたくない場合にこのスケジューリングタイプを選択します。 |
例外とフォールトトレランス
これは、データリンクの安定性を確保するための重要な部分です。さまざまな起こりうる例外に対するソリューションを提供します。
再実行プロパティ:タスクが失敗したときに、システムがタスクを自動的に再試行するかどうか、またその方法を決定します。
タイムアウト設定:タスクの実行時間に合理的な上限を設定します。時間を超えた場合、システムは自動的にアラートを送信したり、タスクを中断したりして、単一の異常なノードがスタックしてリソースを過剰に消費するのを防ぎます。
タイムアウト定義
タスクの最大許容実行時間を設定できます。実行時間がこの値を超えると、タスクは自動的に終了され、失敗状態に設定されます。これにより、タスクが長時間スタックしてワークフロー全体に影響を与えるのを防ぎます。
範囲:定期インスタンス、データバックフィルインスタンス、およびテストインスタンスに適用されます。
デフォルト値:デフォルトは 3~7 日です。システムは実際の負荷に基づいて値を動的に調整します。
制限:手動で設定できる最大値は 168 時間 (7 日)、最小値は 1 分です。
再実行の説明
再実行ポリシーは、失敗したタスクを自動的に回復するために使用されます。
再実行プロパティを使用する場合、タスクが失敗して再実行された後のデータ品質の問題を避けるために、(特殊なタスクを除き) タスクのべき等性を確保してください。例えば、ODPS SQL で開発する場合、
insert into文の代わりにinsert overwrite文を使用します。
再実行プロパティ:タスクが再実行可能かどうかを定義します。
タイプ
シナリオ
実行ステータスに関係なく許可
結果に影響を与えずに再実行できるべき等なタスクに適しています。
失敗時のみ許可
成功したタスクを誤って再実行することによるデータ汚染を防ぎます。
実行ステータスに関係なく不許可
非べき等なタスク (一部のデータ同期タスクなど) に適しています。このオプションを選択すると、[失敗時の自動再実行] 機能は利用できなくなります。
[失敗時の自動再実行]:タスクが失敗すると、システムは自動的に再実行をトリガーします。
パラメーター
説明
再実行回数
失敗後の自動再試行回数。範囲:1~10 回。
再実行間隔
各再試行間の時間間隔。範囲:1~30 分。
説明タイムアウトによる失敗は、自動再実行をトリガーしません。
よくある質問
Q:タスクの実際の実行時間がスケジュール時刻と異なるのはなぜですか?
A:スケジュール時刻は、タスクの「期待される」開始時刻にすぎません。実際の実行には、① すべての上流依存タスクが成功していること、② スケジューリングリソースが利用可能であること、という 2 つの条件が満たされる必要があります。どちらかの条件が満たされない場合、タスクは待機状態のままになります。
Q:私の上流タスクは時間単位で実行され、下流タスクは日単位で実行されます。これらは互いに依存できますか?
A:はい、できます。DataWorks は、異なるスケジューリング周期を持つタスク間の依存関係をサポートしています。システムは複雑な依存関係解析アルゴリズムを使用して、下流タスクが実行される前に、すべての上流インスタンスが完了するのを待つようにします。詳細については、「複雑な依存関係シナリオにおけるスケジューリング設定の原則と例」をご参照ください。
Q:先週の金曜日のデータをバックフィルした後、bizdate 変数に金曜日の日付が表示されないのはなぜですか?
A:これは通常、「ビジネス日付」と「実行日」を混同しているためです。DataWorks では、ビジネス日付 = スケジュール時刻 - 1 日となります。土曜日の早朝に実行されるようにスケジュールされたタスクのデータをバックフィルする場合、選択する必要があるビジネス日付は金曜日です。
Q:私のタスクはデータを書き込みます。再実行された場合、データは重複しますか?
A:はい、その可能性があります。そのため、タスクがべき等であることを強く推奨します。データ書き込みタスクでは、
INSERT INTO(追記) の代わりにINSERT OVERWRITE(上書き) を使用して、タスクを複数回再実行しても同じ結果になるようにしてください。