DatabricksのLakeflow Jobsでdbtを実行してみた

DatabricksのLakeflow Jobsでdbtを実行してみた

2025.12.19

データ事業本部のueharaです。

今回は、DatabricksのLakeflow Jobsでdbtを実行してみたいと思います。

はじめに

以前、dbt CoreからDatabricksに接続する検証を行いました。

https://dev.classmethod.jp/articles/dbt-core-databricks-oauth/

例えばAmazon ECSなどでdbt Coreを動かしDatabricksに接続することもできますが、Databricksのデータ処理ワークロードのオーケストレーション機能である Lakeflow Jobs では、ジョブとしてdbtを実行(Databricksのコンピューティングリソースを利用)することもできます。

https://docs.databricks.com/aws/ja/jobs/how-to/use-dbt-in-workflows

今回は、このLakeflow Jobsを利用して検証を行います。

DatabricksとGitHubの連携

dbt関連のリソースをGitHubで管理することを想定し、まずはDatabricksとGitHubの連携を行います。

まず、ホーム画面の左側のタブから『Home > More > Git folder』に進みます。

20251219_databricks_01

Git providerの設定画面が表示されるので、対象のリポジトリを設定します。(こちらはPrivateリポジトリとなっています)

20251219_databricks_02

認証方法の確認が出るので、『Link』の方を選択します。

20251219_databricks_03

以下のような画面が表示されるので、Authorizeを行います。

20251219_databricks_04

Authorizeができたら、Databricks GitHubアプリのインストールを行い、リポジトリへのアクセスの許可を行います。

20251219_databricks_05

連携作業が完了し、以下のようにDatabricks上でリポジトリのファイルが見えるようになれば完了です。

20251219_databricks_06

dbtファイルについて

前提として、Databricks上には以下のテストテーブルを用意しています。

20251219_databricks_09

今回、これをソースとしたテーブル(ビュー)をdbtで作ることにします。

主要なファイルは以下の通りです。

dbt_project.yml
name: 'databricks_dbt_test'
version: '1.0.0'

profile: 'databricks_dbt_test'

model-paths: ["models"]
analysis-paths: ["analyses"]
test-paths: ["tests"]
seed-paths: ["seeds"]
macro-paths: ["macros"]
snapshot-paths: ["snapshots"]

clean-targets:
  - "target"
  - "dbt_packages"

models:
  databricks_dbt_test:
    example_dbt:
      +schema: example_dbt
      +materialized: view
models/sources.yml
version: 2

sources:
  - name: workspace_test_schema
    database: workspace
    schema: test_schema
    tables:
      - name: test_item
        description: テスト用のサンプル商品テーブル
models/example_dbt/test_item_discount.sql
SELECT
    id,
    name,
    price,
    CAST(price * 0.8 AS INT) AS price_20per_off
FROM {{ source('workspace_test_schema', 'test_item') }}

テーブル(ビュー)の中身に関しては、テスト用のテーブルから計算した1カラムを増やすだけの単純なものになっております。

なお、Lakeflow Jobsでdbtを実行する上で、 profile.yml の利用は オプション となっております。

※すなわち、 profile.yml が無い場合、接続先等の設定はDatabricks側でLakeflow Jobsに設定した値からよしなに実施されます。

任意のprofileを利用したい場合はdbt Coreをセルフ実行するのと同様に、Databricksの hosthttp_path 等を指定した profile.yml を用意する必要があるのでご注意下さい。

Lakeflow Jobsの作成

左側のタブから『Jobs & Pipelines』を選択し、『Create』から『Job』を選択します。

20251219_databricks_07

表示される画面で『+ Add another task type』を選択し、『dbt』を選択します。

20251219_databricks_08

なお、もう1つある『dbt platform』はクラウド版(旧dbt Cloud)を実行するもので、違いとしては以下になります。

  • dbt: Gitのコードを使用して、Databricksクラスター上でdbt Coreを実行する
  • dbt platform: dbt platformのAPIに接続し、実行をトリガーする

ジョブの設定として、『Source』および『Project directory』は先に設定したGit folderを指定します。

dbtの実行コマンドは今回 dbt run のみとします。

20251219_databricks_10

catalogやschema等に関しては、環境にあわせて設定を行います。

20251219_databricks_11

ジョブの設定が完了したら『Save task』ボタンを押して保存を行います。

Lakeflow Jobsの実行・確認

ジョブ画面右上の『Run now』ボタンから実行を開始します。

以下のようにdbtジョブが起動し、ログにテーブル(ビュー)が作成された旨のメッセージが表示されていれば成功です。

20251219_databricks_12

なお、上記の通り設定される target に関しては databricks_cluster となっているようでした。

念のためdbtの実行により作成されたテーブル(ビュー)を確認すると、期待した結果になっていました。

20251219_databricks_13

最後に

今回は、DatabricksのLakeflow Jobsでdbtを実行してみました。

参考になりましたら幸いです。

参考文献

この記事をシェアする

FacebookHatena blogX

関連記事