Upgrade to Pro — share decks privately, control downloads, hide ads and more …

これからのSQL開発 — dbt F✦SION engineの本質とその先の世界

Avatar for myshmeh myshmeh
June 17, 2025
830

これからのSQL開発 — dbt F✦SION engineの本質とその先の世界

dbt F✦SION engineによって実現される「これからのSQL開発」の姿を紹介します。SQL開発の課題を整理し、F✦SIONによる静的解析やローカル実行の可能性、SQLポータビリティの未来まで、技術的なアプローチと展望をわかりやすく解説します。

Avatar for myshmeh

myshmeh

June 17, 2025
Tweet

Transcript

  1. Copyright stable, inc. All rights reserved.
 これからのSQL開発 — dbt F✦SION

    engineの本質とその先の世界 2025.06.17 dbt Global Circuit Series: Tokyo dbt Meetup#14 1 stable株式会社 データエンジニア 三角勇貴
  2. Copyright stable, inc. All rights reserved.
 本日お話しすること
 2
 ⚠ 便宜上、本発表ではdbt

    F✦SION engineをF✦SIONと省略しています。 dbt F✦SION engineによるこれからの SQL開発についてお話しします。 
 - SQL/dbt開発の現状と課題 
 - 解決策としての dbt F✦SION engine
 - F✦SION の技術アプローチ 
 - F✦SION の展望
 - F✦SION がくれたモノ 
 🔭

  3. Copyright stable, inc. All rights reserved.
 自己紹介 3 三角勇貴(@myshmeh) stable株式会社

    データエンジニア - 略歴 - プライバシーガバナンス → ソフトウェアエンジニア → CS修士 → データエンジニア - 2025年1月にstable株式会社へ入社 - 好きな領域 - コンピュータシステム全般 - 休日 - 妻とモンハンエンジョイしてます
  4. Copyright stable, inc. All rights reserved.
 データ基盤整備のプロの知見やリソースを、 1ヶ月単位で提供しています。 
 stableの提供サービス


    4
 プロの知見・リソースがすぐに得られる 
 - 多数の案件を経験するプロの知見を得られる 
 - 実装まで行うので、社内にリソースがなくても OK
 
 
 1ヶ月ごとの月額制で柔軟な支援体制 
 - 見積もりが発生せず、すぐプロジェクトを開始できる 
 - 1ヶ月ごとにコミット量の調整が可能 

  5. Copyright stable, inc. All rights reserved.
 1. はじめに 2. SQL/dbt開発の現状と課題

    3. 解決策としてのdbt F✦SION engine 4. F✦SION の技術アプローチ 5. F✦SION の展望 6. F✦SION がくれたモノ 5
  6. Copyright stable, inc. All rights reserved.
 SQL/dbt開発の課題 大体、以下の2種類に分けられると思います。 6 💰

    🐢 お金がかかる 
 開発スピード 
 何をするにもDWHが必要 痒いところに手が届かない開発体験
  7. Copyright stable, inc. All rights reserved.
 こんな悩みありませんか集 1/2 これって実行できるの? 9

    カラム名をイギリス英語で統一したんだった。。 😇
 -- 存在しないカラム

  8. Copyright stable, inc. All rights reserved.
 こんな悩みありませんか集 1/2 dbt run

    --emptyでSQLチェック → Snowflake Warehouseを1分消費 10 カラム名をイギリス英語で統一したんだった。。 😇
 -- 存在しないカラム

  9. Copyright stable, inc. All rights reserved.
 -- 存在しないカラム
 こんな悩みありませんか集 1/2

    dbt run --emptyでSQLチェック → Snowflake Warehouseを1分消費 11 カラム名をイギリス英語で統一したんだった。。 😇
 時間かかる&
 💰ちりつも

  10. Copyright stable, inc. All rights reserved.
 -- 存在しないカラム
 こんな悩みありませんか集 1/2

    dbt run --emptyでSQLチェック → Snowflake Warehouseを1分消費 12 カラム名をイギリス英語で統一したんだった。。 😇
 Pythonみたいにさっと
 補完効かないの?

  11. Copyright stable, inc. All rights reserved.
 SQL/dbt開発の課題 他にも、色々な課題があると思います。 18 お金がかかる

    
 開発スピード 
 - 文法チェックにDWHが必要 - 関数利用のチェックにDWHが必要 - カラムチェックにDWHが必要 - テスト実行にDWHが必要 - … - ネットワーク経由の実行速度 - CTEのデータ確認にクエリ変更が必要 - カラムの由来を調べるのに、SQLを延々と 遡る羽目になる - … 💰 🐢
  12. Copyright stable, inc. All rights reserved.
 21 dbt F✦SION engineは、

    この課題に真正面から向き合います
  13. Copyright stable, inc. All rights reserved.
 1. はじめに 2. SQL/dbt開発の現状と課題

    3. 解決策としてのdbt F✦SION engine 4. F✦SION の技術アプローチ 5. F✦SION の展望 6. F✦SION がくれたモノ 22
  14. Copyright stable, inc. All rights reserved.
 dbt F✦SION engineとは dbt

    Fusion engineは、SQLをネイティブに理解する、次世代の データエンジニアリングの核です。 23 *1 https://docs.getdbt.com/blog/dbt-fusion-engine *1
 - 5/28に公開 (Public Beta) - 対応DWH(現在): Snowflake, Databricks - ライセンス: - 基本公開ソース (ELv2、Apache) - State aware orchaestrationなど 非公開ソースもあり
  15. Copyright stable, inc. All rights reserved.
 dbt F✦SION engineで今できること 1/3

    直接エディタ上でSQLの正しさをチェックできるようになった! dbt run --empty でお金をすり減らした日々にバイバイ💰 27 関数利用のチェックに DWHは不要! 文法チェックに DWHは不要!
  16. Copyright stable, inc. All rights reserved.
 dbt F✦SION engineで今できること 1/3

    直接エディタ上でSQLの正しさをチェックできるようになった! dbt run --empty でお金をすり減らした日々にバイバイ💰 28 存在しないカラムにも気づける! -- 存在しないカラム

  17. Copyright stable, inc. All rights reserved.
 dbt F✦SION engineで今できること 1/3

    直接エディタ上でSQLの正しさをチェックできるようになった! dbt run --empty でお金をすり減らした日々にバイバイ💰 29 存在しないカラムにも気づける!
  18. Copyright stable, inc. All rights reserved.
 dbt F✦SION engineで今できること 2/3

    Preview CTE機能で、CTEのデータくらいさっと見れるようになった!🐢 31 1
 2

  19. Copyright stable, inc. All rights reserved.
 dbt F✦SION engineで今できること 3/3

    カラムリネージで、カラムがどう加工されてきたか一目でわかるようになった!🐢 33
  20. Copyright stable, inc. All rights reserved.
 解決策としてのdbt F✦SION engine 課題の大部分が、既に解決できている!

    34 お金がかかる 
 開発スピード 
 - ✅ 文法チェックにDWHが必要 - ✅ 関数利用のチェックにDWHが必要 - ✅ カラムチェックにDWHが必要 - (後述) テスト実行にDWHが必要 - … - ✅ ネットワーク経由の実行速度 - ✅ CTEのデータ確認にクエリ変更が必要 - ✅カラムの由来を調べるのに、SQLを延々 と遡る羽目になる - … 💰 🐢
  21. Copyright stable, inc. All rights reserved.
 F✦SIONの開発計画 当面は、GAに向けてadapterとdbt-core機能のカバレッジをあげる方針。 dbt Projects

    in Snowflakeでは、F✦SIONのサポートが予定されている。 35 *1 https://docs.getdbt.com/blog/dbt-fusion-engine-path-to-ga *2 https://youtu.be/w7C7OkmYPFs *1
 *2

  22. Copyright stable, inc. All rights reserved.
 1. はじめに 2. SQL/dbt開発の現状と課題

    3. 解決策としてのdbt F✦SION engine 4. F✦SION の技術アプローチ 5. F✦SION の展望 6. F✦SION がくれたモノ 38
  23. Copyright stable, inc. All rights reserved.
 なぜ〇〇ができない? dbtには、SQL実行環境がない! 逆に、dbtにSQL実行環境があれば、文法チェックやSQL実行ができるはず。 39

    unit test実行!
 失敗...
 💻 💰 dbt-coreには、SQL実行環境がないことが課題だった。 dbt-coreには、SQL実行環境がないことが課題だった。
  24. Copyright stable, inc. All rights reserved.
 なぜ〇〇ができない? dbtには、SQL実行環境がない! 逆に、dbtにSQL実行環境があれば、文法チェックやSQL実行ができるはず。 40

    unit test実行!
 失敗...
 💻 💰 「この課題に真正面から向き合います」 どのように向き合っているのか?
  25. Copyright stable, inc. All rights reserved.
 F✦SIONの技術アプローチ F✦SIONは、SQL実行環境を内包している。 つまり、dbt-coreがDWHに依存していたSQLのコンパイル・実行の機能を持つ! 41

    ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 ?
 ?
 入力
 コンパイル
 F✦SION
 dbt-core
 STEP
 SQL文
 ?
 ?
 データ
 ARTIFACT

  26. Copyright stable, inc. All rights reserved.
 コンパイルって何してるの? SQLから実行可能な構造を生成してるのはなんとなくわかるが、内部では何が行わ れているのだろうか? 42

    ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 ?
 ?
 入力
 コンパイル 
 F✦SION
 dbt-core
 STEP
 SQL文
 ?
 ?
 データ
 ARTIFACT
 何が起きてる? 

  27. Copyright stable, inc. All rights reserved.
 すごいざっくり言うと SQL(らしき文章)がSQLとして実行できるのか、様々なチェックをしている。 これらは多くのF✦SION機能の基になっており、解像度をあげて理解を深めたい。 44

    ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 チェック
 2
 チェック
 1
 入力
 コンパイル
 F✦SION
 STEP
 SQL文
 データ構造1
 データ構造2
 データ
 ARTIFACT
 から
 作る

  28. Copyright stable, inc. All rights reserved.
 SQLコンパイルの概要 単純なSnowflake SQL文を例に、各コンパイルステップの概要を説明します。 45

    ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 意味
 チェック
 文法
 チェック
 入力
 コンパイル
 F✦SION
 STEP
 select dateadd(‘day’, 1, ‘2025-01-01’) as new_day SQL文
 抽象構文木
 論理実行計画
 物理実行計画
 データ
 ARTIFACT

  29. Copyright stable, inc. All rights reserved.
 SQLコンパイルの概要 文法チェックでは、SQLとしてキーワード・識別子の並びが正しいか確認する。 この並びをツリー構造 (抽象構文木)

    に整理して、SQLの要素を検索可能にする。 46 ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 意味
 チェック
 文法
 チェック
 入力
 コンパイル
 F✦SION
 STEP
 SQL文
 抽象構文木 
 論理実行計画
 物理実行計画
 データ
 ARTIFACT
 select dateadd(‘day’, 1, ‘2025-01-01’) as new_day select as dateadd new_day ‘day’ 1 ‘2025-01-01’ e.g. aliasが何かは、select, as, new_dayと辿る事でわかる 

  30. Copyright stable, inc. All rights reserved.
 SQLコンパイルの概要 意味チェックでは、SQLのカラム参照・関数呼出し等が意味的に正しいか確認す る。成果物として、詳細な「何をするか」を記述した論理実行計画を生成する。 47

    ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 意味
 チェック
 文法
 チェック
 入力
 コンパイル
 F✦SION
 STEP
 SQL文
 抽象構文木
 論理実行計画 
 物理実行計画
 データ
 ARTIFACT
 select dateadd(‘day’, 1, ‘2025-01-01’) as new_day Projection { expr = dateadd( ‘day’::date part, 1::number, ‘2025-01-01’::date ) schema = new_day::date } 型情報を付加 
 関数定義を参照 

  31. Copyright stable, inc. All rights reserved.
 SQLコンパイルの概要 実行では、詳細な「何をするか」から最適な「どうやるか」を計画し、データを取 得する。F✦SIONは、SQLをDWHと同等に実行できる! 48

    ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 意味
 チェック
 文法
 チェック
 入力
 コンパイル
 F✦SION
 STEP
 SQL文
 抽象構文木
 論理実行計画
 物理実行計画 
 データ
 ARTIFACT
 select dateadd(‘day’, 1, ‘2025-01-01’) as new_day 2025-01-02T00:00:00
  32. Copyright stable, inc. All rights reserved.
 「コンパイルって何してるの?」の答え コンパイルは、実行計画を出力するために、入力の文字列が文法・意味上正しいの かをチェックしている。このチェックを静的解析という。 50

    ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 意味
 チェック
 文法
 チェック
 入力
 コンパイル
 F✦SION
 STEP
 SQL文
 ARTIFACT
 データ
 抽象構文木
 論理実行計画
 静的解析
 ⊂

  33. Copyright stable, inc. All rights reserved.
 b 静的解析の適用例 1/2 あるカラムが存在するかは、ソースモデルの抽象構文木のカラムを検索すれば

    わかる。 53 ⚠ あくまでコンセプトの適用を例示したもので、実際の実装とは異なる場合があります。 select id source_b
 organisation from …
 this model
 …
 with as select …
 organization b . source_b organizationというカラムはselect文subtreeにいない
 カラムは全て実在するだろうか?
 TODO:エラー説明入りの 画像に差し替え 
 -- 存在しないカラム

  34. Copyright stable, inc. All rights reserved.
 静的解析の適用例 2/2 Preview CTE機能は、抽象構文木の一部を付け替えることで達成できる。

    55 ⚠ あくまでコンセプトの適用を例示したもので、実際の実装とは異なる場合があります。 with as source …
 as modify_1 …
 as modify_2 final …
 as …
 …
 with as source …
 as modify_1 …
 select * from modify_1 this model
 Preview CTE query
 CTE modify_1後のsubtreeをselect文と付け替える
 CTE modify_1のデータをpreviewしたい

  35. Copyright stable, inc. All rights reserved.
 Re: F✦SIONの技術アプローチ F✦SIONは、dbt-coreがDWHに依存していたSQLのコンパイル・実行機能を持つ! よって、静的解析が可能になり、Public

    Beta版の機能を達成できた。 58 ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 意味
 チェック
 文法
 チェック
 入力
 コ ン パ イ ル 
 F✦SION
 dbt-core
 STEP
 SQL文
 抽象構文木
 論理実行計画
 データ
 ARTIFACT
 静 的 解 析 

  36. Copyright stable, inc. All rights reserved.
 1. はじめに 2. SQL/dbt開発の現状と課題

    3. 解決策としてのdbt F✦SION engine 4. F✦SION の技術アプローチ 5. F✦SION の展望 6. F✦SION がくれたモノ 59
  37. Copyright stable, inc. All rights reserved.
 F✦SION の展望 SQLの実行ステップを応用すると、どんな開発ツールが期待できるだろうか? 61

    ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 意味
 チェック
 文法
 チェック
 入力
 コンパイル
 F✦SION
 STEP
 SQL文
 抽象構文木
 論理実行計画
 物理実行計画 
 データ
 ARTIFACT
 🤔💭 公開情報をもとに妄想していきます
  38. Copyright stable, inc. All rights reserved.
 F✦SIONに期待したいこと 1/3 — テストのローカル実行

    F✦SION搭載のDBにより、ローカルでのユニットテストが可能になる。 お金の都合に縛られない、品質ファーストな開発を目指せる! 64 dbt-core
 F✦SION
 F✦SION
 テスト実行がDWHに依存している。 テストするほどお金がかかる構造。 ユニットテストはローカルで完結する。 💰 💰 💰
  39. Copyright stable, inc. All rights reserved.
 F✦SIONに期待したいこと 1/3 — テストのローカル実行

    F✦SION搭載のDBにより、ローカルでのユニットテストが可能になる。 お金の都合に縛られない、品質ファーストな開発を目指せる! 65 dbt-core
 F✦SION
 F✦SION
 テスト実行がDWHに依存している。 テストするほどお金がかかる構造。 ユニットテストはローカルで完結する。 データテストも、Sample Mode等で一度 データ取得すればコスト低減が見込める。 💰 💰 💰 💰
  40. Copyright stable, inc. All rights reserved.
 F✦SIONに期待したいこと 1/3 — テストのローカル実行

    これで前述の課題が全て解決できる! 66 お金がかかる 
 開発スピード 
 - ✅ 文法チェックにDWHが必要 - ✅ 関数利用のチェックにDWHが必要 - ✅ カラムチェックにDWHが必要 - ✅ テスト実行に DWHが必要 - … - ✅ ネットワーク経由の実行速度 - ✅ CTEのデータ確認にクエリ変更が必要 - ✅カラムの由来を調べるのに、SQLを延々 と遡る羽目になる - … 💰 🐢
  41. Copyright stable, inc. All rights reserved.
 F✦SIONに期待したいこと 2/3 — SQLポータビリティ

    SQL方言にとらわれず、目的に合わせたクエリエンジンが選べるようになる。 Write Once, Run Anywhereの世界線へ 🚀 68 🤔 🤔 🤔 F✦SION
 dbt-core
 F✦SION

  42. Copyright stable, inc. All rights reserved.
 F✦SIONに期待したいこと 2/3 — SQLのポータビリティ問題

    単純な文法変換では意味の整合性を保てない。 69 🤔 🤔 🤔 select * from person order by age asc select * from person order by age asc 文法同じだ、ラッキー! 
 20 32 null 32 null 20 ≠ あれ?

  43. Copyright stable, inc. All rights reserved.
 20 32 null F✦SIONに期待したいこと

    2/3 — F✦SIONによるSQLポータビリティ 実行計画レベルで、意味まで捉えたSQL変換を実現できる! 70 *1 https://docs.rs/datafusion/latest/datafusion/logical_expr/struct.SortExpr.html select * from person order by age asc select * from person order by age asc nulls first 20 32 null = true true age F✦SION
 *1

  44. Copyright stable, inc. All rights reserved.
 F✦SIONに期待したいこと 3/3 — Icebergとの相乗効果

    Iceberg無しでは、クエリ実行とデータが同じDWHに閉じていた。 よって、他のDWHを使うには、データ移行が必要... 72 クエリ実行
 データ
 Icebergの無い世界 密結合

  45. Copyright stable, inc. All rights reserved.
 F✦SIONに期待したいこと 3/3 — Icebergとの相乗効果

    IcebergはDBテーブルの形式を標準化し、クエリ実行・データ層を分離させた。 目的別のDWH選択が可能になり、データ層がvendor lock-inから解放された! 73 クエリ実行
 データ
 Icebergのある世界 疎結合

  46. Copyright stable, inc. All rights reserved.
 F✦SIONに期待したいこと 3/3 — Icebergとの相乗効果

    Icebergはデータ層を抽象化したが、クエリ’層’は抽象化していない。 つまり、横断的なDWH利用にはクエリの書き直しが必要... 76 クエリ実行
 データ
 Icebergのある世界 クエリ
 密結合
 疎結合

  47. Copyright stable, inc. All rights reserved.
 F✦SIONに期待したいこと 3/3 — Icebergとの相乗効果

    F✦SIONは厳密なSQL変換により、クエリ・クエリ実行層を分離する! input/outputが抽象化され、真のvendor-lockinからの解放を実現 🚀 77 クエリ実行
 データ
 F✦SIONのある世界 クエリ
 F✦SION
 疎結合
 疎結合

  48. Copyright stable, inc. All rights reserved.
 F✦SION の展望まとめ 実行ステップ由来の機能には、夢がいっぱい! 79

    - テストのローカル実行 
 
 - SQLポータビリティ — Write Once, Run Anywhere
 
 - Iceberg x F✦SIONによる真のvendor-lockinからの解放 
 *年内はGAを目指す開発になると思われ、これらの機能追加はあっても暫く先になりそう 
 🤩🔥
  49. Copyright stable, inc. All rights reserved.
 1. はじめに 2. SQL/dbt開発の現状と課題

    3. 解決策としてのdbt F✦SION engine 4. F✦SION の技術アプローチ 5. F✦SION の展望 6. F✦SION がくれたモノ 80
  50. Copyright stable, inc. All rights reserved.
 Re: F✦SIONの技術アプローチ F✦SIONは、dbt-coreがDWHに依存していたSQLのコンパイル・実行機能を持つ! コンパイル中の静的解析は、Public

    Beta版の機能達成に大きく貢献している。 81 ⚠ コンパイルに関して、便宜上関連部分のみ抽出し、単純化して表現しています。 実行
 意味
 チェック
 文法
 チェック
 入力
 コ ン パ イ ル 
 F✦SION
 dbt-core
 STEP
 SQL文
 抽象構文木
 論理実行計画
 データ
 ARTIFACT
 静 的 解 析 
 今日の発表では、F✦SION の技術アプローチから、 今できること・将来期待できることを紹介してきました。
  51. Copyright stable, inc. All rights reserved.
 F✦SION がくれたモノ ソフトウェア開発の当たり前! ソフトウェア開発

    dbt-core dbt F✦SION engine ローカルでコード実行 ❌ ✅ ローカルでSQL実行 IDEの補完機能 ❌ ✅ IntelliSense ユニットテスト ⚠ DWHで実行 ✅ 無料でテスト実行 Write Once, Run Anywhere ❌ ✅ SQLポータビリティ 84
  52. Copyright stable, inc. All rights reserved.
 まとめ F✦SIONはいいぞ! 85 -

    dbt-coreは、SQLの理解をDWHに依存していた。
 
 - dbt F✦SION engineは、SQLのコンパイル・実行機能を内包し、 静的解析を用いた開発サポートができるようになった。 
 
 - 展望として、テストのローカル実行や真の vendor-lockinからの解 放が目指せる。
 
 - ソフトウェア開発の当たり前が SQL開発にもやってきた! 
 🏎
  53. Copyright stable, inc. All rights reserved.
 参考資料 1. Jeremy Cohen

    and Joel Labes, Path to GA: How the dbt Fusion engine rolls out from beta to production, https://docs.getdbt.com/blog/dbt-fusion-engine-path-to-ga 2. Jason Ganz and Joel Labes, The Components of the dbt Fusion engine and how they fit together, https://docs.getdbt.com/blog/dbt-fusion-engine-components 3. Tristan Handy, Where we're headed with the dbt Fusion engine, https://www.getdbt.com/blog/where-we-re-headed-with-the-dbt-fusion-engine 4. Jason Ganz, Meet the dbt Fusion Engine: the new Rust-based, industrial-grade engine for dbt, https://docs.getdbt.com/blog/dbt-fusion-engine 5. Elias DeFaria and Azzam Aijazi, The future is now: Get to know the new dbt Fusion engine and VS Code Extension, https://www.getdbt.com/blog/get-to-know-the-new-dbt-fusion-engine-and-vs-code-extension 6. Joel Labes, The Three Levels of SQL Comprehension: What they are and why you need to know about them, https://docs.getdbt.com/blog/the-levels-of-sql-comprehension 7. Dave Connors, The key technologies behind SQL Comprehension, https://docs.getdbt.com/blog/sql-comprehension-technologies 8. dbt Labs, Accelerate data workflows with the dbt Fusion engine, https://www.getdbt.com/product/fusion 9. dbt Labs, About the dbt VS Code extension, https://docs.getdbt.com/docs/about-dbt-extension 10. dbt Labs, Quickstart for the dbt Fusion engine, https://docs.getdbt.com/guides/fusion 11. dbt Labs, About the dbt Fusion engine, https://docs.getdbt.com/docs/fusion/about-fusion 12. dbt Labs, dbt-fusion, https://github.com/dbt-labs/dbt-fusion 13. t-hiroto, 【Snowflake Summit 2025】Platform Keynoteまとめ速報, https://zenn.dev/finatext/articles/db766782b40e2c 14. Docs.rs, Apache DataFusion, https://docs.rs/datafusion/latest/datafusion/index.html 86