生成AIで正しいSQLを効率的に書くには
山田氏はデータ分析を大きく4つのフェーズに分け、各フェーズで役立つ機能を紹介した。
第1のフェーズは「データ発見・準備」。BigQuery上でGeminiを使うと、さまざまなデータのアセットに対してセマンティック検索(自然文での検索)ができるようになる。SQLを書く人にとってはあまり有用な機能ではないと思うかもしれないが、「そうではない」と山田氏。例えば「以前にSQLで分析したテーブルの名前が思い出せない」という経験をしたことのある人は多いのではないだろうか。山田氏も「何度も経験した」と言う。そんなときに便利に使えるのがセマンティック検索である。「キーワード検索で見つからなかったものがひっかかってくる」(山田氏)
次に、BigQueryのGUI上でデータの前処理が簡単に行える機能「Data Preparation」。日付のフォーマットがバラバラ、都道府県名のところに市まで入っている、データが抜けている、大文字小文字が混在している……。このようなデータはそのまま分析することができないので、データエンジニアが前処理をする必要がある。だがData Preparationを使えば、BigQueryのGUI上にある「データの準備」とボタンを押すだけで、誰でも簡単に前処理ができるようになる。
どれだけ簡単にできるのか、山田氏はデモを実施。形式が不揃いな日付が入ったカラムを選択すると、Geminiが修正案を提示し、その案を適用すると、GUI上でフォーマットが全て修正された状態で見られるようになるのだ。日付だけではない。都道府県名のカラムに市まで入っている場合は、1行だけ正しい値に修正すれば、Geminiが他の行も確認し、他に市まで入っているデータも「削った方がいいのでは」という提案をしてくれたり、データが入っていない行があればその行を削除したり、ドルマークなどの通貨記号が入っている場合は数字として扱えるように直してくれるという。
データが来るたびに毎回、前処理をするのは手間がかかる。組み立てた変換処理を保存すれば再実行や定期実行も可能になる。
第2のフェーズは「データの加工・分析」。「自然言語でSQLを作ることができる」と山田氏は説明を続ける。BigQuery上でSQLを生成する方法は複数ある。コーディングサポートツールを使う方法もあれば、SQLエディタ内に記載したコメントからSQLを生成する方法や、SQLエディタで入力中にGeminiが続きを自動補完する方法もある。中でも山田氏が推奨するのはコメントで生成する方法だ。「ゼロから生成するよりもある程度、生成AIにテンプレートを作ってもらって編集する方が早い。また何がしたかったのか、コメントとして残るので、他の人にもわかりやすい」(山田氏)
このようにGeminiを使うと、SQLを高速かつ正確に書けるようになるという。

山田氏は、Geminiでより良いSQLを生成するコツも紹介。それには「メタデータを拡充すること」が重要だという。生成AIはテーブル名や列名、そこに書いてある説明(description)を見てSQLを生成するからだ。descriptionの整備は、生成AIのためだけではない。人間にとっても作業効率向上につながるという。
さらに、分析対象テーブルがあらかじめ分かっている場合は、明示的にテーブル名をプロンプトに含めることも効果的だ。その他、一般的なプロンプトチューニングのテクニックも有用だという。
実際、メタデータを拡充するとSQLがどう変わるのかデモを実施。descriptionがきちんと書かれていると、生成AIはそれを見て正しいSQLを作成することが証明された。「ハルシネーションを起こさないためにも、メタデータを埋めてほしい」(山田氏)
山田氏が続いて紹介したのが、「Data Insights」。「データ分析のコールドスタート問題を解決するための機能」と説明する。
データ分析のコールドスタート問題とは、テーブルを初めて渡された人は、その中身が分からないので、すぐにSQLを作成することができない。Data Insightsはテーブルに対して、生成AIがサンプルのSQLを提案してくれる。「テーブルに対して『こういう分析をするのならこういうSQLがある』というテンプレートを20種ほど自動的に生成してくれる。自分がやりたい分析に合ったSQLをテンプレートから選んで、そのまま使ってもいいし、少し変えたいところがあればカスタマイズして使うこともできる」(山田氏)
データ分析のための機能は他にもある。「お気に入りの機能の一つ」と山田氏が前置きし、紹介したのが「Data Canvas」。データ分析の際、最初にテーブルを検索し、それに対してSQLを作成して実行、最後に可視化するというステップを踏む。この3つのステップをすべて自然言語で出来るようにしたのが、Data Canvasである。実際にBigQueryのUI上でData Canvasを作成、クエリを実行し、最後にグラフ化する様子をデモで見せた。
「Data Canvasは複数のテーブルをジョインさせたり、SQLの結果に対してさらに分析したりというような深掘りもできます」(山田氏)
例えばSQLを何度か叩く複雑なデータ分析をしても、その変遷を1枚のキャンバスに残し、保存できる。それを共有すれば、ナレッジシェアとして使うこともできる。