LoginSignup
0
0

[Gemini in BigQuery] Natural language chat(自然言語)を使ってBig QueryでSQLを自動生成してもらう(プレビュー版)

Last updated at Posted at 2024-05-27

はじめに

こんにちは。
2024年4月に発表されたGemini for Google Cloudの中からNatural language chatの挙動を検証してみました。

事前説明

Google CloudのコンソールでNatural language chatについて以下の説明が記載されています。

Through a natural language chat interface, you can quickly chat with Gemini Code Assist to get answers to your coding questions, or receive guidance on cloud best practices. Chat is available in the Google Cloud Console, and IDEs such as Visual Studio Code and JetBrains IntelliJ, via the Cloud Code IDE extensions.

つまり、自然言語チャットを通じてコーディングの質問をして回答を得たり、べスプラに誘導して貰えるサービスをサポートしているようです。

なお、2024年5月20日時点では英語のみのサービス提供です。
image.png

前提

Gemini for Google Cloud APIを有効にしてからBig Queryコンソールに移動。
右上のペインから鉛筆マークを押下、「自動生成」にチェックが入っていることを確認。
image.png

実機検証①

「コーディングをサポート」を押下する。

image.png
image.png

手始めに「BigQueryで利用可能なデータセットとテーブルを知るにはどうすればよいですか?(インフォメーションスキーマ参照を誘導するような質問)」を入力。

image.png

こんなクエリが返ってきたらいいな…の期待値例(筆者作成クエリ)
SELECT
    table_schema,
    table_name
FROM 
    `kasuya-1715.INFORMATION_SCHEMA.SCHEMATA` S
LEFT JOIN
    `kasuya_us_location.INFORMATION_SCHEMA.TABLES` T
ON S.catalog_name = T.table_catalog
  WHERE
    S.catalog_name = 'kasuya-1715'
GROUP BY table_schema ,table_name;

1秒ほどでクエリが返ってきた。期待値から離れていたのは質問の仕方が悪かったか…
image.png

挿入を押下すると動かないクエリだったので、動作するクエリに手で修正した。
image.png

How to find available Datasets and Tables to me in BigQuery?
SELECT
-   dataset_id,
-   table_id
+   table_schema,
+   table_name
  FROM
-   `INFORMATION_SCHEMA.TABLES`
+   `kasuya_us_location.INFORMATION_SCHEMA.TABLES`
  WHERE
    table_catalog = 'kasuya-1715'

(所感)自社のインフォメーションスキーマはもう少し上手い具合に出てくれると
    想定していた。質問スキルを磨きながら今後の発展を期待したい。

実機検証②

こちらの方が動きは良かった。
航空会社関連のサンプルデータを想定した適当なデータを自分で作成しBig Queryに投入。

「データセットkasuya_us_locationのデータから、2004年の各週にキャンセルされたフライトの数を求めてください。」と聞いてみる。
image.png
1秒ほどで以下の結果が返ってきた。
image.png

動きそうなSQLステートメントが返ってきた。

Counting Cancelled Flights by Week in 2004 from Dataset kasuya-1715.kasuya_us_location?
SELECT
    DATE_TRUNC(DATE(CAST(arr_time AS STRING)), WEEK) AS week,
    COUNT(*) AS cancelled_flights
  FROM
    `kasuya-1715.kasuya_us_location.flights`
  WHERE CAST(arr_time AS STRING) LIKE '2004%'
-   AND cancellation_code = '1'
+   AND cancelled = true
  GROUP BY 1

Flightsテーブルが持っているのはBOOLEAN型のcancelledカラムで、
存在しないcancellation_codeというカラムが適当にクエリされていたので手修正した。

image.png

修正ver.のクエリが動作することを確認。

image.png

(所感)今回、特に指定せずとも勝手にカラムは選定してくれたことが便利だった。(期待したコードから大きく外れていなかった。)クエリが意図した分析を行えるものかどうかを判断する力は使う側に必要だと感じ取って貰えたら嬉しい。

後述

関連機能

image.png
Natural language chatの機能以外にも、Private Google AccessでAIアシスタントを使えばセキュリティとプライバシーもしっかりと制御できることが説明されていて興味を持った。

料金

Gemini for Google Cloudを使うにはGemini Code Assistサブスクリプションに登録する。
料金は年間と月額が選択出来る。
年間:USD 19.00 / month(契約した場合の月額料金。長期契約する分 少し割引される)
月額:USD 22.80 / month
image.png

月額で登録してお試し→慣れてきたら年間で登録でもよいかなと思い今回は月額を選択。
自然言語機能は全体の一部なので、他の機能使い方についても、また追加で投稿していこうと思う。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0