LakeFlowジョブの無効化されたタスク
Databricks LakeFlow Job内の無効化されたタスクは、ジョブから削除されずに実行時にスキップされます。 無効化されたタスクは構成と実行履歴を保持するため、後でタスクを再構築しなくても再度有効化できます。 このページでは、無効化されたタスクがジョブ実行時にどのように動作するか、また、下流タスク、修復、部分実行にどのような影響を与えるかについて説明します。
下流タスクの動作
ジョブを実行するとき、 LakeFlowジョブは各ダウンストリーム タスクの 実行 if 条件をそのアップストリーム タスクに対して評価し、タスクを実行するか、スキップするか、無効にするかを決定します。 無効化されたタスクは、終了コードDisabledで完了しました。
1 つ以上の親タスクが無効になっているためにダウンストリーム タスクの 実行 if 条件が満たされない場合、 LakeFlowジョブはダウンストリーム タスクもその実行に対して無効としてマークします。 無効化された下流タスクは、有向非巡回グラフ(DAG)ビューの右上隅に表示されるので、実行を開始する前にその影響を確認できます。
以下の表は、上流タスクが無効になっている場合の各 実行 条件における下流タスクの動作をまとめたものです。 「実行 条件」オプションの完全なリストについては、 「タスクの依存関係の設定」を参照してください。
条件を満たす場合を実行する | 親タスクが無効になっている場合の下流タスクの動作 | 例 |
|---|---|---|
すべて成功しました (デフォルト) | 下流タスクは実行されません。無効化された親タスクは、 |
|
少なくとも1つが成功しました | 下流タスクは、少なくとも1つの親タスクが成功した場合に実行されます。他のすべての親タスクが失敗したか無効になった場合、ダウンストリーム タスクは実行されません。 |
|
失敗したものはありません | 下流タスクは、少なくとも1つの親タスクが失敗なく完了した場合に実行されます。すべての親タスクが無効になっている場合、下流タスクは実行されません。 |
|
すべて完了 | 下流タスクは正常に実行されます。無効化された親タスクは完了したものとみなされます。 |
|
少なくとも1回失敗しました | 下流タスクは、他の親タスクのうち少なくとも1つが失敗した場合に実行されます。無効化された親タスクは、失敗とはみなされません。他の親タスクが失敗しなかった場合、下流タスクは実行されません。 |
|
すべて失敗しました | 下流タスクは実行されません。無効化された親タスクは、失敗とはみなされません。 |
|
ジョブ定義にdisabled: trueが含まれるのは、明示的に無効にしたタスクのみです。LakeFlowジョブは、実行作成時にダウンストリームの無効化を決定し、それをジョブ設定に保持しません。
タスクを無効にする
UI を使用してタスクを無効化または再度有効化するには、 「タスクを無効にする」を参照してください。
APIまたはバンドルを介してタスクを無効にするには:
Jobs REST API 、Databricks CLI、Databricks SDK、または宣言型自動化バンドルを使用して、ジョブ設定でタスクにdisabled: true設定します。
{
"tasks": [
{
"task_key": "load_raw_data",
"disabled": true,
"notebook_task": {
"notebook_path": "/Shared/etl/load_raw_data"
}
}
]
}
jobs/getとjobs/list応答は、明示的に無効にしたタスクに対してのみdisabled: trueを返します。実行中に動的に無効化されたタスクは、保存されているジョブ設定には反映されません。
修復および部分実行で無効化されたタスク
無効化されたタスクは、修復実行および部分実行では、通常のスケジュールされた実行とは異なる動作をします。
- 修復: LakeFlowジョブは、タスクの無効状態ではなく、各タスクの実行状態を使用して、何を修復するかを決定します。 無効化されたタスクを修復の一部として強制的に実行するには、修復要求の
rerun_tasksにそのタスクを含めます。失敗したタスクとスキップしたタスクの再実行を参照してください。 - 部分実行: 無効化されたタスクは、部分実行を開始するときに当然選択されませんが、ジョブ設定で再度有効にしなくても、一度実行するように選択できます。 LakeFlowジョブは選択したタスクを正確に実行し、部分的な実行中に伝播する 場合は実行 を適用しません。
制限事項
無効化されたタスクには、以下の制限があります。
- 条件値を提供する上流タスクが無効になっている場合、
If/else conditionタスクは失敗します。 - 入力値を提供する上流タスクが無効になっている場合、
For eachタスクは失敗します。 - ジョブ定義では、ユーザーが無効にしたタスクのみが
disabled: trueとして表示されます。ジョブを実行する前に、どの下流タスクが影響を受けるかを確認するには、ジョブUIのDAGビューを使用します。