BI LAB データ活用研究所 - INSIGHT LAB

【dbtCore】環境構築からモデル実行までをシンプルにやってみる(Snowflake)

作成者: uta|2023年12月27日

はじめに

ネット上で検索するとdbtCoreの環境構築手順は様々紹介されています。

  • Python仮想環境
  • Docker公式イメージ
  • etc...

いずれもバージョンや環境差異によってうまく起動しないケースがあるので、本記事ではシンプルなPython用のDockerコンテナ環境で、dbt(本記事ではdbt-snowflake)インストールからモデルを実行するまでの手順を紹介します。

 

事前準備

  • Docker Desktopのインストール
  • VSCodeエディタのインストール

 

環境構築

dbt-coreの環境構築の流れ
  • ファイル準備
  • コンテナ作成
  • dbtCoreインストール
  • DWH接続

 

ファイル準備

ローカルPCに以下のディレクトリ構成でフォルダとファイルを作成。

docker-python(フォルダ)
    | -- Dockerfile(Dockerファイル)
    | -- docker-compose.yml(YAMLファイル)

 

各ファイルに以下の内容をコピペ。

Dockerfile

FROM python:3.9.10-buster
USER root

RUN apt-get update
RUN apt-get -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TERM xterm

RUN apt-get install -y vim less
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

 

docker-compose.yml

version: '3'
services:
  dbt-core:
    restart: always
    build: .
    container_name: 'dbt-core'
    working_dir: '/root/'
    tty: true

 

コンテナ作成

VSCodeを起動し、ターミナルを開く。( Ctrl + j )

 

cdコマンドでさきほど作成したdocker-pythonに移動し、以下のコマンドでコンテナを作成

docker compose up -d --build

 

以下のコマンドを実行し、コンテナが作成されたか確認します。

docker ps -a

 

dbt-coreという名前のコンテナが確認できたら、コンテナを起動します。

docker compose exec dbt-core bash

 

ターミナルのコマンドがroot@{コンテナID}となっていれば成功です。

root@xxxxxxxxxxxx:~#

 

dbtCoreインストール

作成したコンテナ上に、dbtCore(Snowflake用)をインストールします。
https://docs.getdbt.com/docs/core/pip-install#installing-the-adapter

以下のコマンドを実行し、コンテナ環境にdbtCoreをインストールします。

python -m pip install dbt-snowflake

 

インストール完了後、以下のコマンドを実行しdbtコマンドが使用できるか確認します。

dbt --version

 

DWH接続

dbtプロジェクトを初期化します。

dbt init dbt_core

 

最後に設定が正しいかを確認するため以下コマンドを実行します。

dbt debug

※実行は~/dbt_core/に移動して行ってください

 

モデル実行

初期後、models/example配下にモデルが2つ用意されているのでコマンド実行します。

dbt run --select example

 

コマンドが正常に終了するとSnowflakeにビューとテーブルが作成されます。

 

おわりに

本記事では、シンプルなPythonコンテナ環境にdbtをインストールし、コマンド実行を行うまでの手順を紹介しました。

dbtCore単体には、dbtCloudほどの機能は充実していませんが、それを補うdbtCoreでしか使えない便利なPythonパッケージがたくさんあり、料金もかからないのでこの手順を参考にdbtを体験してみてください。