Gemini in BigQueryを使って日本語の指示でクエリを生成させてみた
はじめに
こんにちは!逆転オセロニアのYouTubeチャンネル「まこちゃんねる」の中の人です。
本稿ではGoogle Cloud Next '24で発表されたGemini for Google Cloudの機能を利用して、BigQueryからGeminiを呼び出し、自然言語ベースでSQLを生成してクエリを実行してみたいと思います!簡単なクエリであれば、少しSQLを勉強すれば書けるようになりますが、複雑なクエリは試行錯誤しながら書いていくことも多いと思うので、サクッと導入できれば便利そうですよね!
Gemini for Google Cloudとは?
GeminiによるアシスタンスをGoogle Cloudに統合し、ライティングやコーディング、アドバイザーとして迅速に利用できるようにすることで、生産性を高めてくれるツールです。APIを有効化することですぐに利用することができます。また、Google Workspace用のGemini for Google Workspaceや、VSCodeやJetBrains等の主要なIDEでも利用可能となっています。本稿ではBigQueryでGeminiの機能を利用できるようにする、Gemini in BigQueryを使っていきます。
BigQueryとは?
本稿の読者であれば、もはや説明する必要がないと思うので、Gemini-1.5-Proに回答させてみました。
BigQueryとは何ですか? 100文字以内で簡潔に教えて欲しい
BigQueryは、Google Cloudが提供する、ペタバイト規模のデータに対して高速なSQLクエリを実行できるフルマネージドのデータウェアハウスです。
他ベンダーのクラウドを利用していても、データ基盤だけはBigQueryを利用したいというクライアントもいるくらい、巨大なデータに対して高速なデータ分析が可能となっている、Google Cloudを代表するサービスの一つですよね。そこにGeminiが加わり、ますます他者を寄せ付けない存在になっているのではないでしょうか。
手順
以下の手順で実施していきます。
Gemini for Google Cloudの有効化
Google Cloudコンソールの検索窓から[Gemini for Google Cloud]と入力して検索します。
API管理画面から[ENABLE]を押下してAPIを有効化します。
データの準備
本稿では、逆転オセロニア公式サイトのキャラクター駒図鑑から取得した駒データを扱います。図鑑No、名前、レアリティ、コストといった基本的な駒性能を管理した[character]テーブルを作成してあります。(図鑑Noは1から6705番までの駒データになります。データは外部公開していないので、本稿と同様に試す場合はご自身で用意してください。)
Data canvasの作成
Data canvasはBigQueryに新しく追加された機能で、Geminiを統合してcanvas上で自然言語処理やクエリ結果の可視化を行うことができます。BigQueryコンソール上のタブから[▼]を押下して表示されるメニューから[Data canvas]を選択します。
何もない状態のData canvasが作成された状態になるので、左上から任意のキャンバス名に変更し、クエリ対象のテーブル名(本稿ではcharacter)でフィルタします。表示されたテーブルにチェックを入れて、[ADD TO CANVAS]を押下してキャンバスにテーブルを追加します。
自然言語でクエリを生成して実行
Data canvasにテーブルを追加した状態で、テーブル詳細の下にある[Query]を押下すると、プロンプト入力付きのクエリエディタが表示されます。プロンプトに以下を入力してクエリを生成してみます。
神属性の駒で一番HPが高い駒が知りたい
以下のクエリが生成されました。カラムの意味を教えてる訳ではないのに、意図している適切なカラムでフィルタリングされていることが分かります。逆転オセロニアのドメイン知識がないと難しいと思っていたので、正直ビックリしました(elementは属性を表す等の説明だったり、テーブルのメタデータを充実させてあげることで、精度を上げることができるかもしれません)。実行してみると、「[機工の科学者]アルキメデス」という結果が返ってきました。クエリ自体は正しそうなのと、筆者の知識でもアルキメデスがHPが一番高い駒と予想していたので、合っていそうです。
クエリ結果のグラフ化
次に集計クエリを生成させ、棒グラフとして可視化してみたいと思います。プロンプトに以下を入力してクエリを生成して実行してみます。それっぽいクエリと結果が返ってきました。
属性毎、レアリティ毎に駒数を集計したい
結果の下にある[VISUALIZE]から[Create bar chart]を選択します。棒グラフの他にも円グラフや折れ線グラフも選べるようです。
グラフもプロンプトで指示することができるので、以下を入力して欲しいグラフを生成します。
横軸を属性と、縦軸を駒数にしたい
良い感じのグラフが出来ました(竜駒が他より若干少ないけど、バランスよく実装されてるんだなというのを初めて知りましたw)。ここまでの作業を自然言語だけで達成できるのは本当に凄いですね。
まとめ
本稿では、Gemini in BigQueryの機能を紹介しました。SQLを一度も書くことなく、自然言語だけで処理できるのはデータベースの革命だと感じました。非エンジニアやデータ分析専門のチーム以外でも目的のクエリを作成することができるようになるので、仕事をする上でも強力なツールになることは間違いないですね!他にもGeminiと統合することで効率化されているサービスが沢山あるので、また記事にしたいと思います!
Discussion