
DatabricksのLakeflow Jobsでdbtを実行してみた
データ事業本部のueharaです。
今回は、DatabricksのLakeflow Jobsでdbtを実行してみたいと思います。
はじめに
以前、dbt CoreからDatabricksに接続する検証を行いました。
例えばAmazon ECSなどでdbt Coreを動かしDatabricksに接続することもできますが、Databricksのデータ処理ワークロードのオーケストレーション機能である Lakeflow Jobs では、ジョブとしてdbtを実行(Databricksのコンピューティングリソースを利用)することもできます。
今回は、このLakeflow Jobsを利用して検証を行います。
DatabricksとGitHubの連携
dbt関連のリソースをGitHubで管理することを想定し、まずはDatabricksとGitHubの連携を行います。
まず、ホーム画面の左側のタブから『Home > More > Git folder』に進みます。

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

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

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

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

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

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

今回、これをソースとしたテーブル(ビュー)をdbtで作ることにします。
主要なファイルは以下の通りです。
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
version: 2
sources:
- name: workspace_test_schema
database: workspace
schema: test_schema
tables:
- name: test_item
description: テスト用のサンプル商品テーブル
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の host や http_path 等を指定した profile.yml を用意する必要があるのでご注意下さい。
Lakeflow Jobsの作成
左側のタブから『Jobs & Pipelines』を選択し、『Create』から『Job』を選択します。

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

なお、もう1つある『dbt platform』はクラウド版(旧dbt Cloud)を実行するもので、違いとしては以下になります。
- dbt: Gitのコードを使用して、Databricksクラスター上でdbt Coreを実行する
- dbt platform: dbt platformのAPIに接続し、実行をトリガーする
ジョブの設定として、『Source』および『Project directory』は先に設定したGit folderを指定します。
dbtの実行コマンドは今回 dbt run のみとします。

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

ジョブの設定が完了したら『Save task』ボタンを押して保存を行います。
Lakeflow Jobsの実行・確認
ジョブ画面右上の『Run now』ボタンから実行を開始します。
以下のようにdbtジョブが起動し、ログにテーブル(ビュー)が作成された旨のメッセージが表示されていれば成功です。

なお、上記の通り設定される target に関しては databricks_cluster となっているようでした。
念のためdbtの実行により作成されたテーブル(ビュー)を確認すると、期待した結果になっていました。

最後に
今回は、DatabricksのLakeflow Jobsでdbtを実行してみました。
参考になりましたら幸いです。









