![[新機能]dbt Cloudで生成AIを用いた開発が行える「dbt Copilot」が一般提供となりました](https://images.ctfassets.net/ct0aopd36mqt/wp-thumbnail-f846b6052d1f7b983172226c6b1ed44b/6b4729aabfb5b7a3359acc27dc6b5453/dbt-1200x630-1.jpg)
[新機能]dbt Cloudで生成AIを用いた開発が行える「dbt Copilot」が一般提供となりました
さがらです。
先日、dbt Copilotが一般提供となりました!dbt Cloud Enterpriseで利用できます。
実際にdbt Copilotを試してみたので、本記事でその内容をまとめてみます。
dbt Copilotの仕様
以下は公式DocのHow dbt Copilot worksから引用して翻訳した情報ですが、dbt Copilotはこのような仕様となっています。
- dbt Cloud IDE を通じて dbt Copilot にアクセスし、ドキュメント、テスト、セマンティックモデルを生成したり、Visual Editor(ベータ版)で自然言語プロンプトを使用してSQLコードを生成したりできます。
- dbt Copilot はメタデータ(カラム名、モデルSQL、ドキュメントなど)を収集しますが、行レベルのウェアハウスデータにはアクセスしません。
- つまり、各レコードの値まで見たコード生成は不可能
- メタデータとユーザープロンプトは、処理のためにAPI呼び出しを通じてAIプロバイダー(この場合はOpenAI)に送信されます。
- AI生成コンテンツはdbt Cloudに返され、ユーザーがレビュー、編集、保存できます。
- dbt CopilotはAIモデルのトレーニングにウェアハウス上の実データを使用しません。
- 使用データを除き、機密データはdbt Labsのシステムに永続的に保存されません。
- ユーザーがクエリに挿入した個人情報や機密データを含むクライアントデータは、OpenAIによって30日以内に削除されます。
- dbt Copilotはベストプラクティススタイルガイドを使用して、チーム間の一貫性を確保します。
より詳細は、以下のよくある質問がまとめられた公式Docも参考になると思います。
dbt Copilotの有効化
まず、dbt Copilotを有効化します。
Account settings
を開いて、Settings
からEnable account access to dbt Copilot features
を有効化します。その後、右上のSaveを押して保存すればOKです。
dbt Copilotを試してみた~yaml生成編~
まず、既存のModelからドキュメント・テスト・Semantic Model等のyaml生成を行うことを試してみます。
dbt Copilotを有効化すると、右側にdbt Copilot
というボタンが表示されるため、これを押すとどのyamlを生成するかを選ぶことが出来ます。
Documentation
まず、Documentationを生成する機能を試してみます。
前提として、対象のモデルcustomers.sql
について事前にschema.yml
は作成済で、下図のような内容です。
この上で、customers.sql
の編集画面で、Documentation
を押してみます。
すると、編集画面がcustomers.sql
を定義しているschema.yml
ファイルに遷移し、下図のように定義していなかったカラムのDescriptionが自動で追加されました!
Generic Tests
次に、Generic Testsを生成する機能を試してみます。
前提として、対象のモデルcustomers.sql
について事前にschema.yml
は作成済で、下図のような内容です。
この上で、customers.sql
の編集画面で、Generic Tests
を押してみます。
すると、編集画面がcustomers.sql
を定義しているschema.yml
ファイルに遷移し、下図のように定義していなかったカラムが追加されて、first_name
とlast_name
に関してはnot_null
が追加されました!
ただ、1行目に謎のnull
が追加されたことは気になりました…
Semantic Model
次に、Semantic Modelを生成する機能を試してみます。
前提として、対象のモデルcustomers.sql
について事前にschema.yml
は作成済ですが、下図のようにSemantic Modelは定義していない状態です。
この上で、customers.sql
の編集画面で、Semantic Model
を押してみます。
すると、新しいファイルsem_customers.yml
が新しいフォルダsemantic_models
と共に生成され、下図のように出力されました!
dbt Copilotを試してみた~SQL生成編~
次に、dbt CopilotのSQL生成機能を試してみます。
新しいSQLの生成
まず、新しいSQLを作成することを試してみます。
新しいファイルを作成し、Cmd+B (Mac) または Ctrl+B (Windows) を押して、編集用のプロンプトウィンドウを開きます。
表示されたプロンプトウィンドウの中で、「stg_customersとstg_ordersをJOINして分析するためのMART層のモデルを生成して」と聞いてみます。
すると、下図のように新しいSQLが生成されました!
既存のSQLの修正
次に、既存のSQLを修正してみます。
既に記述済のモデルファイルから、Copilotで編集を行いたい箇所をマウスオーバーして、Cmd+B (Mac) または Ctrl+B (Windows) を押して、編集用のプロンプトウィンドウを開きます。
表示されたプロンプトウィンドウの中で、「これらのカラムを全て日本語のカラムに変更して」と聞いてみます。
すると、修正前が背景赤、修正後が背景緑の形でクエリが修正されました!
しかし、このままだとSnowflakeでは日本語カラム名は"
で囲っていないとエラーになりますし、名前に関するカラム名が名
と姓
という表記になってしまっています。
そのため、一度この結果をAccept
した上でもう一度プロンプトウィンドウを開き、「・日本語カラム名は”で囲って ・名前に関するカラムはユーザー_姓
またはユーザー_名
という表記にして」と伝えてみます。
すると、意図に沿った形に修正されました!
最後に
dbt Copilotが一般提供となったので試してみました。
これまでyamlなど手書きで書くのはなかなか辛いところがあったので、この機能があると非常に楽になると感じました。SQLの生成機能も、ベースとなるSQLを作成したり、今回試したように日本語カラムに変更する際にとても役立ちそうです。
dbt Cloud Enterpriseをご利用の方は、ぜひ試してみてください!