Databricksとdbt Cloudの連携のステップ3: モデルを作成して実行するまでを実践した内容です。
クラスターの準備
ここでは、Databricksクラスターに接続します。
-
事前にパーソナルアクセストークンを取得しておきます。サイドメニューの設定 > ユーザー設定 > アクセストークンに移動し、新規トークンの作成をクリックして、トークンの名前、存続期間を指定します。作成をクリックするとトークンが表示されるのでコピーしておきます。
注意 パーソナルアクセストークンは厳重に管理してください。第三者に教えたりしないでください。
-
任意のスペックのクラスターを作成します。dbtからこのクラスターにアクセスすることになります。高度なオプションのJDBC/ODBCタブに表示されるサーバーのホスト名、ポート、HTTPパスをメモしておきます。
データベースとテーブルの準備
dbt Cloudで操作するデータベースとテーブルを準備しておきます。今回は自分用のデータベースdbt_taka
で作業するので、このデータベースとソースデータを格納するテーブルを作成します。
-
上で準備したクラスターにSQLノートブックをアタッチします。
-
以下のSQL文を実行してデータベースとテーブルを作成します。
SQLCREATE SCHEMA taka_dbt;
SQLUSE 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の設定
-
dbt Cloud - Signupにアクセスして、アカウント情報を入力します。
- 以下のような画面が表示され、指定したアドレスに確認メールが届きます。
- メールに記載のVerify email addressをクリックします。
- プロジェクトのセットアップを行います。
- Database ConnectionではDatabricksを選択します。
-
NAMEには接続設定情報の名称、HOSTNAMEには、クラスターの準備でコピーしたサーバーのホスト名、PORTにはポート、CLUSTERにはHTTPパスの最後の
/
以降の文字列を指定します。USERにはtoken
を入力し、TOKENにはクラスターの準備でコピーしたパーソナルアクセストークンを指定し、SCHEMAにはDatabricks上のデータベース名を指定します。ここではtaka_dbt
としています。
- 上にあるTest Connectionボタンを押して接続確認を行います。接続に成功したらContinueをクリックします。
- モデルなどを格納するリポジトリを設定します。ここではManagedを選択してリポジトリの名称を入力しCreateをクリックします。
- 作成に成功したらContinueをクリックします。
- 今回は特にユーザーを招待しないのでSkip & Completeをクリックします。
- これでプロジェクトが作成できたので、Start DevelopingをクリックしてIDEに移動します。
- 左上にあるinitialize your projectをクリックして、プロジェクトの初期化を行います。完了すると必要なフォルダーなどが生成されます。
モデルの定義
以降はこちらで説明されているようにモデルを作成していきます。データベースを独自のものにしていますので、若干SQL文を変更しています。
{{ config(
materialized='table',
file_format='delta'
) }}
select carat, cut, color, clarity
from taka_dbt.diamonds
select distinct color
from taka_dbt.diamonds_four_cs
order by color asc
select color, avg(price) as price
from taka_dbt.diamonds
group by color
order by price desc
モデルの実行
画面下のRunsの右のテキストボックスに以下のコマンドを入力し、Enterをクリックして実行します。
dbt run --model models/diamonds_four_cs.sql models/diamonds_list_colors.sql models/diamonds_prices.sql
処理が成功すればRUN STATUSがPassedとなります。
処理結果の確認
Databricksのノートブック上でSQLを実行することで、テーブル一覧、テーブルの中身を確認することができます。
SHOW TABLES;
SELECT * FROM diamonds_four_cs;
SELECT * FROM diamonds_list_colors;
SELECT * FROM diamonds_prices;