2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【環境構築/dbt core】CLIのdbt(dbt core)をSnowflakeに接続してETLできるようにするための手順

Last updated at Posted at 2023-05-13

今回の課題

dbt coreを使って、SnowflakeのデータをETLできるように環境構築を行う。
環境構築する際に時間がかかったので、進めた手順を記録することにした。

進めた手順

進めた手順は以下の通り。

※手順1)2)はつまずかなかったので、
 他の方が投稿されている記事を引用する形で、簡単に書きました。

1)Hemebrewでdbtをインストール

添付の記事を参考にしながら、以下の通りに進めた。

  • $ brew install dbt-snowflakeコマンドでdbtをインストール
  • インストールしたら$ dbt --versionでdbtがインストールされているか確認
    └dbtのバージョンについての情報が返ってくれば、インストールされている。

2)dbtを最新バージョンにアップデート

1)$ dbt --versionでdbtがインストールされているか確認したところ、
古いバージョンがインストールされていることが分かった。

念のため以下の記事のInstalling with Homebrew という見出しの手順を参考に、
dbtの最新バージョンをインストールしておいた。

3)profiles.ymlを作成する

profiles.ymlとは、dbtの接続先(データベースやウェアハウス、スキーマ)についての設定を記述しておくファイルのこと。
※下記の公式ドキュメントにテンプレートが用意されている。

dbtをCLIで使用する場合profiles.ymlファイルが必要なようなので、
以下の手順でprofiles.ymlを用意した。

3)-1.ホームディレクトリに/.dbtディレクトリを作成する

以下のコマンドを実行して、ローカルのホームディレクトリに/.dbtディレクトリを作成する

$ touch ~/.dbt

3)-2./.dbtディレクトリ内にprofiles.ymlを作成する。

以下のコマンドを実行して/.dbtディレクトリにprofiles.ymlを作成する。

$ touch ~/.dbt/profiles.yml

3)-3.profiles.ymlに記述を行う。

接続するDWHの情報を入力する。

  • 以下のように複数のoutputs先を設定しておくことも可能。
    • dbt runを実行すると、targetに設定しているdevの方に記載のDWHに出力される。
    • dbt run --target dev2を実行すると、dev2の方に記載のDWHに出力される。
my-project:
  target: dev
  outputs:
    dev:
      account: *******.ap-northeast-1.aws # '[アカウント名].[リージョン名].aws'という形式で記述する。
      database: *******
      password: *******
      role: *******
      schema: *******
      type: snowflake
      user: ******* # Snowflakeにサインインする時に入力する'ユーザー名'と同じ
      warehouse: *******
    dev2:
      account: *******.ap-northeast-1.aws
      database: *******
      password: *******
      role: *******
      schema: *******
      type: snowflake
      user: *******
      warehouse: *******

4)dbtプロジェクトを作成する

以下のコマンドを打って、~/.dbtディレクトリにmy_projectを作成する。
dbt init [プロジェクト名]はprofiles.ymlの接続情報を元に、プロジェクトを作成してくれる。

$ dbt init my_project

5)dbt_project.ymlを作成

dbt_profiles.ymlファイルはプロジェクトの設定を記述するファイルのこと。
プロジェクト名やバージョン、モデルの配置先などを記述する。

※以下の記事にdbt_project.ymlの各タグについて書かれている。

手順としてはまず以下のコマンドで、~/.dbt/my_project配下に/dbt_project.ymlを作成し、

$ touch ~/.dbt/my_project/dbt_project.yml

dbt_project.ymlに以下の通りに記述をした。

name: my_project # プロジェクト名をつける。プロジェクト名は小文字とアンダースコアのみ使える。
version: '1.5.0'
profile: my-project # DWの接続設定名を指定する。profiles.ymlファイルに記載しているプロファイル名を指定する。


# モデルやスナップショットのコードのパスを指定しておく項目
source-paths: ["models"] # source-pathsは、models/ディレクトリ
analysis-paths: ["analysis"] # analysis-pathsは、analysis/ディレクトリ
test-paths: ["tests"] # test-pathsは、tests/ディレクトリ
data-paths: ["data"] # data-pathsは、data/ディレクトリ
macro-paths: ["macros"] # macro-pathsは、macros/ディレクトリ
snapshot-paths: ["snapshots"] # snapshot-pathsは、snapshots/ディレクトリにあることを意味している。

target-path: "target"  # コンパイルしたSQLファイルをtarget/ディレクトリに出力することを意味している
clean-targets: [target, dbt_packages] # dbt cleanコマンドを実行したときに削除するディレクトリを指定する項目。

# プロジェクト内のモデルをどういった形式(テーブルなのかビューなのかなど)で出力するのか指定しておく項目
models:
  my_project:
    example:
      materialized: view

6)dbt debugで接続テスト

最後に$ dbt debugを実行して、dbtからSnowflakeへの接続が成功するか確認をした。

a.yamaguchi@ayamaguchiMacBook-Air .dbt % dbt debug
07:36:42  Running with dbt=1.5.0
07:36:42  dbt version: 1.5.0
07:36:42  python version: 3.9.16
07:36:42  python path: /opt/homebrew/Cellar/dbt-snowflake@1.5.0/1.5.0/libexec/bin/python3.9
07:36:42  os info: macOS-13.3.1-arm64-arm-64bit
07:36:42  Using profiles.yml file at /Users/a.yamaguchi/.dbt/profiles.yml
07:36:42  Using dbt_project.yml file at /Users/a.yamaguchi/.dbt/dbt_project.yml
07:36:42  Configuration:
07:36:42    profiles.yml file [OK found and valid]
07:36:42    dbt_project.yml file [OK found and valid]
07:36:42  Required dependencies:
07:36:42   - git [OK found]

07:36:42  Connection:
07:36:42    account: *******.ap-northeast-1.aws
07:36:42    user: *******
07:36:42    database: *******
07:36:42    schema: *******
07:36:42    warehouse: *******
07:36:42    role: *******
07:36:42    client_session_keep_alive: False
07:36:42    query_tag: None
07:36:43    Connection test: [OK connection ok]

07:36:43  All checks passed!

成功しました!

まとめ

以上のような手順で進めることで、CLIでdbtを操作してSnowflakeのデータをETLすることができるように設定できた。
profiles.ymldbt_project.ymlファイルについての理解も深めることができた。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?