Lakeflow Jobsは、Databricks上でデータパイプラインやMLワークフローをスケジュール実行・監視するためのオーケストレーション基盤です。 旧称「Databricks Workflows」「Databricks Jobs」が2024年後半に「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上でドラッグ&ドロップするか、JSON/YAML定義で depends_on にタスクキーの配列を指定します。 循環依存はバリデーションエラーになります。
1つのジョブ内で異なるタスクタイプを混在させることができます。 例えばNotebookでETLを行い、その結果をSQLタスクで集計し、DLTパイプラインでストリーミング処理を実行する構成が1ジョブで完結します。
| タスクタイプ | 実行内容 | 主な用途 |
|---|---|---|
| Notebook | ワークスペース上のNotebookを実行 | ETL、データ加工、MLトレーニング |
| Python script | DBFS/Volumes上の.pyファイルを実行 | パッケージ化されたPythonコード |
| Python wheel | .whlパッケージをインストールして実行 | CI/CDで生成した配布可能なコード |
| SQL | SQLクエリまたはSQLファイルを実行 | 集計・レポート用テーブル更新 |
| DLT pipeline | Lakeflow Declarative Pipelineを起動 | 宣言的ETL・ストリーミング取り込み |
| dbt | dbt Coreプロジェクトのタスクを実行 | dbtモデルのビルド・テスト |
| JAR | SparkアプリケーションのJARを実行 | Scala/Java製のバッチ処理 |
| If/Else条件 | 条件に基づいてDAGの分岐を制御 | 動的なワークフロー分岐 |
| For Each | 入力リストに対してタスクをループ実行 | 複数テーブルへの同一処理の繰り返し |
Lakeflow Jobsは3種類のトリガー方式をサポートしています。
標準的な時刻ベースのスケジュールです。タイムゾーンを明示的に指定でき、 例えば 0 0 2 * * ?(毎日午前2時)や 0 0 */6 * * ?(6時間おき)のように設定します。 Quartz CRON形式(秒フィールドあり・6フィールド)を使用するため、 Linux標準の5フィールドCRONとはフィールド数が異なる点に注意が必要です。
Unity Catalogで管理されたクラウドストレージのパスを監視し、新しいファイルが到着したタイミングでジョブを起動します。 ポーリングベースではなくイベント駆動に近い挙動で、S3/ADLS/GCSのパスを指定できます。 バッチ取り込みパイプラインで「ファイルが来たら処理する」というパターンに最適です。
ジョブが完了するたびに即座に再実行するモードです。ストリーミング処理のように常時稼働させたいNotebookに使います。 再起動間の最小間隔を秒単位で指定でき、失敗時の自動リトライと組み合わせて常時稼働パイプラインを構成します。
Lakeflow Jobsではリトライをタスクレベルとジョブレベルの2段階で設定できます。
| 設定レベル | パラメータ | 挙動 |
|---|---|---|
| タスクレベル | max_retries(0〜10) | そのタスクが失敗した場合にタスク単体を再実行 |
| タスクレベル | min_retry_interval_millis | リトライ間隔の下限(ミリ秒) |
| タスクレベル | retry_on_timeout | タイムアウト時にもリトライ対象にするか |
| ジョブレベル | max_concurrent_runs | 同一ジョブの同時実行数の上限(デフォルト1) |
タスクレベルのリトライが設定されている場合、そのタスクが失敗するとまずタスク単体が再実行されます。 max_retriesを超えてもタスクが成功しなければ、そのタスクは最終的に「失敗」となり、 依存する下流タスクはスキップされます。 ジョブ全体の実行結果は「失敗」になりますが、失敗タスクに依存しないブランチのタスクは正常に実行されます。
「修復実行(Repair Run)」機能を使うと、失敗したタスクとそのdown streamタスクだけを再実行できます。 成功済みのタスクは再実行されないため、大規模パイプラインの部分障害回復に有用です。
Lakeflow Jobsのタスクは、Job Cluster(ジョブ専用クラスタ)またはAll-Purpose Cluster(対話型クラスタ)のいずれかで実行します。
| 比較項目 | Job Cluster | All-Purpose Cluster |
|---|---|---|
| ライフサイクル | ジョブ実行開始時に自動作成→完了後に自動削除 | 手動で起動・停止(自動終了設定は可能) |
| DBU単価 | All-Purposeの約30〜60%割安 | 標準単価 |
| 起動遅延 | 毎回クラスタを起動(数分) | 起動済みなら即実行 |
| 適用場面 | 本番バッチ・スケジュール実行 | 開発中のテスト実行・対話デバッグ |
本番パイプラインでは原則としてJob Clusterを使います。DBU単価が安く、実行後にクラスタが自動削除されるため リソースの放置リスクがありません。開発フェーズでは、すでに起動中のAll-Purpose Clusterで手動テスト実行し、 本番デプロイ時にJob Cluster設定へ切り替えるのが一般的なワークフローです。
Lakeflow Jobsでは、外部からジョブに渡す「Job Parameters」と、 タスク間で実行時にデータを受け渡す「Task Values」の2つの仕組みがあります。
ジョブ定義時にパラメータのキーとデフォルト値を設定し、スケジュール実行やAPI呼び出し時に値を上書きできます。 動的参照として {{job.start_time}}、{{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互換の型(文字列、数値、ブール値)で渡せます。 大きな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試験では「Production Pipelines」ドメイン(約16%)でLakeflow Jobsが出題されます。 以下のパターンが頻出です。
試験では「DLT pipeline」「Lakeflow Jobs」「Notebook単独実行」の3つを混同させる選択肢が多く、 それぞれの目的と適用場面の違いを整理しておくことが重要です。
Data Engineer Associate – Production Pipelines
問題 1
データエンジニアが本番のマルチタスクジョブを運用している。昨夜のジョブ実行で、5つのタスクのうち3番目のタスク(Transform_Silver)だけが一時的なネットワーク障害で失敗した。1番目と2番目のタスクは成功済みで、4番目と5番目のタスクはスキップされた。成功済みのタスクを再実行せずに、失敗したタスクとその下流タスクだけを効率的に再実行するには、どの機能を使用すべきか。
正解: B
修復実行(Repair Run)は、失敗したタスクとそのdownstreamタスクだけを再実行する機能です。成功済みのタスク(Ingest、Transform_Bronze)は再実行されないため、コンピュート費用と実行時間を節約できます。ジョブ全体の再実行は成功済みタスクも含めて全タスクを再実行するため非効率です。手動Notebook実行ではDAGの依存関係管理が失われ、下流タスクの自動起動もされません。
Lakeflow Jobsと旧称Databricks Workflowsの違いは何ですか?
機能的な違いはありません。2024年後半にDatabricksがブランドを整理し、Workflows/Jobsを「Lakeflow Jobs」、Delta Live Tablesを「Lakeflow Declarative Pipelines」へ改称しました。UI表記やドキュメントURLが順次更新されていますが、REST APIのエンドポイント(/api/2.1/jobs/)やCLIコマンド体系は旧名のままです。試験では両方の名称で出題される可能性があるため、新旧どちらの表記でも同じ機能を指すと認識しておく必要があります。
dbutils.jobs.taskValues と Job Parameters の使い分けは?
Job Parametersはジョブ起動時に外部から渡す静的な値で、全タスクから参照できます。一方 dbutils.jobs.taskValues.set() / get() はタスク間の実行時データ受け渡し用です。例えば、前段のタスクで算出したファイル数やパーティションキーを後段タスクに渡す場合は taskValues を使います。Job Parametersはスケジュール定義やAPI呼び出し時に固定値や動的参照({{job.start_time}} など)を指定する用途に適しています。
Lakeflow JobsはData Engineer Associate試験でどの程度出題されますか?
Data Engineer Associate試験のExam Guideでは「Production Pipelines」ドメインが全体の約16%を占め、Lakeflow Jobsはこのドメインの中核トピックです。マルチタスクジョブの構造、スケジューリング方法、リトライ設定、Job ClusterとAll-Purpose Clusterの選択理由が問われます。単なる機能名の暗記ではなく、「このシナリオで最も適切な設定はどれか」という判断問題が中心です。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...