Slide 1

Slide 1 text

2025/6/5 クラスメソッド株式会社 相樂 悟 dbt Cloud概要‧新機能紹介&デモンストレーション dbt Cloudの新機能を紹介!データエンジニアリングの⺠主化: GUIで操作、SQLで管理する新時代のdbt Cloud

Slide 2

Slide 2 text

⾃⼰紹介 2 ● 2020年9⽉ ⼊社 ○ Modern Data Stackに該当する製品の 技術⽀援‧プリセールスを担当 ○ 新しい技術情報を定期的に収集し、 ブログで情報発信 ● 部署‧役割 ○ Modern Data Stackチーム テックリード ● 名前(ニックネーム) ○ 相樂 悟 (さがら)

Slide 3

Slide 3 text

⽬次 3 ● 昨今の「データ変換処理の開発」における問題 ○ 「コードベースの開発」の問題 ○ 「GUIベースの開発」の問題 ● dbt Cloud概要 ○ 概要&dbt Cloudにより解決できた問題 ○ dbt Cloudにより解決できていない問題 ● dbt Cloudの新機能「Canvas ※旧称:Visual Editor」 ○ 機能紹介&Canvasにより解決できる問題 ○ デモ ● その他:dbt Cloud新機能紹介 ● まとめ

Slide 4

Slide 4 text

⽬次 4 ● 昨今の「データ変換処理の開発」における問題 ○ 「コードベースの開発」の問題 ○ 「GUIベースの開発」の問題 ● dbt Cloud概要 ○ 概要&dbt Cloudにより解決できた問題 ○ dbt Cloudにより解決できていない問題 ● dbt Cloudの新機能「Canvas ※旧称:Visual Editor」 ○ 機能紹介&Canvasにより解決できる問題 ○ デモ ● その他:dbt Cloud新機能紹介 ● まとめ

Slide 5

Slide 5 text

「データ変換処理の開発」コードベース イメージ 5 ● PythonやSQLで変換処理‧ジョブを定義

Slide 6

Slide 6 text

「データ変換処理の開発」コードベースの問題 その1 6 開発‧本番の切り分けにはGitのコマンドスキルが必要 ● コードベースで開発‧本番を切り分けするには、Gitがほぼ必須 ● Gitざっくり概要 ○ ブランチという概念で「フォルダの中⾝」を 丸ごと切り出して、ブランチごとに変更履歴を 保存し、いつでも保存時点に戻せる ○ ブランチは、本番⽤ブランチ、 開発⽤ブランチ、と分けて使うことが多い ● 右図は、開発⽤ブランチを切って開発し、 リモートリポジトリに反映するまでの⼀連の流れ

Slide 7

Slide 7 text

「データ変換処理の開発」コードベースの問題 その2 7 処理の依存関係の構築‧管理が難しい ● データの抽出、クリーニング、 品質チェック、マート作成、etc のように多岐にわたる処理の 依存関係の管理が必要となる ● 右図はApache Airflowでの 依存関係の定義例

Slide 8

Slide 8 text

「データ変換処理の開発」コードベースの問題 その3 8 特にPythonの場合、⾼度なスキルが必要 ● Pythonの開発環境の構築をどうするか? ○ uv、poetry + pyenv、etc ● Pythonの処理の実⾏基盤はどうするか? ○ オンプレミス、AWS上の仮想マシン、AWS上のサーバーレスサービス、etc ● 使⽤するライブラリはどうするか? ○ Pandas、Spark、Polars、etc ● エラーハンドリングをどうするか?

Slide 9

Slide 9 text

⽬次 9 ● 昨今の「データ変換処理の開発」における問題 ○ 「コードベースの開発」の問題 ○ 「GUIベースの開発」の問題 ● dbt Cloud概要 ○ 概要&dbt Cloudにより解決できた問題 ○ dbt Cloudにより解決できていない問題 ● dbt Cloudの新機能「Canvas ※旧称:Visual Editor」 ○ 機能紹介&Canvasにより解決できる問題 ○ デモ ● その他:dbt Cloud新機能紹介 ● まとめ

Slide 10

Slide 10 text

「データ変換処理の開発」GUIベース イメージ 10 ● 下図のように、各処理をノードでつなぎ合わせて開発していく テーブルA ロード テーブルB ロード テーブルA カラム名変更 テーブルA&B 結合 テーブルC 集計 テーブルC アウトプット

Slide 11

Slide 11 text

「データ変換処理の開発」GUIベースの問題 その1 11 開発内容のブラックボックス化 ● 下図のようなフローになってしまい、内容を理解できるのが開発者だけになる

Slide 12

Slide 12 text

「データ変換処理の開発」GUIベースの問題 その2 12 開発‧本番の切り替えに対応しているツールがほぼない ● 開発‧本番を1つのワークフロー上で切り替える⽅法が 提供されているツールはほぼありません ● ファイルベースでワークフロー管理 ○ 「_開発」「_本番」のようにファイル名で管理する ● ツールの画⾯上でワークフロー管理 ○ 複製して、「_開発」「_本番」のようにワークフロー名で管理する

Slide 13

Slide 13 text

「データ変換処理の開発」GUIベースの問題 その3 13 ツール固有の知識が付いて他の領域に活かしづらい ● 特定のGUIベースのツールだけに慣れてしまうリスク ○ そのツールがあればデータを加⼯できるが、異動先などで そのツールがなくなった際にデータを加⼯できなくなってしまう ○ 最悪、ベンダーが買収されることなどに伴い⽅針転換があり、 ベンダーがツールの開発を中⽌する可能性がある

Slide 14

Slide 14 text

「データ変換処理の開発」における問題 まとめ 14 ● コードベースの問題 ○ 開発‧本番の切り分けにはGitのコマンドスキルが必要 ○ 処理の依存関係の構築‧管理が難しい ○ 特にPythonの場合、⾼度なスキルが必要 ● GUIベースの問題 ○ 開発内容のブラックボックス化 ○ 開発‧本番の切り替えに対応しているツールがほぼない ○ ツール固有の知識が付いて他の領域に活かしづらい

Slide 15

Slide 15 text

⽬次 15 ● 昨今の「データ変換処理の開発」における問題 ○ 「コードベースの開発」の問題 ○ 「GUIベースの開発」の問題 ● dbt Cloud概要 ○ 概要&dbt Cloudにより解決できた問題 ○ dbt Cloudにより解決できていない問題 ● dbt Cloudの新機能「Canvas ※旧称:Visual Editor」 ○ 機能紹介&Canvasにより解決できる問題 ○ デモ ● その他:dbt Cloud新機能紹介 ● まとめ

Slide 16

Slide 16 text

dbt Cloud概要 16 ● SELECT⽂を知っていれば、誰でもデータ変換処理の開発を⾏えるサービス ○ dbt run/buildのようなコマンドで、各SELECT⽂がCTAS⽂に変換されて実⾏ ● 特別な知識&スキル不要で、ソフトウェア開発の⼿法を取り⼊れた開発が可能 ○ バージョン管理、CI/CD、⾃動テスト、ドキュメント管理、etc

Slide 17

Slide 17 text

dbt Cloudにより解決できた問題:コードベースの問題 17 ● コードベースの問題 ⇛ 解決! ○ 開発‧本番の切り分けにはGitのコマンドスキルが必要 ○ 処理の依存関係の構築‧管理が難しい ○ 特にPythonの場合、⾼度なスキルが必要 ● GUIベースの問題 ○ 開発内容のブラックボックス化 ○ 開発‧本番の切り替えに対応しているツールがほぼない ○ ツール固有の知識が付いて他の領域に活かしづらい

Slide 18

Slide 18 text

dbt Cloudにより解決できた問題:コードベースの問題 その1 18 開発‧本番の切り分けにはGitのコマンドスキルが必要 ⇛ dbt Cloudならば、Git操作をGUIベースの操作で可能 ブランチの作成 コミット(保存) プルリクエスト発⾏

Slide 19

Slide 19 text

dbt Cloudにより解決できた問題:コードベースの問題 その2 19 処理の依存関係の構築‧管理が難しい ⇛ dbtでは、FROM句の後をref関数に書き換えるだけで依存関係を構築可能 dbtでは各SELECT⽂を`stg_customers.sql`のようなsqlファイルで定義 その.sqlファイルの名前部分をref関数で指定すると、依存関係が構築できる

Slide 20

Slide 20 text

dbt Cloudにより解決できた問題:コードベースの問題 その3 20 特にPythonの場合、⾼度なスキルが必要 ⇛ dbt Cloudならば、SELECT⽂の知識があれば開発可能 補⾜:ref関数やデータテスト機能など、dbt固有機能の理解は必要となります ● dbt固有機能の例:データテスト ○ unique:対象カラムの値が⼀意か ○ not_null:対象カラムにnullがないか ○ accepted_values: 指定した値の⼀覧から対象カラムの値 が構成されているか

Slide 21

Slide 21 text

⽬次 21 ● 昨今の「データ変換処理の開発」における問題 ○ 「コードベースの開発」の問題 ○ 「GUIベースの開発」の問題 ● dbt Cloud概要 ○ 概要&dbt Cloudにより解決できた問題 ○ dbt Cloudにより解決できていない問題 ● dbt Cloudの新機能「Canvas ※旧称:Visual Editor」 ○ 機能紹介&Canvasにより解決できる問題 ○ デモ ● その他:dbt Cloud新機能紹介 ● まとめ

Slide 22

Slide 22 text

dbt Cloudにより解決できていない問題:GUIベースの問題 22 ● コードベースの問題 ○ 開発‧本番の切り分けにはGitのコマンドスキルが必要 ○ 処理の依存関係の構築‧管理が難しい ○ 特にPythonの場合、⾼度なスキルが必要 ● GUIベースの問題 ⇛ 未解決… ○ 開発内容のブラックボックス化 ○ 開発‧本番の切り替えに対応しているツールがほぼない ○ ツール固有の知識が付いて他の領域に活かしづらい

Slide 23

Slide 23 text

dbt Cloudにより解決できていない問題:GUIベースの問題 23 ● コードベースの問題 ○ 開発‧本番の切り分けにはGitのコマンドスキルが必要 ○ 処理の依存関係の構築‧管理が難しい ○ 特にPythonの場合、⾼度なスキルが必要 ● GUIベースの問題 ⇛ 未解決… ○ 開発内容のブラックボックス化 ○ 開発‧本番の切り替えに対応しているツールがほぼない ○ ツール固有の知識が付いて他の領域に活かしづらい 新機能:Canvasが解決します!

Slide 24

Slide 24 text

⽬次 24 ● 昨今の「データ変換処理の開発」における問題 ○ 「コードベースの開発」の問題 ○ 「GUIベースの開発」の問題 ● dbt Cloud概要 ○ 概要&dbt Cloudにより解決できた問題 ○ dbt Cloudにより解決できていない問題 ● dbt Cloudの新機能「Canvas ※旧称:Visual Editor」 ○ 機能紹介&Canvasにより解決できる問題 ○ デモ ● その他:dbt Cloud新機能紹介 ● まとめ

Slide 25

Slide 25 text

Canvas機能紹介 25 ● 視覚的なドラッグ&ドロップ操作でデータ変換処理を構築できる機能

Slide 26

Slide 26 text

Canvasにより解決できた問題:GUIベースの問題 その1 26 開発内容のブラックボックス化 ⇛ Canvasならば、作成したフローをSQLに変換することが可能

Slide 27

Slide 27 text

Canvasにより解決できた問題:GUIベースの問題 その2 27 開発‧本番の切り替えに対応しているツールがほぼない ⇛ Canvasならば、開発‧本番の切り替えが容易 【開発】  Canvas上で実⾏したら、  開発⽤のスキーマに出⼒ 【本番】  dbt CloudのJob機能で実⾏時のみ、  本番⽤のスキーマに出⼒

Slide 28

Slide 28 text

Canvasにより解決できた問題:GUIベースの問題 その3 28 ツール固有の知識が付いて他の領域に活かしづらい ⇛ Canvasは1ノードが1WITH句に変換されるため、SQLのイメージが着く

Slide 29

Slide 29 text

⽬次 29 ● 昨今の「データ変換処理の開発」における問題 ○ 「コードベースの開発」の問題 ○ 「GUIベースの開発」の問題 ● dbt Cloud概要 ○ 概要&dbt Cloudにより解決できた問題 ○ dbt Cloudにより解決できていない問題 ● dbt Cloudの新機能「Canvas ※旧称:Visual Editor」 ○ 機能紹介&Canvasにより解決できる問題 ○ デモ ● その他:dbt Cloud新機能紹介 ● まとめ

Slide 30

Slide 30 text

デモ1:Canvasを⽤いた新規開発‧本番環境への反映 30 ● 以下の2つのテーブルに対して、JoinやGroup Byの処理をして、顧客ごとに 注⽂情報をまとめた新しいデータマートを作り、本番環境への反映まで⾏う ○ stg_customers:顧客情報をまとめたテーブル ○ stg_orders:注⽂情報をまとめたテーブル ● 開発環境‧本番環境はスキーマレベルで分離 ○ 開発:dbt_ssagaraスキーマ ○ 本番:productionスキーマ ※時間の都合上、この開発‧本番の分離の  設定⽅法等は割愛します

Slide 31

Slide 31 text

デモ2:Copilot機能を⽤いた⾃動⽣成 31 ● Canvasには⽣成AIを⽤いた⾃動⽣成機能「Copilot」がある このCopilot機能を⽤いて、デモ1で開発した処理を⽣成してみる

Slide 32

Slide 32 text

⽬次 32 ● 昨今の「データ変換処理の開発」における問題 ○ 「コードベースの開発」の問題 ○ 「GUIベースの開発」の問題 ● dbt Cloud概要 ○ 概要&dbt Cloudにより解決できた問題 ○ dbt Cloudにより解決できていない問題 ● dbt Cloudの新機能「Canvas ※旧称:Visual Editor」 ○ 機能紹介&Canvasにより解決できる問題 ○ デモ ● その他:dbt Cloud新機能紹介 ● まとめ

Slide 33

Slide 33 text

Canvas 今後提供予定の機能について 33 ● Window関数などの追加のSQL操作のサポート ● Googleスプレッドシートなどの他のソースからデータをウェアハウスに接続して インポート ● Canvasで直接、Unit Test含めたdbtテストを定義する ※引⽤元:https://www.getdbt.com/blog/dbt-canvas-is-ga

Slide 34

Slide 34 text

dbt Cloud新機能:新しいエンジン「dbt Fusion」 34 ● dbtのバックエンドを担うエンジン部分を刷新し、 Rustで開発された「dbt Fusion」がリリース(現在はパブリックベータ) ● 特徴 ○ 従来のdbt Coreよりも⾼速なSQL解析とコンパイル ○ コンパイル後のSQLの検証は、DWHにクエリを発⾏せずにできるように ○ (Cloudのみ)ジョブとして定期実⾏する際に、新しいレコードがあり  変更が必要なテーブルだけを⾃動で認識してビルドを⾏えるように ● 今後提供予定の機能 ○ 開発環境向けのエミュレータ ○ PIIの⾃動分類 ○ 複数DB/DWHに跨ったクエリ実⾏

Slide 35

Slide 35 text

dbt Cloud新機能:Tableauとの連携機能 35 ● Tableauのダッシュボードに使⽤しているテーブル‧ビューがdbtで構築されている場 合、ダッシュボードをdbt Cloudのexposureとして⾃動登録し、リネージを確認できる ● dbtで構築しているテーブル‧ビューと紐づくダッシュボードで使⽤されている Tableau抽出をdbtのジョブ実⾏に併せて更新する機能も現在プライベートベータで提供 引用元:https://dev.classmethod.jp/articles/dbt-cloud-auto-exposures-with-tableau/

Slide 36

Slide 36 text

dbt Cloud新機能:その他の新機能について 36 ● 2025年5⽉末に⾏われた「2025 dbt Launch Showcase」での発表内容を まとめたブログを書いております。こちらも併せてご覧ください! ● https://dev.classmethod.jp/articles/2025-dbt-launch-showcase-summary/

Slide 37

Slide 37 text

⽬次 37 ● 昨今の「データ変換処理の開発」における問題 ○ 「コードベースの開発」の問題 ○ 「GUIベースの開発」の問題 ● dbt Cloud概要 ○ 概要&dbt Cloudにより解決できた問題 ○ dbt Cloudにより解決できていない問題 ● dbt Cloudの新機能「Canvas ※旧称:Visual Editor」 ○ 機能紹介&Canvasにより解決できる問題 ○ デモ ● その他:dbt Cloud新機能紹介 ● まとめ

Slide 38

Slide 38 text

まとめ 38 ● dbt CloudはCanvas機能のリリースにより、コードベース‧GUIベース、 どちらのデータ変換処理の問題についても、解決できるようになりました ● dbt Fusion、Tableau連携など、他の新機能も熱いです!

Slide 39

Slide 39 text

ご清聴ありがとうございました!