Databricks

Lakeflow Jobsとは?Databricksのワークフロー管理

2026-03-26
更新: 2026-03-27
NicheeLab編集部

Lakeflow Jobsは、Databricks上でデータパイプラインやMLワークフローをスケジュール実行・監視するためのオーケストレーション基盤です。 旧称「Databricks Workflows」「Databricks Jobs」が2024年後半に「Lakeflow Jobs」へ改称されました。 複数のタスクをDAG(有向非巡回グラフ)で構成し、依存関係・リトライ・パラメータ受け渡しを一元管理します。

この記事では、マルチタスクジョブの構造からスケジューリング、エラーハンドリング、監視までを実務と試験の両面から整理します。

マルチタスクジョブの構造(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 scriptDBFS/Volumes上の.pyファイルを実行パッケージ化されたPythonコード
Python wheel.whlパッケージをインストールして実行CI/CDで生成した配布可能なコード
SQLSQLクエリまたはSQLファイルを実行集計・レポート用テーブル更新
DLT pipelineLakeflow Declarative Pipelineを起動宣言的ETL・ストリーミング取り込み
dbtdbt Coreプロジェクトのタスクを実行dbtモデルのビルド・テスト
JARSparkアプリケーションのJARを実行Scala/Java製のバッチ処理
If/Else条件条件に基づいてDAGの分岐を制御動的なワークフロー分岐
For Each入力リストに対してタスクをループ実行複数テーブルへの同一処理の繰り返し

スケジューリング

Lakeflow Jobsは3種類のトリガー方式をサポートしています。

CRON式スケジュール

標準的な時刻ベースのスケジュールです。タイムゾーンを明示的に指定でき、 例えば 0 0 2 * * ?(毎日午前2時)や 0 0 */6 * * ?(6時間おき)のように設定します。 Quartz CRON形式(秒フィールドあり・6フィールド)を使用するため、 Linux標準の5フィールドCRONとはフィールド数が異なる点に注意が必要です。

ファイル到着トリガー

Unity Catalogで管理されたクラウドストレージのパスを監視し、新しいファイルが到着したタイミングでジョブを起動します。 ポーリングベースではなくイベント駆動に近い挙動で、S3/ADLS/GCSのパスを指定できます。 バッチ取り込みパイプラインで「ファイルが来たら処理する」というパターンに最適です。

連続実行(Continuous)

ジョブが完了するたびに即座に再実行するモードです。ストリーミング処理のように常時稼働させたい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タスクだけを再実行できます。 成功済みのタスクは再実行されないため、大規模パイプラインの部分障害回復に有用です。

Job ClusterとAll-Purpose Clusterの使い分け

Lakeflow Jobsのタスクは、Job Cluster(ジョブ専用クラスタ)またはAll-Purpose Cluster(対話型クラスタ)のいずれかで実行します。

比較項目Job ClusterAll-Purpose Cluster
ライフサイクルジョブ実行開始時に自動作成→完了後に自動削除手動で起動・停止(自動終了設定は可能)
DBU単価All-Purposeの約30〜60%割安標準単価
起動遅延毎回クラスタを起動(数分)起動済みなら即実行
適用場面本番バッチ・スケジュール実行開発中のテスト実行・対話デバッグ

本番パイプラインでは原則としてJob Clusterを使います。DBU単価が安く、実行後にクラスタが自動削除されるため リソースの放置リスクがありません。開発フェーズでは、すでに起動中のAll-Purpose Clusterで手動テスト実行し、 本番デプロイ時にJob Cluster設定へ切り替えるのが一般的なワークフローです。

パラメータとタスク値の受け渡し

Lakeflow Jobsでは、外部からジョブに渡す「Job Parameters」と、 タスク間で実行時にデータを受け渡す「Task Values」の2つの仕組みがあります。

Job Parameters

ジョブ定義時にパラメータのキーとデフォルト値を設定し、スケジュール実行やAPI呼び出し時に値を上書きできます。 動的参照として {{job.start_time}}{{job.run_id}} などの組み込み変数が使えます。 Notebook内からは dbutils.widgets.get("param_name") で取得します。

Task Values(dbutils.jobs.taskValues)

あるタスクの実行結果を後続タスクに渡す仕組みです。

# タスク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で共有するパターンを使います。

通知設定

ジョブの開始・成功・失敗・スキップなどのイベントに対して通知を設定できます。

  • メール通知: 任意のメールアドレスに送信。複数アドレス指定可能
  • Webhook: 任意のHTTPSエンドポイントにPOSTリクエストを送信。PagerDutyやカスタムシステムと連携
  • Slack連携: Databricksの通知先としてSlack Webhookを登録し、チャンネルへ自動投稿
  • Microsoft Teams: Incoming Webhook経由で通知

通知はジョブレベルとタスクレベルの両方で設定可能です。 例えば「ジョブ全体の失敗はオンコールチームに通知」「特定タスクの失敗はデータ品質チームに通知」のように 粒度を分けることで、アラート疲れを防ぎつつ適切な担当者に情報を届けられます。

監視(実行履歴とSystem Tables)

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が出題されます。 以下のパターンが頻出です。

  • 本番パイプラインでJob ClusterとAll-Purpose Clusterのどちらを使うべきか → Job Cluster(コスト・自動終了の観点)
  • ジョブが失敗したときに失敗タスクだけを再実行する方法 → 修復実行(Repair Run)
  • 前のタスクの計算結果を後のタスクに渡す方法 → dbutils.jobs.taskValues.set() / get()
  • ファイル到着時にジョブを起動する設定 → ファイル到着トリガー
  • CRON式のフィールド数 → Quartz形式の6フィールド(秒を含む)
  • タスクの依存関係に循環がある場合 → バリデーションエラー(DAGでなくなるため作成不可)

試験では「DLT pipeline」「Lakeflow Jobs」「Notebook単独実行」の3つを混同させる選択肢が多く、 それぞれの目的と適用場面の違いを整理しておくことが重要です。

問題で確認

Data Engineer Associate – Production Pipelines

問題 1

データエンジニアが本番のマルチタスクジョブを運用している。昨夜のジョブ実行で、5つのタスクのうち3番目のタスク(Transform_Silver)だけが一時的なネットワーク障害で失敗した。1番目と2番目のタスクは成功済みで、4番目と5番目のタスクはスキップされた。成功済みのタスクを再実行せずに、失敗したタスクとその下流タスクだけを効率的に再実行するには、どの機能を使用すべきか。

  1. ジョブ全体を最初から再実行する
  2. 修復実行(Repair Run)を使い、失敗タスクとその下流タスクのみ再実行する
  3. 失敗したタスクのNotebookを手動でAll-Purpose Cluster上で実行する
  4. ジョブを削除して同じ定義で新しいジョブを作成し、実行する

正解: 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の選択理由が問われます。単なる機能名の暗記ではなく、「このシナリオで最も適切な設定はどれか」という判断問題が中心です。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (109件)
© 2026 NicheeLab All rights reserved.