タイトル
はじめに
この記事は 2024/2/26 に行われた color is【クラウドLT大会vol.7】の発表内容をベースに作成しています。
Duet AI in BigQuery とは
Duet AI とは Google Cloud や Google Workspace で Google の生成 AI モデルからの支援を受けることができる機能です。
Duet AI in BigQuery では、BigQueru のコンソール画面で SQL クエリの開発支援を受けることができます。
- 自然言語から SQL クエリを作成する
- エラーが発生している SQL クエリの補完を行う
- 完成しているクエリを説明する
わたしの環境で、3つのうち上2つの機能が使えるようになりました。
この記事では Duet AI in BigQuery を使う上で気を付けた点などをまとめます。
有効化の方法
2024/2 時点でプレビュー状態となっており、使うには専用フォームに申し込み、有効化してもらう必要があります。
申し込みフォームは以下公式ドキュメントにリンクがあります。英語表記にするとフォームリンクが表示されました。
規約について
前述の通りプレビュー状態のため、Duet AI in BigQuery では2つの規約が適用されています。
- Service Specific Terms の Pre-GA Offerings Terms
- ADDITIONAL TERMS FOR GENERATIVE AI PREVIEW PRODUCTS
ADDITIONAL TERMS FOR GENERATIVE AI PREVIEW PRODUCTS にて、生成 AI が出力する結果を公開することが禁じられています。
なのでこの記事では公式ドキュメントで公開されている結果のみを使用します。
機能について
自然言語から SQL クエリを作成する
先頭に '#' をつけて作成したいクエリの概要を書き Enter ボタンを押すと、Duet AI がクエリ案を提案してくれます。
提案を採用する場合は Tab キー、採用しない場合は他のキーを押します。
エラーが発生している SQL クエリの補完を行う
クエリにエラーが発生していると赤波線が表示されます。
エラーが発生しているクエリのどこかで Enter ボタンを押すと、Duet AI が修正案を提案してくれます。
クエリ生成と同様、提案を採用する場合は Tab キーを押します。
気を付けたこと
使ってみて、BigQuery の特性をうまく利用したクエリを作るには指示の出し方に工夫がいると感じました。
例① 配列データのカラムを扱いたい場合
配列やネストされたカラムの中身を SELECT 文で取得したい場合、UNNEST()
関数を使います。
Duet AI に指示を出すとき、配列データのカラム名だけを指定すると、UNNEST を使わないクエリが生成されました。
公式ドキュメントに沿った表現で、取得したいカラムが配列データであり、展開してほしいことを示す必要がありました。
日本語ではうまくできなかったのですが、英語で flat <カラム名> into a set of rows
という指示の出すと成功しました。
例② パーティション分割テーブルを使う場合
パーティション分割テーブルは、Where 句にパーティションキーとして使っているカラムを指定することで、クエリ実行時のパフォーマンスが向上します。
コンソール画面でパーティション分割テーブルの詳細タブよりクエリタブを開くと、Where 句にパーティションキーが指定された状態で開きます。
それもあり、パーティション分割テーブルで絞り込みするような指示を出したとき、パーティションキーでの絞り込みを期待しましたが、生成された結果は別のカラムで絞り込みをしていました。
なので明示的にパーティションキーで絞り込むような指示を出す必要があります。
わたしが試したテーブルのパーティションキーは日付カラムだったのですが、生成されたクエリの絞り込みカラムも日付カラム・キーと同じ日付フォーマット(YYYY-MM-DD形式)を使っていました。
なので、Duet AI は指示した絞り込みの文字列よりデータ型を推測していそうでした。
以上です。どなたかの参考になれば幸いです。