Lakeflow Jobsは、Databricks上でデータパイプラインやMLワークフローをスケジュール実行・監視するためのオーケストレーション基盤です。 旧称は「Databricks Jobs」(左メニューでは「Workflows」)で、2025年6月11日に「Lakeflow Jobs」へ改称されました。 複数のタスクをDAG(有向非巡回グラフ)で構成し、依存関係・リトライ・パラメータ受け渡しを一元管理します。
この記事では、マルチタスクジョブの構造からスケジューリング、エラーハンドリング、監視までを実務と試験の両面から整理します。
Lakeflow Jobsの基本単位は「ジョブ」で、1つのジョブは1つ以上の「タスク」で構成されます。 タスク間に依存関係を定義するとDAGが形成され、依存先タスクの完了後に次のタスクが自動起動します。
[Ingest] ──→ [Transform_Bronze] ──→ [Transform_Silver] ──→ [Load_Gold]
│ │
└──→ [Data_Quality_Check] ────────────────→┘
│
[Notify]上記のDAGでは、Ingestの完了後にTransform_BronzeとData_Quality_Checkが並列起動し、 Transform_Silver → Load_Goldは直列に実行されます。NotifyタスクはLoad_GoldとData_Quality_Checkの両方が完了してから実行されます。 このように、直列・並列・合流を組み合わせて複雑なパイプラインを表現できます。
依存関係の定義はUIのDepends on欄で上流タスクを選ぶか、JSON/YAML定義の depends_on に上流タスクのtask_keyを並べます。 循環依存はバリデーションエラーになります。
1つのジョブ内で異なるタスクタイプを混在させることができます。 例えばNotebookでETLを行い、その結果をSQLタスクで集計し、Lakeflow Spark Declarative Pipelines(旧DLT)のパイプラインでストリーミング処理を実行する構成が1ジョブで完結します。
| タスクタイプ | 実行内容 | 主な用途 |
|---|---|---|
| Notebook | ワークスペース上のNotebookを実行 | ETL、データ加工、MLトレーニング |
| Python script | ワークスペースファイル・ボリューム・クラウドストレージ・Git上の.pyファイルを実行 | パッケージ化されたPythonコード |
| Python wheel | .whlパッケージをインストールして実行 | CI/CDで生成した配布可能なコード |
| SQL | SQLクエリまたはSQLファイルを実行 | 集計・レポート用テーブル更新 |
| Dashboard | 公開済みのダッシュボードの結果を更新 | 集計後のレポート更新 |
| Pipeline | Lakeflow Spark Declarative Pipelines(旧DLT)のパイプラインを実行 | 宣言的ETL・ストリーミング取り込み |
| dbt | dbt Coreプロジェクトのタスクを実行 | dbtモデルのビルド・テスト |
| JAR | SparkアプリケーションのJARを実行 | Scala/Java製のバッチ処理 |
| If/Else条件 | 条件に基づいてDAGの分岐を制御 | 動的なワークフロー分岐 |
| For Each | 入力リストに対してタスクをループ実行 | 複数テーブルへの同一処理の繰り返し |
Lakeflow Jobsを自動で起動するトリガーには、スケジュール・テーブル更新・ファイル到着・モデル更新(ベータ)・連続実行があります。ほかに手動(Run now)や外部のオーケストレーションツールから起動することもできます。DEA試験ガイドが挙げるのはスケジュール・ファイル到着・テーブル更新の3つです。ここではその3つと連続実行を説明します。
標準的な時刻ベースのスケジュールです。タイムゾーンを明示的に指定でき、 例えば 0 0 2 * * ?(毎日午前2時)や 0 0 */6 * * ?(6時間おき)のように設定します。 Quartz CRON形式(秒フィールドあり・6フィールド)を使用するため、 Linux標準の5フィールドCRONとはフィールド数が異なる点に注意が必要です。
Unity Catalogの外部ロケーションまたはボリューム(その配下のパスも可)を監視し、新しいファイルが到着したらジョブを起動します。S3/ADLS/GCS上の場所を対象にできます。 新着ファイルの確認は1分ごとのベストエフォートで、外部ロケーションでファイルイベントを有効にすると、クラウドの変更通知を使って効率よく検知できます。 ファイルの到着時刻が不規則で、「ファイルが来たら処理する」というバッチ取り込みパイプラインに最適です。
監視しているテーブルが更新(更新・マージ・削除を含む)されたらジョブを起動します。 Unity Catalogのマネージドテーブル(DeltaとIceberg)、Delta形式の外部テーブル、マテリアライズドビュー、ストリーミングテーブル、それらに依存するビューを1つ以上指定でき、いずれか1つが更新されたときと、すべてが更新されたときのどちらで起動するかを選べます。詳細設定の「トリガー間の最小時間」と「最後の変更後の待機時間」を使うと、続けて届く更新を1回の実行にまとめられます。 ジョブの実行ユーザー(Run as)には、監視するテーブルへのSELECTと、親のカタログ・スキーマへのUSE CATALOG・USE SCHEMAが必要です。
常に1つの実行が動き続けるモードで、実行が終わると(成功・失敗を問わず)60秒未満の遅延の後に次の実行が始まります。常時稼働のストリーミング処理に使います。 連続実行のジョブにはリトライポリシーを設定できず、失敗時はジョブ全体が指数バックオフで自動的に再試行されます。実行中に失敗したタスクの再試行はTask retry modeで指定します(既定はOn failure)。
リトライポリシーはタスクごとに設定します。多くの構成では既定でリトライしませんが、サーバーレスのジョブは既定の自動最適化で失敗したタスクを再試行し、連続実行のジョブは前述の指数バックオフで再試行します。下の表の最後の行はリトライではなく、ジョブ単位の同時実行の設定です。
| 設定レベル | パラメータ | 挙動 |
|---|---|---|
| タスクレベル | max_retries | そのタスクが失敗した場合にタスク単体を再実行する最大回数(既定0、-1で無制限) |
| タスクレベル | min_retry_interval_millis | 失敗した実行の開始から次のリトライまでの最小間隔(ミリ秒) |
| タスクレベル | retry_on_timeout | タイムアウト時にもリトライ対象にするか |
| ジョブレベル | max_concurrent_runs | 同一ジョブの同時実行数の上限(デフォルト1) |
タスクにリトライが設定されている場合、そのタスクが失敗するとまずタスク単体が再実行されます。 max_retriesを超えてもタスクが成功しなければ、そのタスクは最終的に「失敗」となり、 既定のRun if(All succeeded)の下流タスクは「Upstream failed」の状態になって実行されません。 ジョブ全体の実行結果は「失敗」になりますが、失敗タスクに依存しないブランチのタスクは正常に実行されます。
「修復実行(Repair Run)」機能を使うと、失敗したタスクとその下流タスクだけを再実行できます。 成功済みのタスクは再実行されないため、大規模パイプラインの部分障害回復に有用です。
Lakeflow Jobsのタスクを動かすコンピュートには、サーバーレスのジョブコンピュート(対応するタスクでは既定)、クラシックのJob Cluster(ジョブ専用クラスタ)、SQLタスク用のSQLウェアハウス、パイプラインのコンピュートがあります。All-Purpose Cluster(対話型クラスタ)も選べますが、本番ジョブには推奨されていません。ここではクラシックの2つを比べます。
| 比較項目 | Job Cluster | All-Purpose Cluster |
|---|---|---|
| ライフサイクル | ジョブ実行開始時に自動作成→完了後に自動終了 | 手動で起動・停止(自動終了設定は可能) |
| DBU単価 | All-Purposeより低い(金額はクラウドとプランごとの料金ページで確認) | Job Clusterより高い |
| 起動遅延 | 毎回クラスタを起動(数分) | 起動済みなら即実行 |
| 適用場面 | 本番バッチ・スケジュール実行 | 開発中のテスト実行・対話デバッグ |
本番パイプラインでは原則としてジョブ用のコンピュート(サーバーレスまたはJob Cluster)を使います。Job ClusterはAll-PurposeよりDBU単価が低く、実行後にクラスタが自動で終了するため リソースの放置リスクがありません。開発フェーズでは、すでに起動中のAll-Purpose Clusterで手動テスト実行し、 本番デプロイ時にジョブ用のコンピュートへ切り替えるのが一般的なワークフローです。
Lakeflow Jobsでは、外部からジョブに渡す「Job Parameters」と、 タスク間で実行時にデータを受け渡す「Task Values」の2つの仕組みがあります。
ジョブ定義時にパラメータのキーとデフォルト値(固定値または動的参照)を設定し、UIやAPIから値を変えて実行するときや、修復実行のときに値を上書きできます。 動的参照として {{job.start_time.iso_date}}、{{job.run_id}} などの組み込み変数が使えます。 Notebook内からは dbutils.widgets.get("param_name") で取得します。
あるタスクの実行結果を後続タスクに渡す仕組みです。
# タスクAで値をセット
dbutils.jobs.taskValues.set(key="row_count", value=df.count())
dbutils.jobs.taskValues.set(key="target_date", value="2026-03-27")
# タスクB(タスクAに依存)で値を取得
row_count = dbutils.jobs.taskValues.get(
taskKey="task_a", key="row_count"
)
target_date = dbutils.jobs.taskValues.get(
taskKey="task_a", key="target_date"
)値はJSONで表せるもの(文字列、数値、ブール値、リストなど)に限られ、JSONにしたときの大きさは48 KiBまでです。 大きなDataFrameやバイナリデータは渡せないため、そのような場合はDelta Tableや一時ファイルに書き出して パスのみをtaskValueで共有するパターンを使います。
ジョブの開始・成功・失敗・実行時間のしきい値超過・ストリーミングのバックログ超過といったイベントに対して通知を設定できます。スキップやキャンセルされた実行の通知は止める(ミュートする)こともできます。メール以外の通知先は、管理者があらかじめシステムの通知先として登録しておきます。
通知はジョブレベルとタスクレベルの両方で設定可能です。 例えば「ジョブ全体の失敗はオンコールチームに通知」「特定タスクの失敗はデータ品質チームに通知」のように 粒度を分けることで、アラート疲れを防ぎつつ適切な担当者に情報を届けられます。
Lakeflow JobsのUIから各ジョブの実行履歴を確認でき、成功・失敗・実行時間・各タスクのステータスが一覧表示されます。 実行履歴が保持されるのは過去60日間です。
より高度な分析や長期保持には、Unity CatalogのSystem Tablesを使います。system.lakeflow スキーマに以下のテーブルが用意されています。
| テーブル名 | 内容 |
|---|---|
| system.lakeflow.jobs | ジョブ定義のメタデータ(ジョブ名、作成者、トリガー設定、実行ユーザーなど) |
| system.lakeflow.job_tasks | 各タスクの定義情報(タスクキー、上流タスクへの依存関係など) |
| system.lakeflow.job_run_timeline | 実行ごとのタイムライン(開始・終了時刻、結果ステータス) |
| system.lakeflow.job_task_run_timeline | タスクごとの実行タイムライン(個別タスクの所要時間・ステータス) |
これらのテーブルをSQLで集計すると、「過去30日で最も失敗率が高いジョブ」「平均実行時間が増加傾向にあるタスク」 「特定時間帯のクラスタ利用集中」などを可視化できます。 Databricks SQLダッシュボードと組み合わせると、運用チーム向けのジョブ健全性モニタリングを構築できます。
Data Engineer Associate試験では、Lakeflow Jobsは「Working with Lakeflow Jobs」(16%)という独立したセクションで出題されます。 ガイドの目標に沿って、次の論点を押さえておきましょう。
「Lakeflow Spark Declarative Pipelinesのパイプライン」「Lakeflow Jobs」「Notebook単独実行」の役割の違いも整理しておきましょう。 パイプラインはデータセットと変換の関係を宣言的に定義し、ジョブはタスクの実行順序と起動条件を手続き的に定義します。パイプラインはジョブの中の1つのタスクとして実行できます。
Data Engineer Associate – Working with Lakeflow Jobs
問題 1
データエンジニアが本番のマルチタスクジョブを運用している。昨夜のジョブ実行で、5つのタスクのうち3番目のタスク(Transform_Silver)だけが一時的なネットワーク障害で失敗した。1番目と2番目のタスクは成功済みで、4番目と5番目のタスクはUpstream failed(上流の失敗)となり実行されなかった。成功済みのタスクを再実行せずに、失敗したタスクとその下流タスクだけを効率的に再実行するには、どの機能を使用すべきか。
正解: B
修復実行(Repair Run)は、失敗したタスクとその下流タスクだけを再実行する機能です。成功済みのタスク(Ingest、Transform_Bronze)は再実行されないため、コンピュート費用と実行時間を節約できます。ジョブ全体の再実行は成功済みタスクも含めて全タスクを再実行するため非効率です。手動Notebook実行ではDAGの依存関係管理が失われ、下流タスクの自動起動もされません。
Lakeflow JobsとDatabricks Jobs(Workflows)の違いは何ですか?
機能的な違いはありません。2025年6月11日に「Databricks Jobs」が「Lakeflow Jobs」に改称され、移行作業は不要とされています。同じ日にDLT(Delta Live Tables)も改称され、DEA試験ガイドでは「Lakeflow Spark Declarative Pipelines」と表記されています。左メニューの「Workflows」は2025年6月18日に「Jobs & Pipelines」へ統合されました。REST API(/api/2.2/jobs/ など)やCLIのjobsコマンドは、引き続きjobsの名前で使えます。現行の試験ガイドの表記は「Lakeflow Jobs」ですが、古い教材やブログでは「Databricks Jobs」「Workflows」と書かれていることがあり、どれも同じ機能を指します。
dbutils.jobs.taskValues と Job Parameters の使い分けは?
Job Parametersはジョブに設定するキーと値(固定値または動的参照)で、実行を起動するときに上書きでき、キーと値の形式でパラメータを受け取るタスクには自動で渡されます。一方dbutils.jobs.taskValues.set() / get()はタスク間の実行時データ受け渡し用です。例えば、前段のタスクで算出したファイル数やパーティションキーを後段タスクに渡す場合はtaskValuesを使います。Job Parametersは、実行日のように起動時に決まる値を、固定値や動的参照({{job.start_time.iso_date}}など)で渡す用途に適しています。
Lakeflow JobsはData Engineer Associate試験でどの程度出題されますか?
Data Engineer Associate試験のExam Guide(2026年5月4日からの試験バージョン)では、Lakeflow Jobsが「Working with Lakeflow Jobs」(日本語版ガイドでは「Lakeflow Jobsの利用」)という独立したセクションになっており、全体の16%を占めます。ガイドが挙げる目標は、リトライと条件付きタスク(分岐とループ)による制御フロー、ノートブック・SQLクエリ・ダッシュボード・パイプラインの各タスクとDAGでの依存関係、スケジュール・ファイル到着・テーブル更新の各トリガー、時間ベースとデータ駆動のトリガーの選び分けです。ジョブを動かすコンピュートの選び方は、セクション1(Databricks Intelligence Platform)のコンピュート選定の目標に含まれます。
出題範囲を体系的に扱う教科書があります。全 16 章、登録なしで全部読めます。
第 0 部・無料
クラウド自体がはじめての方へ
サーバー・ネットワーク・データベースの前提知識なしで読める 8 章。登録不要・無料。
無料
処理を1つのジョブに束ねる
タスクの依存関係と DAG
無料
Databricks とレイクハウスの全体像
なぜこの製品が要るのか、何がどこに属するか
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全8試験・難易度・勉強法
Databricks認定資格(全8試験)の一覧・出題範囲・合格ライン・難易度を徹底解説。2026年10月時点の公式情報に...
Databricks試験の難易度ランキング|7資格を徹底比較
Databricks認定試験のうち7資格の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。2026年5月版...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。2026年...