こんにちは、エクチュアの照沼です。
前回のブログでTROCCO入門編としてデータの転送・データマートの定義・ワークフローの作成の方法について触ってみました。今回はその続きとしてTROCCOのdbt連携について触っていきたいと思います。
前回のブログが気になる方は下のURLから確認してみてください。
https://ex-ture.com/blog/2025/05/01/trocco_for_beginner
目次
- dbtとは
- GitHubリポジトリの作成
- dbt Gitリポジトリの作成
- dbtジョブの設定
- GitHub Actionsを用いたTROCCOでのdbtドキュメント生成
- GitHubリポジトリのページへ移動
Settings
→Secrets and variables
→Actions
を選択New repository secret
をクリックName
にAWS_ACCESS_KEY_ID
を入力Secret
にキーの実際の値(AWS IAMのアクセスキー)を入力- 保存
0.dbtとは
まずdbtって何?という人もいると思うのでdbtについて解説していこうと思います。
dbtはELTツールの中のT(変換)を担うツールです。
dbtはデータカタログの生成、テスト・検証機能の組み込み、安全性の高い管理が可能なツールです。拡張SQLを用いることで、ソフトウェアエンジニアリングのベストプラクティスを取り入れた開発が行えます。
dbtにはdbt Coreとdbt Cloudの二種類があります。
dbt Coreとdbt Cloudの機能の違いは以下の表になります。
項目 | dbt Core | dbt Cloud |
---|---|---|
提供形態 | オープンソース(無料) | SaaS(有料プランあり) |
実行環境 | ローカル環境(CLI) | クラウド上で実行 |
セットアップ | 手動(Python環境&CLIセットアップが必要) | Web UIから簡単セットアップ |
スケジューリング | Airflow, Prefect, dbt Cloud APIなど外部ツールが必要 | 内蔵のスケジューリング機能あり |
コラボレーション | Gitベースの管理 (個別に設定) | Web UIでチーム管理、変更履歴トラッキング |
認証・権限管理 | 手動で設定 | シングルサインオン (SSO) 連携対応 |
ログ管理 | ローカルログのみ | 実行履歴やログをWeb UIで確認可能 |
CI/CDの統合 | GitHub Actions, GitLab CI/CD などを設定する必要あり | 内蔵のCI/CD機能で簡単に統合可能 |
サポート | コミュニティベース | 公式サポートあり(有料プラン) |
dbt Coreは無料である反面、Web UIがないため使いづらく、スケジューリング機能も備わっていないなどの弱点があります。
そこで、TROCCOの出番です。TROCCOにはdbt Coreを使う機能が備わっています。
TROCCOを通じてdbt Coreを使えば、Web UIで操作できたり、スケジューリングができたりと、dbt Coreの弱点をカバーできます
そんな親和性の高いありがたい機能を触っていきたいと思います!!
1.GitHubリポジトリの作成
dbt coreはGitHubを用いて管理をするのでまずGitHubのリポジトリを作成していきます!
GitHubにログインし、Homeを開くと下の画像になるので「New」をクリック!

クリックしたら下の画像になるのでRepository nameを入力し、「Create repository」をクリックすれば完成!

2.dbt Gitリポジトリの作成
次に、TROCCOに先ほど作成したリポジトリを用いて、dbt Gitリポジトリを作成していきます。
dbt Gitリポジトリの新規作成をクリックすると下の画像になるので必須情報を入力します。また、今回は前回のブログで作成したテーブルに対して作業を行うのでアダプタとしてはSnowflakeを用います。


記入項目 | 説明 |
---|---|
名前 | 自由 |
リポジトリURL | 設定したいリポジトリのSSHをコピーして貼り付け![]() |
ブランチ名 | リポジトリ内のブランチを入力 |
入力が完了し、保存を押すと入力画面の上に、下の画像のようなDeploy keyが表示されるのでコピーしておきます。

次にGitHubのSettings> Deploy keysにコピーしたDeploy keyを登録します。

ここまでできればdbt Gitリポジトリの登録が完了しました。
3.dbtジョブの設定
dbtジョブ設定の新規追加をクリックすると下の画像になるので必須情報を入力します。

記入項目 | 説明 |
---|---|
名前 | 自由 |
dbt Gitリポジトリ | クリックすると候補が表示されるので1で作成した名前を選択 ※候補が表示されない場合は下のdbt Gitリポジトリをクリックしてからもう一度 行うと表示される。 |
実行コマンド | 今回はdbt deps⇒dbt buildを行うように設定 ※TROCCOで実行できるdbtコマンド一覧 dbt deps:packages.ymlファイルに記述されている依存関係をダウンロード dbt run:モデルの処理実行 dbt test:テストコードを実行 dbt snapshot:dbt_project.ymlファイルで定義された snapshots-pathsにあるスナップショットを実行 dbt seed:dbt_project.ymlファイルで定義された seed-pathsで見つかったCSVファイルをロード dbt build:dbt run + dbt test + dbt snapshot + dbt seedをDAG順に実行 dbt run-operation:dbtで定義したマクロ(SQLスクリプト)を実行する |
これで実行をすれば、TROCCOによるdbtの実行は完了です!
次にせっかくdbt使うならドキュメントを作成したい!ところですがTROCCOの実行コマンドにはdbt docs generate・dbt docs serveコマンドはないのでGitHub ActionsとTROCCOのワークフローを用いてドキュメント生成ができるようにしていきたいと思います。
4.GitHub Actionsを用いたTROCCOでのdbtドキュメント生成
全体の流れとしてはdbt docs generateを実行するGitHub Actionsを作成し、TROCCOのワークフローにあるHTTPリクエストを用いてGitHub Actionsを実行する流れになります。
まず、GitHub Actionsを作成します。
以下のようにコードを書くことでdbt docs generateを実行することができます。
name: Generate dbt docs after trocco run
on:
repository_dispatch:
types: [trocco]
jobs:
generate_docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dbt and dependencies
run: |
pip install dbt-core dbt-snowflake
- name: Set up profiles.yml
run: |
mkdir -p ~/.dbt
cp ./profiles.yml ~/.dbt/profiles.yml
- name: dbt deps
run: |
dbt deps
- name: Generate dbt docs
run: |
dbt docs generate
※重要なのがrepository_dispatchの部分です。
ここのtypesにはこの後設定するHTTPリクエストボディに設定する値が入ります。
しかし、このままではワークフローが終了すると、GitHub Actionsの仮想環境が削除されるため、生成したドキュメントは見れません。そのため、ドキュメントはS3などに保存する必要があります。
保存する場所はご自身の環境に合わせて設定してみてください!
ちなみに…
S3に保存するの場合は以下のようなコードになります。
- name: Upload docs to S3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
pip install awscli
aws s3 sync target/ s3://my-dbt-docs-bucket/ --delete
※このコードを使用する際は二点作業をしてから使ってください!
1.「s3://my-dbt-docs-bucket/」はご自身のS3のURLに変更してください。
2.secrets.AWS_ACCESS_KEY_IDとsecrets.AWS_SECRET_ACCESS_KEY関しては以下の手順でAWSの情報を登録してください。
🔧 シークレットの登録手順:
次に、TROCCOワークフローの設定になります。
TROCCOワークフローを開いたらHTTPリクエストをクリックします。
すると下の画像になります。ここでは、名前・URL・HTTPメソッド・HTTPリクエストボディ・HTTPヘッダを入力していきます

記入項目 | 説明 |
---|---|
名前 | 自由 |
URL | https://api.github.com/repos/<アカウント名>/<リポジトリ名>/dispatches の形で入力 <>の部分は自分の環境に合うように設定 |
HTTPメソッド | POSTを選択 |
HTTPリクエストボディ | {“event_type”: “trocco”} の形で入力 troccoの部分はGitHub Actionsのtypeで設定した値を入力 |
HTTPヘッダ | この中には二種類のキーと値を入力 1.キー:Accept 値:application/vnd.github.everest-preview+json 2.キー:Authorization 値:Bearer <GitHubのPAC(personal access tokens)> acceptの値に関してはそのまま入力すればok Authorizationの値はBearer の後にGitHub上で生成したトークンの値 を入力する必要がある(下の画像:トークン取得画面) ※トークンに必要な権限としてrepoの項目を選択しておく必要があるので注意 また、トークン生成の画面がわかりにくいところにあるので注意 (右上のアイコン > Setting > Developer setting > Tokens (classic)からいけます) ![]() |
ここまで入力出来たらワークフローに配置していきます。
このワークフローでは3で作成したdbtジョブを実行した後に、dbtドキュメントを生成する流れで作っていきます。作成したのが下の画像のワークフローになります。

このワークフローを実行した上で、S3に出力されたドキュメントファイルを何らかのサーバー(例:静的Webホスティング環境など)でホストすることで、下の画像のようなドキュメントをWeb上で閲覧できるようになります。

今回の内容は以上です。
dbtのドキュメントを生成するには少し工夫が必要ですが、dbt buildなどなら少ない設定ででき、とても便利でした。
TROCCOとdbtはとても親和性が高いツールだと思うのでぜひ使ってみてください!!