dbt Projects on Snowflakeで作成したプロジェクトのdocsを見る方法

こんにちは、中村です。

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.htmlcatalog.jsonmanifest.json が存在する必要があります。index.htmlcatalog.jsondbt docs generate で、manifest.jsondbt 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を見れるようにしてもらいたいですね。

類似投稿