HOME/✴️ dbt/

✴️ dbt 導入・実行

Article Outline

image

|| dbt とは

dbtとは data build tool の略で、データ統合を行う際のプロセスであるELT(抽出, 変換, 格納)のうちTransform(変換)の役割を担うツールです。 Transformのプロセスでは一般的にデータウェアハウスなどに抽出したデータを下流の分析ツールやデータベースで利用できる形式に変換・加工する処理を行います。 dbtはこの工程で役に立つ様々な機能を提供してくれます。

引用先:はじめて理解するdbt - isoroot

cf.

TITLE URL
Official https://www.getdbt.com/
Document https://docs.getdbt.com/
GitHub https://github.com/dbt-labs/dbt-core
dbt tokyo - Japan dbt User Group https://dbt-ug.tokyo/
dbt-tokyoはdbtの日本におけるdbtの普及と,
dbtプロダクトへの貢献を目的に活動をしています.

| ChatGPTにも聞いてみた

🤖<「・・・!!!

|| 導入

コンソール内の「#」は全てコメント.
コンソールに直に記述するものではない.

| STEP1 ✴️ dbt 導入

# 作業場用意
$ mkdir -p sandbox/dbt_training
$ cd dbt_training
#
# 仮想環境(venv)を用意
$ python3 -m venv venv
$ source venv/bin/activate        # 仮想環境を実行
(venv)$ pip install --upgrade pip # pip更新
(venv)$ pip install dbt-postgres  # dbtインストール
(venv)$ deactivate                # 仮想環境を停止 
$ 
#
# 再度仮想環境を実行
$ source venv/bin/activate
(venv)$ dbt --version # dbt環境が手元にあるか確認
# 必要なディレクトリ を準備
(venv)% mkdir models analysis tests seeds macros snapshots target
# dbt設定ファイルを作成(*1: 後述のYAMLファイル)
(venv)% touch dbt_project.yml

*1: /touch dbt_project.yml.

---
name: 'dbt_training'
config-version: 2
version: '1.0.0'
profile: 'dbt_training_dw'
model-paths: ["models"]
analysis-paths: ["analysis"]
test-paths: ["tests"]
seed-paths: ["seeds"]
macro-paths: ["macros"]
snapshot-paths: ["snapshots"]
target-path: "target"
clean-targets: [target, dbt_packages]
models:
    dbt_training:
         example:

YAMLファイルの中身の詳細説明はここがわかりやすい.

# 上位階層に不可視ディレクトリ作成
$ mkdir .dbt
$ cd .dbt
# DWH接続ファイルを作成(*2: 後述のYAMLファイル)
$ touch profiles.yml

*2: ~/.dbt/profiles.yml.

---
dbt_training_dw:
    target: dev
    outputs:
        dev:
            type: postgres
            host: localhost
            user: admin
            password: admin
            port: 5432
            dbname: postgres
            schema: public
            threads: 1
            keepalives_idle: 0 
            connect_timeout: 10

上記は「PostgreSQL」に接続させる設定ファイル(cf.公式). dbt はデータウェアハウス(DWH)の接続設定を ~/.dbt/profiles.yml に書く. また, ~/.dbt/profiles.yml は各DWH毎にプロファイルを書く. そのため, DWHの種類(PostgreSQL, Snowflake...etc.) 毎にアダプターがあり, プロファイルはアダプターごとに設定の書き方が異なる.

| STEP2 🐘 DB(PostgreSQL)設定

docker-compose.ymlを作成.

---
version: '3'
services:
    postgres:
    image: postgres:latest
    restart: always
    ports:
        - 5432:5432
    environment:
        POSTGRES_USER: admin
        POSTGRES_PASSWORD: admin
    volumes:
        - ./postgres:/var/lib/postgresql/data
# データベース(PostgreSQL)を用意
(venv)$ touch docker-compose.yml
(venv)$ vim docker-compose.yml
#  ↓
#  #vimの説明は割愛
#   [esc][I]押して、さっきのファイルの内容コピペ
#   [esc][:wq]押して、抜ける。
#
(venv)$ docker --version # Dockerインストールされているか確認
# gemを新規で導入するときには、まず以下のコマンドを実行
# cf. https://qiita.com/KenAra/items/f1976caa69468323c29d -Qiita
(venv)$ docker-compose build
(venv)$ docker-compose up -d d # Docker起動
(venv)$ docker-compose stop    # Docker停止

もしここでDockerでつまいづいたら🐳 コマンド参照.

| STEP3 ✴️ dbt 実行

(venv)$ dbt run

※モデル作成していないから, 「WARNING」出ているが気にせず. 逆に実行後 logs/ ディレクトリができていることを確認.

|| REFERENCE