WSL ではない Windows 環境に uv で dbt Core をインストールしてみた

WSL ではない Windows 環境に uv で dbt Core をインストールしてみた

2026.01.29

はじめに

WSL を使用しない Windows 環境で uv を使って dbt Core をインストールしてみましたので、本記事でその内容をまとめます。

なお、以前は WSL 上で dbt Core の環境構築を行っており、その内容は以下の記事でまとめています。

https://dev.classmethod.jp/articles/dbt-core-dbt-platform-setup-try/

前提条件

以下の環境を使用しています。

  • OS:Windows 11
  • ターミナル:Git Bash
    • Git for Windows がインストール済み
    • リモート Git リポジトリ(GitHub)への接続設定済み
  • DWH:Snowflake

uv のインストール

インストール手順は以下が参考になります。本記事でもこの内容に沿って進めています。

https://docs.astral.sh/uv/getting-started/installation/#__tabbed_1_2

https://dev.classmethod.jp/articles/i-like-uv/

はじめに Powershell で以下を実行します。

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

パスを環境変数に追加します。

# Powershell
$oldValue = [System.Environment]::GetEnvironmentVariable("PATH", "User")
$newValue = $oldValue + ";C:\Users\{ユーザー}\.cargo\bin"
[System.Environment]::SetEnvironmentVariable("PATH", $newValue, "User")

ターミナルを再起動後、uv を使用できるようになります。

$ uv --version
uv 0.9.27 (b5797b2ab 2026-01-26)

プロジェクトの作成

ここからは dbt Core 用のプロジェクトを作成します。作業は Git Bash 上で行います。

プロジェクトの初期化

まず、uv を使って Python プロジェクトを初期化します。

# プロジェクトを作成
uv init example-dbt-project --bare 
cd example-dbt-project

# Git リポジトリを初期化
git init

# dbt Core と dbt-snowflake を追加
uv add "dbt-core==1.10.15" "dbt-snowflake==1.10.3"
uv sync

# 依存関係の定義を確認
$ cat pyproject.toml
[project]
name = "example-dbt-project"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
    "dbt-core==1.10.15",
    "dbt-snowflake==1.10.3",
]

Git 管理用に.gitignoreを作成します。

touch .gitignore

dbt プロジェクトの作成

dbt initで dbt プロジェクトを作成します。この際、C:\Users\{ユーザー}\.dbt 配下にprofiles.ymlが作成されます。

$ uv run dbt init my_dbt_project
04:42:01  Running with dbt=1.10.15
04:42:01  Creating dbt configuration folder at C:\Users\{ユーザー}\.dbt
・
・
・
04:42:37  Profile my_dbt_project written to C:\Users\{ユーザー}\.dbt\profiles.yml using target's profile_template.yml and your supplied values. Run 'dbt debug' to validate the connection.

profiles.yml の内容は以下のようにしました。認証情報や接続先は環境変数から参照するようにしています。

my_dbt_project:
  target: "{{ env_var('DBT_TARGET', 'dev') }}"
  outputs:
    dev:
      type: snowflake
      account: "{{ env_var('DBT_SNOWFLAKE_ACCOUNT') }}"
      user: "{{ env_var('DBT_SNOWFLAKE_USER') }}"
      role: "{{ env_var('DBT_SNOWFLAKE_ROLE') }}"
      database: "{{ env_var('DBT_DATABASE') }}"
      warehouse: "{{ env_var('DBT_SNOWFLAKE_WAREHOUSE') }}"
      schema: "{{ env_var('DBT_SNOWFLAKE_SCHEMA') }}"
      threads: "{{ env_var('DBT_THREADS', 6) | int }}"

      authenticator: "snowflake_jwt"
      private_key_path: "{{ env_var('DBT_SNOWFLAKE_PRIVATE_KEY_PATH') }}"
      private_key_passphrase: "{{ env_var('DBT_ENV_SECRET_SNOWFLAKE_PRIVATE_KEY_PASSPHRASE') }}"

環境変数を設定後、プロジェクトディレクトリに移動してdbt debugを実行します。問題なければ以下のような出力となります。

cd my_dbt_project/

$ uv run dbt debug
04:53:18  Running with dbt=1.10.15
04:53:18  dbt version: 1.10.15
04:53:18  python version: 3.11.5
・
・
・
04:53:18  Configuration:
04:53:18    profiles.yml file [OK found and valid]
04:53:18    dbt_project.yml file [OK found and valid]
04:53:18  Required dependencies:
04:53:19   - git [OK found]

04:53:19  Connection:
・
・
・
04:53:19  Registered adapter: snowflake=1.10.3
04:53:21    Connection test: [OK connection ok]

04:53:21  All checks passed!

問題がなければ、dbt runを実行します。初期状態では、dbt が自動生成したサンプルモデルが実行され、指定した Snowflake アカウントのデータベース・スキーマにテーブルが作成されます。

uv run dbt run

なお、スキーマについてはDBT_SNOWFLAKE_SCHEMA=dbt_tyasuhara_winとして環境変数を設定していました。

image

既存のリポジトリのクローン

続けて、既存の dbt プロジェクトリポジトリをクローンする手順を試します。

前提として、以下の記事で構築した dbt Core 環境を使用します。

https://dev.classmethod.jp/articles/dbt-core-dbt-platform-setup-try/

まず、Git Bash 上でリポジトリをクローンします。

# リポジトリをクローン
git clone git@github.com:{ユーザー}/{リポジトリ}.git
cd {リポジトリ}

次に、uv を使ってプロジェクトの依存関係を同期します。

# プロジェクトの依存関係を同期
uv sync

# すべてのパッケージとバージョンを表示
uv pip list

依存関係でエラーがでる場合は、Python バージョンの制約等を確認し、必要に応じてpyproject.tomlを更新します。

その後、環境変数を設定したうえで接続確認を行います。

# 環境変数を追加しテスト
cd my_dbt_project/
uv run dbt debug

一連の開発を行う

ここでは、通常の dbt 開発フローに沿って、モデルの追加から実行・デプロイまでを試します。

ここでの前提として、上記の記事に沿って開発環境はローカルで行い、本番環境へのデプロイは dbt platform のジョブ経由で行っています。

はじめに、作業ブランチを作成します。

# 現在のブランチを確認
git branch
# mainブランチにいることを確認
git checkout main
# 最新の状態に更新
git pull origin main
# 新しいブランチを作成して切り替え
git checkout -b feature/add-new-model

次に、新しいモデルを追加します。

touch models/example/my_third_dbt_model.sql

モデルの内容は以下のようにしました。

models/example/my_third_dbt_model.sql
select *
from {{ ref('my_second_dbt_model') }}

開発環境(ローカル)で検証します。

uv run dbt run

実行が成功すると、指定のアカウントのデータベース・スキーマに新しいモデルが作成されます。profiles.ymlの内容は、冒頭でプロジェクト作成を試した際の内容と同じとしたため、開発環境ではdbt_tyasuhara_winスキーマにモデルが出力されます。

image 1

プッシュし、ジョブ経由で実行

変更内容をリモートリポジトリにプッシュします。

git add .
git commit -m "Add example model"
git push -u origin feature/add-new-model

プルリクエストを作成してマージし、dbt platform 上で本番環境へのデプロイジョブを実行します。

実行結果は下図のようになり、新規追加したモデル(my_third_dbt_model)も作成されていることがわかります。

image 2

Snowflake 側でも本番環境として設定した環境にモデルが作成されていることを確認できます。

image 3

さいごに

WSL を使用しない Windows 環境で uv を使って dbt Core をインストールしてみました。
こちら内容がどなたかの参考になれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事