Duneのクエリ結果をSnowflakeへ連携しdbtで分析基盤を整えると、オンチェーン分析が「作って終わり」から「継続的に育つ資産」に変わります。
本記事では、Dune→Snowflake→dbtの現実的な設計、運用、つまずきポイントまで、実務目線で整理します。
Duneのクエリ結果をSnowflakeへ連携する価値と全体像
Duneはオンチェーンデータを構造化問い合わせ言語で素早く扱え、ダッシュボードで共有できる点が強みです。
一方で、チームで分析を積み上げていくと、Dune上のクエリが増殖し、同じロジックが散らばってメンテが難しくなりがちです。そこでDuneのクエリ結果をSnowflakeへ連携しdbtで分析基盤を整える流れが効きます。
Snowflakeに載せることで、社内の他データ(顧客管理、広告、プロダクトログ、会計など)と統合し、権限管理や監査、コスト管理も含めて運用に乗せやすくなります。
さらにdbtでモデル化すると、変換処理がコード管理され、テスト・ドキュメント・依存関係が見える化され、分析品質が安定します。
個人的にも、オンチェーン分析は「一度作った集計が翌月も同じ意味で動く」ことが重要だと感じています。Dune単体でも速いのですが、Snowflakeとdbtを組むと“継続利用の強さ”が段違いです。
Dune Snowflake dbt連携の代表アーキテクチャ
並列で比較できるよう、よくある構成を整理します。
- 最短構成(小さく開始)
- Duneクエリ結果を定期エクスポート → Snowflakeに取り込み → dbtで整形
- 運用重視(チーム開発)
- Dune側は「生データの切り出し」に寄せる → Snowflakeで集約 → dbtでマート化
- ガバナンス重視(規模拡大)
- Snowflakeのスキーマ設計と権限を先に定義 → dbtでテスト必須 → BIに提供
| 構成 | 目的 | メリット | 注意点 |
|---|---|---|---|
| 最短構成 | まず動かす | 立ち上げが速い | 手作業が残りやすい |
| 運用重視 | 継続改善 | 変更に強い | dbt設計が必要 |
| ガバナンス重視 | 組織で統制 | 監査・権限が明確 | 初期設計コスト |
Snowflakeでオンチェーン分析を効率化する設計ポイント
Snowflakeはスケールと運用性が強く、オンチェーン分析のように「期間・銘柄・チェーンで急に重くなる」ワークロードと相性が良いです。
ただし、Duneのクエリ結果をSnowflakeへ連携しdbtで分析基盤を整えるなら、最初に“壊れにくい置き方”を決めるのが重要です。
まず、Duneから出てくるデータは「ある程度加工済み」になりやすいので、Snowflake側でレイヤーを分けるのがおすすめです。
たとえば raw(取り込みそのまま)→ stg(型・命名・欠損整形)→ marts(重要業績評価指標や業務単位)という形です。Duneクエリを頑張りすぎると、変換ロジックがDuneに固定され、後からの修正がつらくなります。
また、Snowflakeはコストが“クエリ回数と重さ”で出やすいので、オンチェーン分析の集計テーブルは更新頻度を設計しましょう。日次で十分なものを毎分回すと、気づいたら請求が増えます。
自分の経験でも、初期は勢いで高頻度更新にしがちですが、運用が始まると「本当に必要な鮮度はどれか」が見えてきます。
テーブル設計と運用ルールのチェックリスト
- 命名規則(例:
stg_dune__xxx,mart_onchain__kpi_daily)を決める - 増分更新(差分更新)を前提にするテーブルを定義する
- クラスタリングやマイクロパーティションを意識して、日付やチェーンIDで絞れる形にする
- 権限管理(読み取り専用ロール、開発ロール)を分ける
- コスト可視化(ウェアハウス分離、タグ付け)をする
| 項目 | 例 | 期待効果 |
|---|---|---|
| レイヤー分割 | raw/stg/marts | 変更に強い |
| 増分更新 | 日次差分のみ | コスト削減 |
| 絞り軸 | block_date/chain | 高速化 |
| 権限 | ロール分離 | 誤操作防止 |
dbt コネクタとdbtで分析基盤を整える実践手順
dbtは「構造化問い合わせ言語変換をソフトウェア開発の型に乗せる」ための道具です。Duneのクエリ結果をSnowflakeへ連携しdbtで分析基盤を整えるときは、最初から完璧を目指すより、段階的に“品質の型”を足していくのが成功しやすいです。
流れとしては、(1)SnowflakeにDune出力を着地させる、(2)dbtでstgを作り型・命名を揃える、(3)martsで重要業績評価指標や分析用テーブルにする、が基本です。
最近はDune側のdbt コネクタのような連携機能が話題になり、データ変換ツールとデータウェアハウスをつなぐ動きが進んでいます。ここで重要なのは、連携手段が何であれ「dbt側に“真実の変換ロジック”を寄せる」設計にしておくことです。
私の場合、最初にやるのはdbtのプロジェクト雛形づくりです。ディレクトリ構成、命名規則、継続的な統合(最低限 dbt build )を整えるだけで、後の拡張がかなり楽になります。
dbtモデル設計の型 stgからmartへ
- stg層でやること
- 型変換(数値、日付、アドレス)
- カラム命名の統一(
snake_case:小文字と下線) - nullや異常値の補正(ただし過剰に隠さない)
- mart層でやること
- 重要業績評価指標計算(例: 日次アクティブユーザー、預かり総額、手数料、ユニークウォレット)
- 期間集計(日次・週次・月次)
- ディメンション整備(チェーン、プロトコル、トークン)
| 層 | 主目的 | 例 |
|---|---|---|
| raw | 取り込み保全 | Dune出力をそのまま保存 |
| stg | 使える形に整形 | 型、命名、基本クリーニング |
| marts | 分析利用 | 重要業績評価指標、ダッシュボード用テーブル |
データ品質を担保するテストと運用 自動化のコツ
オンチェーン分析は、コントラクトのアップグレード、イベント仕様変更、ブリッジやラップトークンなど、前提が崩れる要因が多いです。
だからこそ、Duneのクエリ結果をSnowflakeへ連携しdbtで分析基盤を整えるなら、dbtのテストを“後回しにしない”ことが効きます。
最低限でも unique not_null relationships の3つを要所に入れるだけで、壊れたときの検知が速くなります。
さらにオンチェーン特有のテストとして、アドレス形式、マイナス値の禁止、日次の急増急減の監視などを入れると、実務で助かります。
運用自動化は、最初はシンプルに「毎日朝にdbtが走って、失敗したら通知」で十分です。慣れてきたら、モデルの重要度に応じて実行順や頻度を分けると、コストと安定性のバランスが取れます。
dbtテストと監視で押さえる観点
- スキーマ系
not_null(必須キー)unique(tx_hashやevent_id)relationships(ディメンション参照)- 値の妥当性
- 0未満禁止(手数料、数量)
- アドレス長・形式チェック
- ブロック時刻が未来になっていないか
- 変動検知
- 前日比が閾値超えでアラート
- 特定チェーンだけ欠損していないか
| 監視対象 | 例 | 検知できる事故 |
|---|---|---|
| 一意性 | event_id重複 | 二重計上 |
| 参照整合 | token_id未登録 | 結合漏れ |
| 急変 | 手数料が10倍 | 仕様変更・バグ |
よくあるつまずきとベストプラクティス DuneとSnowflakeのギャップを埋める
Dune→Snowflakeの連携では、データの粒度と責務の分離が曖昧だと詰まりやすいです。
Dune上のクエリで便利な加工をしすぎると、Snowflakeやdbtに移したときに再現が難しくなります。逆に、Dune出力が生すぎると、Snowflake側での解釈がブレて同じ指標が複数生まれます。
おすすめは、Duneでは「安定して取り出せる事実データ」を作る意識を持ち、指標定義はdbtで一元管理することです。
こうすると、指標の変更履歴がギットで追え、レビューもしやすく、チームが増えても破綻しにくいです。オンチェーン分析が効率化するのは、計算が速いからだけではなく、合意形成が速くなるからでもあります。
また、ニュース・解説系の記事を読むと、機能の発表だけに注目しがちですが、現場で効くのは「失敗の回避策」です。具体的には、更新頻度・遅延許容・再実行戦略を先に決めるだけで、運用品質がかなり上がります。
失敗パターンと対策の一覧
- 指標がDuneとSnowflakeでズレる
- 対策: 定義をdbtに寄せ、Duneはソース抽出に寄せる
- 更新が遅くて朝会に間に合わない
- 対策: 重要KPIだけ先に更新、残りは後段に回す
- コストが読めない
- 対策: ウェアハウス分離、実行回数の削減、増分化
- 誰が何を変えたか不明
- 対策: dbtをギット管理、プルリクエストレビュー、リリース手順の固定
| 失敗 | 原因 | 対策 |
|---|---|---|
| ズレ | 定義が分散 | dbtで一元化 |
| 遅延 | 全部同時更新 | 優先順位を付ける |
| 高コスト | 無駄なフル更新 | 増分と頻度設計 |
| 属人化 | 手作業運用 | 継続的な統合/継続的デリバリーと通知 |
まとめ
Duneのクエリ結果をSnowflakeへ連携しdbtで分析基盤を整えると、オンチェーン分析を継続運用できる形に引き上げられます。
ポイントは、Duneは抽出に寄せ、Snowflakeで統合し、dbtで定義と品質を一元化することです。
小さく始めて、stgとmart、テストと増分更新を段階的に足していけば、コストと安定性のバランスを取りながら分析基盤を育てられます。

