こんにちは、中村です。
Snowflakeで作成したdbtのプロジェクトでもdocsを見たいと思った方は多いと思います。
そこで、今回はdbt Projects on Snowflakeで作成したdbtのプロジェクトのdocsを見る方法を解説していきます。
目次
結論
現在、Snowflake上でdbtのdocsを見ることができないので、
1. Gitリポジトリと紐づけてローカルで見る
2. GitHub ActionsとPagesでサーブする
この2つの方法があると思います。
Snowflake上でdbtのdocsを見ることができない
まず、Snowflakeではdbt docsコマンドが実行できません。GUIでもSQLワークシートでも実行できません。


よって、Snowflake外で実行する必要が出てきます。
ここからはdbt Projects on Snowflakeで作成したdbtプロジェクトを2つの方法で見られるようにする方法について解説していきます。
実行手順
準備
まず、dbtのプロジェクトを作成する前に、README.mdのみの空のリポジトリを作成します。
※現在、すでに作成したdbtのプロジェクトをGitリポジトリと紐づけることはできないようです。
また、Snowflakeのワークスペースでは全く空のGitリポジトリと連携できないようになっているみたいです。

次に、紐づけたGitリポジトリにdbt Projectを作成していきます。

先ほど作成したリポジトリのURLを入力し、ワークスペース名を入力してください。
API統合についてはこちらの記事を参考に設定してください。

+Add newからdbt Projectsを選択して、作成を進めてください。

モデルが作成できたら準備完了です。
1. Gitリポジトリと紐づけてローカルで見る方法
作成できたモデルをpushしましょう

反映されたことが確認出来たら、このリポジトリをローカルにクローンします。
git clone <リポジトリのURL>
クローン出来たら、dbtコマンドを実行していきます。
dbt coreがまだローカルにインストールされていない方向け
まずは、dbt-coreとdbt-snowflakeをインストールしましょう
pip install dbt-core dbt-snowflake
完了したら次に進んでください。
コマンドの実行前に、ローカルにクローンしたdbtプロジェクトの中のprofiles.yamlを編集します。
基本的には、認証方法を追加すれば実行できると思います。認証方式の書き方について、詳しくはこちらをご覧ください。
設定できたら、以下のコマンドを順に実行してください
dbt compile
dbt docs generate
dbt docs serve
※dbt docs serve
の実行には、target
ディレクトリ内に index.html
、catalog.json
、manifest.json
が存在する必要があります。index.html
と catalog.json
は dbt docs generate
で、manifest.json
は dbt compile
で生成されます。
これで無事見れました。でもこれはかなり少し手間ですね。
2. GitHub ActionsとPagesでサーブする方法
README, dbt Projectと同じ階層に.githubフォルダを作成し、その配下にworkflows/dbt-docs.yamlを作成します
name: dbt-docs
on:
push:
branches: [ main ]
pull_request:
jobs:
dbt-run:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dbt
run: pip install dbt-snowflake
- name: Overwrite profiles.yml
run: |
mkdir -p ~/.dbt
cat > ~/.dbt/profiles.yml <<EOL
<dbtのプロジェクト名>:
target: dev
outputs:
dev:
type: snowflake
account: ${{ secrets.DBT_ACCOUNT }}
user: ${{ secrets.DBT_USER }}
password: ${{ secrets.DBT_PASSWORD }}
role: ${{ secrets.DBT_ROLE }}
database: ${{ secrets.DBT_DATABASE }}
warehouse: ${{ secrets.DBT_WAREHOUSE }}
schema: ${{ secrets.DBT_SCHEMA }}
EOL
- name: Run dbt
env:
DBT_PROFILES_DIR: ../config/dbt
run: |
cd <dbtのプロジェクト名>
dbt deps
dbt compile
dbt docs generate
- name: Deploy docs to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: <dbtのプロジェクト名>/target
publish_branch: gh-pages
keep_files: true
enable_jekyll: false
profiles.yamlを作成している部分では、もともとのprofiles.yamlにべた書きされている項目はそのままべた書きでも良いとおもうので、そこはお好みで修正してください。
作成できたら今度はGitHub上のリポジトリページに移動します。
Settings>Security/Secrets and variables>Actionsを選択してRepository secretsのNew repository secretsを選択

一つずつシークレットを入力していきましょう。
完了したら再びSnowflakeに戻ってプロジェクトをpushしてください。
すると、Actionsが実行されるので、成功しているか確認しましょう

成功が確認出来たらSettings>Code and automation/Pagesに移動し、Branchでgh-pagesのrootを選択してSaveしましょう。

すると、数分後にページ上部のYour site is live at の後に表示されるURLでdbt docsを見ることができます。

こちらは設定しておけばpushのたびに更新してくれるので、楽ですね。ただ、docs自体は誰でも閲覧できてしまうので、そこは注意が必要です。
まとめ
今回はdbt Projects on Snowflakeで作成したdbtのプロジェクトのdocsを見る方法を解説しました。
将来的にはSnowflake上でdocsを見れるようにしてもらいたいですね。

