dbt CloudのCanvas機能を使ってGUIでデータ変換してみた

dbt CloudのCanvas機能を使ってGUIでデータ変換してみた

2025.08.20

かわばたです。

dbt CloudのCanvasは、SQLコードを直接記述することなく、GUIを通じてデータ変換モデルを構築・編集できる機能です。ドラッグ&ドロップの直感的な操作でデータパイプラインを視覚的に組み立てることができ、幅広いユーザーによるdbtの活用が期待できます。

この記事では、dbt CloudのCanvas機能を基本的な使い方からデータ加工・GitHubのマージまで試していきます。

【公式ドキュメント】

https://docs.getdbt.com/guides/canvas?step=1

対象読者

  • dbt CloudのCanvas機能や基本的な操作について興味のある方
  • SQLの学習コストを下げて、自身でデータマートを作りたい方

事前準備と検証環境

Canvasを試すには、いくつかの準備が必要です。

必要な環境

dbt Cloudのプラン: Canvas機能はEnterpriseプラン以上で利用可能です。

接続設定済みのデータウェアハウス: Snowflake, BigQuery, Redhift, Databricksなどのデータウェアハウスへの接続が完了している必要があります。かわばたはSnowflakeのトライアルアカウントEnterprise版で試しています。

サンプルプロジェクト: この記事では、生成AIで作成したダミーデータを例に進めますが、ご自身のプロジェクトでも問題ありません。

使用するデータ

使用データの概要は下記です。

顧客データ 25行

user_id user_name created_at
101 田中 太郎 2024-01-15
102 鈴木 花子 2024-02-20
103 佐藤 次郎 2024-03-10
104 高橋 三郎 2024-04-05
105 伊藤 四郎 2024-05-21
~~~ ~~~ ~~~

製品データ 25行

product_id product_name price
201 リンゴ 150
202 バナナ 100
203 オレンジ 120
204 牛乳 250
205 パン 180
~~~ ~~~ ~~~

注文データ 100行

order_id user_id product_id quantity order_date status
3001 101 201 5 2024-06-01 completed
3002 102 204 1 2024-06-01 completed
3003 101 205 2 2024-06-02 shipped
3004 103 202 10 2024-06-03 completed
3005 104 203 3 2024-06-05 shipped
3006 102 201 2 2024-06-05 pending
3007 105 205 1 2024-06-08 completed
3008 101 204 1 2024-06-10 pending
~~~ ~~~ ~~~ ~~~ ~~~ ~~~

Canvasでデータモデルを構築

それでは、実際にCanvasを使って新しいデータモデルを構築していきます。
今回は「製品ごとの売上金額」を集計するモデルを作成します。

Canvasへのアクセス方法

  1. dbt CloudのIDEを開き、左側のファイルエクスプローラーの上部にあるCanvasボタンをクリックすると、Canvasのインターフェースが起動します。
    2025-08-19_16h34_20
  2. +Create new workspaceをクリックします。すると下記ワークスペースに遷移します。

2025-08-19_16h37_42

番号 内容
1 メインメニュー(dbtロゴ)とワークスペースのタイトル。タイトルはデフォルトでランダムに設定されますが、クリックすることでいつでも編集できます。
2 モデルタブ。モデル名はOutputオペレーターで設定できます。
3 モデルアイコン。ワークスペースでモデルを管理します。
4 Runsアイコン。警告やエラーなどの実行データが表示されます。
5 プレビューアイコン。データのプレビューを表示します。
6 追加オプション。新しいモデルの作成、既存のモデル編集、シードファイルの追加が可能です。
7 オペレーターツールバー。ワークスペースでモデルを作成するための構成要素が含まれています。
8 Copilotアイコン。自然言語を使用してCanvasモデルを構築できます。
9 SQLコードアイコン。モデルをコンパイルするSQLが表示されます。
10 ソースタブ。ソースとなるEnvironmentを設定できます。
11 Runアイコン。モデルに対してdbt runを実行します。
12 Commitアイコン。プロジェクトに対してセットアップしたGitリポジトリにCommitを行う。

新しいモデルを作成

  1. Inputの選択
    まず、モデルの元となるテーブルを選択します。
    オペレーターツールバーの「Input」セクションからModel Explorerをワークスペースにドラッグ&ドロップします。
    2025-08-19_17h22_15

  2. 下記画面のようにinputとoutputを設定する画面が表示されます。inputのChoose a modelをクリックします。

2025-08-19_17h25_18

  1. モデル一覧が表示されるので、使用したいモデルを選択しSelect modelをクリックします。
    ここでは赤枠で囲った3つのモデルをそれぞれ選択しますが、ordersから選択しています。
    ※余談ですが、descriptionでモデルの説明を書いてあると表記されるのは分かりやすくて良いですね!
    2025-08-19_17h30_54

同様の処理をproduct,usersについても行い下記のようにソースとなるモデルを定義できました。

2025-08-19_17h37_19

【小ネタ】
赤枠のアイコンをクリックするとコメントが記載できます。
2025-08-19_17h39_09

赤枠のアイコンをクリックするとデータのプレビューを確認することが出来ます。
2025-08-19_17h43_39

結合

次に、3つのテーブルを結合していきます。

1.「Transform」セクションからJoinオペレーターをドラッグし、ワークスペースにドロップします。
スクリーンショット 2025-08-19 174954

2025-08-19_17h52_14

もしくは、赤枠のアイコンをクリックするとAdd operatorが表示されるのでjoinを選択しても問題ありません。
2025-08-19_17h53_08

2.下記のようにjoinオペレーターをL側にorders,R側にproductを紐づけます。
続いて、Combine inputsをクリックします。

2025-08-19_17h54_44

  1. すると下記項目が表示されるのでJoinType結合キーを選択します。
    2025-08-19_17h58_28

今回はJoinTypeLeft,結合キーProduct_IDとしました。
下記のように紐づけることが出来ました。
2025-08-19_18h01_36

上記内容とusersも同様に結合し下記のようになりました。

2025-08-19_18h03_31

集計

次に、Product_IDごとに金額を集計します。

  1. PRICEカラムは存在しますが、QUANTITYカラムも存在するので、合計の金額を新しくカラムとして追加したいです。そのため下記Formulaオペレーターをさきほど作成したJoinオペレーターに接続します。

スクリーンショット 2025-08-19 220040

  1. Formulaオペレーターを下記のように設定します。Expressionに計算式であるPRICE*QUANTITYをいれAliasにカラム名total_priceを記載しました。
    2025-08-19_22h08_50

  2. 続いて金額を算出するために、Aggregateオペレーターを接続します。

スクリーンショット 2025-08-19 221823

  1. Configure aggregationをクリックします。
    2025-08-20_09h17_51

  2. 下記画面が表示されるので、Group byの項目にPRODUCT_IDPRODUCT_NAMEを追加。FunctionタブでSumを選択。Columnタブで先ほど作成したtotal_priceを選択します。

2025-08-20_09h20_22

生成されたSQLの確認

Canvasの素晴らしい点の一つが、GUIでの操作がリアルタイムでSQLコードに変換されることです。
各オペレーターを選択した状態で、設定パネルの「SQL」タブをクリックすると、その時点までに生成されたSQLを確認できます。これにより、「GUIの裏で、どのようなロジックが組まれているのか」が一目瞭然となり、エンジニアも安心して利用できます。

2025-08-20_09h28_58

※試していて気づいたのですが、オペレーターでコメントを追加した箇所はSQL側にもコメントが反映されていて良いですね。より可読性が上がるので積極的にコメントを入れていきたいです。

モデルの保存と実行

最後に、「Output」セクションからOutputオペレーターをAggregateオペレーターの後に接続し、モデル名をProduct_id_total_priceなどと設定します。

スクリーンショット 2025-08-20 093640

File pathはモデルを保存する場所を指しています。デフォルトではmodels/canvasとなっています。
2025-08-20_09h17_51

実際に実行していきます。
右上部にあるRunをクリックします。
2025-08-20_09h46_54

画面下部に下記画面が表示され、成功していることが確認できました。
2025-08-20_09h47_54

連携しているSnowflakeにも保存が確認できました。

2025-08-20_09h48_44

GitHubへMerge

Canvasで作成したモデルをGitHubへMergeしていきます。
右上部にあるCreate a pull requestをクリックします。
2025-08-20_09h50_02

GitHub画面へ遷移するので、通常通りレビューを行いMerge処理を行います。
2025-08-20_09h56_21

GitHubのmainへ反映することが出来ました。
2025-08-20_10h01_58

まとめ

dbt Cloud Canvasは、データエンジニアリングの専門知識の有無にかかわらず、より多くの人がデータ変換のプロセスに参加できるようにするツールであると思います。広く展開するためにも、権限回りやデータ基盤の整備がますます重要になってくると感じました。

ぜひ試してみてください!

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.