【dbt】dbt cliとSnowflakeを接続してみた
はじめに
dockerのubuntu環境を利用し、dbt CLIとSnowflakeの接続ができたのでパパっと記事にしてみようと思いました。(コメント・修正点などあればぜひお願いします!)
dbtとは
dbtはdata build tool
でありELT処理における'T(変換)' の部分に対応をします。T
の役割とはデータレイクやデータウェアハウスに保存されているデータを処理・変換し、その結果を再度データウェアハウスに格納します。
使用する環境・ツール
- Windows 10 pro
- docker ubuntu 22.04
- VSCode
- Snowlfkae
実際に行った流れ
1. VSCodeでリモートウィンドウを開きます
- ubuntu 22.04 を選択します
- 適当なフォルダを作成し、そのフォルダを開きます
Docker DesktopおよびVSCode上でubuntu環境のコンテナが作成されていることを確認します。
2. pipをインストールします
ターミナルを開き、下記のコマンドを実行します。
sudo apt upgrade
sudo apt install python3
sudo apt install python3-pip
3. dbtをインストールします
公式ドキュメント Use pip to install dbtを参考にインストールを行います。今回使用するアダプターはdbt-snowflake
です。下記のコマンドを実行します。
pip install dbt-snowflake
4. dbt initを行い初期化を行います
下記のコマンドを実行します。
dbt init
すると以下のようにいくつかの質問がなされますので、順番に答えていきます。
- Enter a name for your project (dbtにおけるプロジェクト名を決める)
- Which database would you like to use?(データベースの種類を選択します。今回はSnowflakeでアダプターをしていますので、Snwoflakeを選択します)
- account (https://<this_value>.snowflakecomputing.com):(Snowflakeのアカウント名を入力します)
- user (dev username):(ユーザー名を入力します)
- [1] password
[2] keypair
[3] sso
Desired authentication type option (enter a number):(認証方法を決定します(今回はパスワードを指定しました)) - password (dev password): (認証のためのパスワードを入力します)
- Snowflakeの各要素を入力します
- role (dev role):
- warehouse (warehouse name):
- database (default database that dbt will build objects in):
- schema (default schema that dbt will build objects in):
- threads (1 or more) [1]:
いやぁ~....長いですね。
これを終えるとHappy Modeling
と歓迎されて、dbtを使用できます。
5. dbt debugを行ってみる
無事設定できたことを確認するために以下のコマンドを入力します。
dbt debug
すると、エラーが返ってきました!(笑)内容は以下の画像であり、どうやらdbt_project.ymlでエラーが生じているように思えます。
また最後には dbt_project.yml がロードできないとエラーが返ってきました。
調べてみたところ、 [Bug] dbt debug looks in wrong place for dbt_project.ymlの記事に出会いました。内容を見てみるとどうやら、パスの位置が誤っているらしいです。私のこの問題の解決方法としましては、作成したdbt_demo
(プロジェクト名)までカレントディレクトリを移動します。その後再度dbt debug
を行ってみました。無事エラーなく、パスしました!
6. dbt runを行ってみる
最後に言わずと知れた?サンプルクエリに対してdbt run
を行います。下記のコマンドを実行します。
dbt run
確認のため先ほど設定時に選択したリリース先のSnowflakeアカウントを開きます。セットアップした際のデータベース、スキーマがあることを確認します。さらにリリースしたサンプルクエリもあることを確認しましょう。(今回の場合ですと、データベース名:TR_DAISUKE_HARATO、スキーマ名:DBT_CLI_DEMOです)
さいごに
これまではdbt cloudのみを触ってきましたが、とうとうCLIの環境もできちゃいました。これからもしっかりとdbtを触っていきたいと思います。
Discussion