Databricksとdbt Cloudの連携(実践編その1)


Databricksとdbt Cloudの連携ステップ3: モデルを作成して実行するまでを実践した内容です。

クラスターの準備

ここでは、Databricksクラスターに接続します。

  1. 事前にパーソナルアクセストークンを取得しておきます。サイドメニューの設定 > ユーザー設定 > アクセストークンに移動し、新規トークンの作成をクリックして、トークンの名前、存続期間を指定します。作成をクリックするとトークンが表示されるのでコピーしておきます。

    注意 パーソナルアクセストークンは厳重に管理してください。第三者に教えたりしないでください。

  2. 任意のスペックのクラスターを作成します。dbtからこのクラスターにアクセスすることになります。高度なオプションのJDBC/ODBCタブに表示されるサーバーのホスト名ポートHTTPパスをメモしておきます。

データベースとテーブルの準備

dbt Cloudで操作するデータベースとテーブルを準備しておきます。今回は自分用のデータベースdbt_takaで作業するので、このデータベースとソースデータを格納するテーブルを作成します。

  1. 上で準備したクラスターにSQLノートブックをアタッチします。

  2. 以下のSQL文を実行してデータベースとテーブルを作成します。

    SQL
    CREATE SCHEMA taka_dbt;
    
    SQL
    USE taka_dbt;
    
    DROP TABLE IF EXISTS diamonds;
    
    CREATE TABLE diamonds USING CSV OPTIONS (path "/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header "true")
    

dbt Cloudの設定

  1. dbt Cloud - Signupにアクセスして、アカウント情報を入力します。
  2. 以下のような画面が表示され、指定したアドレスに確認メールが届きます。

  3. メールに記載のVerify email addressをクリックします。
  4. プロジェクトのセットアップを行います。
  5. Database ConnectionではDatabricksを選択します。
  6. NAMEには接続設定情報の名称、HOSTNAMEには、クラスターの準備でコピーしたサーバーのホスト名PORTにはポートCLUSTERにはHTTPパスの最後の/以降の文字列を指定します。USERにはtokenを入力し、TOKENにはクラスターの準備でコピーしたパーソナルアクセストークンを指定し、SCHEMAにはDatabricks上のデータベース名を指定します。ここではtaka_dbtとしています。

  7. 上にあるTest Connectionボタンを押して接続確認を行います。接続に成功したらContinueをクリックします。
  8. モデルなどを格納するリポジトリを設定します。ここではManagedを選択してリポジトリの名称を入力しCreateをクリックします。
  9. 作成に成功したらContinueをクリックします。
  10. 今回は特にユーザーを招待しないのでSkip & Completeをクリックします。
  11. これでプロジェクトが作成できたので、Start DevelopingをクリックしてIDEに移動します。

  12. 左上にあるinitialize your projectをクリックして、プロジェクトの初期化を行います。完了すると必要なフォルダーなどが生成されます。

モデルの定義

以降はこちらで説明されているようにモデルを作成していきます。データベースを独自のものにしていますので、若干SQL文を変更しています。

models/diamonds_four_cs.sql
{{ config(
 materialized='table',
 file_format='delta'
) }}
    
select carat, cut, color, clarity
from taka_dbt.diamonds
models/diamonds_list_colors.sql
select distinct color
from taka_dbt.diamonds_four_cs
order by color asc
models/diamonds_prices.sql
select color, avg(price) as price
from taka_dbt.diamonds
group by color
order by price desc

モデルの実行

画面下のRunsの右のテキストボックスに以下のコマンドを入力し、Enterをクリックして実行します。

Bash
dbt run --model models/diamonds_four_cs.sql models/diamonds_list_colors.sql models/diamonds_prices.sql

処理が成功すればRUN STATUSがPassedとなります。

処理結果の確認

Databricksのノートブック上でSQLを実行することで、テーブル一覧、テーブルの中身を確認することができます。

SQL
SHOW TABLES;

SQL
SELECT * FROM diamonds_four_cs;

SQL
SELECT * FROM diamonds_list_colors;

SQL
SELECT * FROM diamonds_prices;

Databricks 無料トライアル

Databricks 無料トライアル