Lakeflow ジョブで無効にされたタスク

Azure Databricks Lakeflow ジョブで無効になっているタスクは、ジョブから削除されずに実行時にスキップされます。 無効なタスクは構成と実行履歴を保持するため、後でタスクをリビルドせずに再度有効にすることができます。 このページでは、ダウンストリーム タスク、修復、部分実行への影響など、ジョブの実行時に無効なタスクがどのように動作するかを説明します。

ダウンストリーム タスクの動作

ジョブを実行すると、Lakeflow ジョブは、各ダウンストリーム タスクの Run if 条件をアップストリーム タスクに対して評価し、タスクを実行、スキップ、または無効化するかどうかを決定します。 無効なタスクは、 Disabled 終了コードで完了します。

1 つ以上の親タスクが無効になっているためにダウンストリーム タスクの 実行 条件を満たさない場合、Lakeflow ジョブはその実行に対してダウンストリーム タスクを無効としてマークします。 無効になっているダウンストリーム タスクでは、 大きなアイコンがオフになっている円 が表示されます。[有向非循環グラフ (DAG)] ビューの右上隅に表示されるので、実行を開始する前に影響を確認できます。

次の表は、アップストリーム タスクが無効になっている場合の各 実行 条件のダウンストリーム動作をまとめたものです。 実行オプションの完全な一覧については、「タスクの依存関係の構成」を参照してください。

条件が満たされれば実行する 親タスクが無効になっている場合のダウンストリーム タスクの動作
すべて成功 ( 既定値) ダウンストリーム タスクは実行されません。 無効な親タスクは、 succeeded 要件を満たしていません。 A (disabled) → B: B は実行されません。
少なくとも 1 つが成功しました ダウンストリーム タスクは、少なくとも 1 つの親タスクが成功した場合に実行されます。 他のすべての親タスクが失敗した場合、または無効にされた場合、ダウンストリーム タスクは実行されません。 A (disabled)C (succeeded) → B: B 実行されます。
失敗はありません ダウンストリーム タスクは、少なくとも 1 つの親タスクが失敗せずに完了した場合に実行されます。 すべての親タスクが無効になっている場合、ダウンストリーム タスクは実行されません。 A (disabled)C (skipped) → B: 親タスクが失敗していないため、 B が実行されます。
すべて完了 ダウンストリーム タスクは正常に実行されます。 無効になった親タスクは完了したものとして扱われます。 A (disabled) → B: B 実行されます。
少なくとも 1 つ失敗しました ダウンストリーム タスクは、少なくとも 1 つの親タスクが失敗した場合に実行されます。 (無効になった親タスクは、エラーとして扱われません。 他の親タスクが失敗しなかった場合、ダウンストリーム タスクは実行されません。 A (disabled)C (failed) → B: B 実行されます。
すべて失敗しました ダウンストリーム タスクは実行されません。 (無効になった親タスクは、エラーとして扱われません。 A (disabled) → B: B は実行されません。

Note

明示的に無効にしたタスクのみが、ジョブ定義にdisabled: trueを持っています。 Lakeflow ジョブは、実行時にダウンストリームの無効化を決定し、ジョブ設定に保持しません。

タスクを無効にする

UI を使用してタスクを無効または再度有効にするには、「 タスクを無効にする」を参照してください。

API またはバンドルを使用してタスクを無効にするには:

disabled: true、Azure Databricks CLI、Azure Databricks SDK または Declarative Automation Bundles を使用して、ジョブ設定のタスクで を設定します。

{
  "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 ジョブは、選択したタスクを正確に実行し、部分的な実行中には実行条件の伝播は適用されません。 + フィールドでonly修飾子を使用して上流または下流のタスクを含める場合、展開には無効なタスクは含まれません。 無効なタスクを含めるには、明示的に追加する必要があります。

Limitations

無効なタスクには、次の制限があります。

  • 条件値を提供するアップストリーム タスクが無効になっている場合、 If/else condition タスクは失敗します。
  • 入力値を提供するアップストリーム タスクが無効になっている場合、 For each タスクは失敗します。
  • ジョブ定義では、ユーザーが無効なタスクのみが disabled: true として表示されます。 ジョブを実行する前に影響を受けるダウンストリーム タスクを確認するには、ジョブ UI の DAG ビューを使用します。