Gemini の支援機能を使用して SQL を記述する
このドキュメントでは、Gemini Code Assist を使用して、Bigtable で自然言語プロンプトを使用して SQL クエリを生成する際に AI による支援を受ける方法について説明します。
Gemini for Google Cloud がデータを使用する方法とタイミングに関する説明をご覧ください。
このドキュメントは、Bigtable、SQL、データ分析に精通しているデータベース管理者とデータ エンジニアを対象としています。Bigtable を初めて使用する場合は、クイックスタート: Google Cloud コンソールを使用して Bigtable インスタンスを作成するをご覧ください。
制限事項
- Gemini in Bigtable を使用して、SQL クエリを自然言語で説明することはできません。
Gemini in Bigtable は、Bigtable 用の GoogleSQL で有効でないクエリや、次のサポートされていないステートメントまたは構文を使用するクエリを生成する可能性があります。
SELECT以外のデータ操作言語(DML)ステートメント(INSERT、UPDATE、DELETEなど)。- データ定義言語(DDL)ステートメント(
CREATE、ALTER、DROPなど)。 - データアクセス制御ステートメント。
- サブクエリ、
JOIN、UNION、CTE のクエリ構文。
詳細については、Bigtable 用の GoogleSQL の概要をご覧ください。
始める前に
このドキュメントのタスクを完了するには、必要な Identity and Access Management(IAM)権限があることを確認してください。
省略可: このドキュメントの例に沿って操作する場合は、テストテーブルを作成するの説明に従って
test-tableを作成して入力します。
必要なロール
このドキュメントのタスクを完了するのに必要な権限を取得するには、プロジェクトに対する Gemini for Google Cloud ユーザー (roles/cloudaicompanion.user)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
自然言語プロンプトを使用して SQL クエリを生成する
Gemini に自然言語でのコメント(プロンプトともいいます)を与えて、スキーマに基づくクエリを生成できます。たとえば、Gemini へのプロンプトを次のように指定すると、その応答として SQL が生成されます。
- 「1 GB のデータプランを利用しているデバイスの数を数えて。」
- 「2019 年 5 月 1 日に Wi-Fi に接続されたすべてのスマートフォンを一覧表示して。」
- 「10 GB のデータプランが有効になっているタブレットはどれですか?」
Gemini を使用して Bigtable で SQL を生成する手順は次のとおりです。
Google Cloud コンソールで、[Bigtable] ページに移動します。
リストからインスタンスを選択します。
ナビゲーション パネルで [Bigtable Studio] をクリックします。
をクリックして新しいタブを開き、[エディタ] を選択します。
[SQL を生成] クリックします。
[コーディング サポート] ダイアログでプロンプトを入力し、[生成] をクリックします。
たとえば、プロンプト
Count the number of devices that have a 1GB data plan.を入力すると、Gemini によって次のような SQL が生成されます。SELECT count(*) FROM `test_table` WHERE cell_plan['data_plan_01gb'] = 'true'生成された SQL を確認し、次のいずれかの操作を行います。
- 提案された SQL を実行するには、[挿入] をクリックしてから、[実行] をクリックします。
- プロンプトを編集するには、[編集] をクリックし、[更新] をクリックします。
- 提案された SQL を編集するには、[挿入] をクリックします。クエリビルダーでクエリを手動で編集し、[実行] をクリックします。
(省略可)
test_tableの例を続行するには、プロンプトShow all data for phones from May 2019.を入力すると、Gemini によって次のような SQL が生成されます。SELECT * FROM `test_table` WHERE _key LIKE 'phone#%#201905%'