dbt cloud側は勉強したため、ワークフロー関係の学習時の備忘録
参考記事は↓記事はSnowflakeだが、Bigqueryで実装。
設定に関して詳細に書いておらず断念。DockerでdbtCoreの環境とBigqueryとの接続までは完了したが、Dockerの理解が。。。
明日違うサイトを参考にやってみる予定です。
事前準備
- VSCodeエディタのインストール済
- Docker Desktopのインストール
① python:3.9.10-buster と python:3.9-slim-bookworm の違い
buster = Debian 10(2019年リリース、2024年にサポート終了 → もう公式リポジトリが閉鎖)
bookworm = Debian 12(2023年リリース、現行の安定版)
→ busterは古いので apt-get update が 404 になります。bookworm は現行なので普通に動きます。
Dockerfile
# 古い buster はやめて、現行の Debian 12(bookworm)の slim 版へ
FROM python:3.9-slim-bookworm
ENV DEBIAN_FRONTEND=noninteractive \
LANG=ja_JP.UTF-8 \
LANGUAGE=ja_JP:ja \
LC_ALL=ja_JP.UTF-8 \
TERM=xterm
# 必要パッケージを一括で入れてからキャッシュ削除(イメージを太らせない)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
locales \
vim-tiny \
less \
# 日本語ロケールを生成(slimはlocale未生成なのでここが重要)
&& sed -i 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen \
&& locale-gen \
&& update-locale LANG=ja_JP.UTF-8 \
# aptキャッシュを捨ててスリム化
&& rm -rf /var/lib/apt/lists/*
# pip は最新版・setuptoolsも併せてアップグレード
RUN pip install --no-cache-dir --upgrade pip setuptools
&& pip install --no-cache-dir dbt-core dbt-bigquery
dbtCoreインストール
作成したコンテナ上に、dbtCore(bigquery用)をインストールします。
以下のコマンドを実行し、コンテナ環境にdbtCoreをインストールします。
コンテナ起動時にインストールを行う設定に変更。Dockerfile追記済
毎回インストールがめんどくさい。
コンテナ作成後、Dockerを使う意味についてもっと理解するべき、今回はお試しに使った記事を参考にしたが、ローカルでも作成したい。もっと知りたい。
dbt --version
DWH接続
dbtプロジェクトを初期化します。
dbt init dbt_core
接続ができないので~/.dbt/ディレクトリに profiles.ymlを準備。
profiles.ymlをローカルファイルから読む形に変更。
volumes:
- ~/.dbt:/root/.dbt:ro
最後に設定が正しいかを確認するため以下コマンドを実行します。
dbt debug
※実行は~/dbt_core/に移動して行ってください
モデル実行
初期後、models/example配下にモデルが2つ用意されているのでコマンド実行します。
dbt run --select example