読み込んでいます...
一致する結果は見つかりませんでした。

Google Cloud Skills Boost

Google Cloud コンソールでスキルを試す


700 以上のラボとコースにアクセス

Gemini in BigQuery でコードを開発する

ラボ 1時間 30分 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

GSP1258

Google Cloud セルフペース ラボのロゴ

概要

あなたは Data Beans で数か月前からデータ アナリストとして働いているとします。これまでに同僚と一緒にいくつかのプロジェクトを成功させてきましたが、今回は初めて一人でプロジェクトを任されました。助けを借りながら複雑度の高いクエリを作成し始めたところですが、より深い分析情報を取得するために複雑度の高いクエリを記述すように頼まれました。チームのメンバーはみんな親切で助けてくれますが、もっと自分一人でできるところも見せなければなりません。

BigQuery の SQL コードの生成、説明、変換を使用すれば、複雑度の高いクエリを自然言語を使用して記述できると読んだことがあります。新しいクエリの記述に行き詰まったときに、Gemini を使用してコードのレビューとデバッグを行えることも学びました。問題の解決に Gemini の提案も利用できます。これらの機能を使用すれば、もっと自立して取り組めるようになり、おそらくは効率も向上するはずです。しかし、何から始めればよいかわかりません。

目標

このラボでは、次の方法について学びます。

  • 自然言語のプロンプトを使用して SQL クエリを生成する。
  • BigQuery のコード説明機能を使用する。
  • BigQuery の変換機能で SQL コードを修正する。
  • BigQuery で SQL コードのレビューとデバッグを行うよう Gemini に指示する。
  • SQL コードの問題を修正するための提案を Gemini に求める。

最後に、このラボで学んだ内容を振り返る時間を用意しています。ラボ ジャーナルの質問に答えながら、自分のデータ、ユースケース、ワークフローにコード生成、説明、変換、提案をどのように応用できるか検討してみましょう。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] ペインでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] ペインでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニュー アイコンと検索フィールド

タスク 1. menu テーブルと order_item テーブルを確認する

このタスクでは、menu テーブルと order_item テーブルのスキーマを確認します。

重要: これらのテーブルのスキーマを確認しておかないと、このラボの他のタスクを正しく完了できません。

menu テーブルのスキーマを確認する

  1. Google Cloud コンソールのナビゲーション メニューで、[BigQuery] をクリックします。

  2. ようこそのダイアログで [完了] をクリックします。

  3. [エクスプローラ] パネルで、 プロジェクトを開きます。リストの一番下に coffee_on_wheels データセットが表示されます。

  4. coffee_on_wheels データセットを展開します。menu テーブルが表示されます。

  5. menu テーブルをクリックします。menu のスキーマが表示されます。

  6. スキーマの詳細を確認します。

  7. 次の質問に回答してください。

    FLOAT をデータ型として使用しているフィールドはどれですか。

order_item テーブルのスキーマを確認する

  1. order_item テーブルをクリックします。order_item のスキーマが表示されます。

  2. スキーマの詳細を確認します。

  3. 次の質問に回答してください。

    INTEGER をデータ型として使用しているフィールドはどれですか。

タスク 2. 自然言語のプロンプトを使用して SQL クエリを生成する

このタスクでは、自然言語のプロンプトを使用して SQL クエリを生成し、総収益を基準に上位 3 つと下位 3 つのメニュー アイテムのメニュー ID と総収益を調べます。

  1. + をクリックして新しい SQL クエリを作成します。BigQuery Studio に新しいタブが表示されます。

  2. SQL 生成ツール をクリックして SQL 生成ツールにアクセスします。[Gemini を使用して SQL を生成] ダイアログが表示されます。このウィンドウで自然言語のプロンプトを入力して新しい SQL ステートメントを生成できます。

  3. 次のプロンプトを入力します。

    order_item テーブルから、総収益を基準に上位 3 つと下位 3 つのメニュー ID と総収益を表示する。
  4. [生成] をクリックします。Gemini によって以下のような SQL ステートメントが作成されます。

    ( SELECT menu_id, SUM(item_total) AS total_revenue FROM `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` GROUP BY 1 ORDER BY total_revenue DESC LIMIT 3 ) UNION ALL ( SELECT menu_id, SUM(item_total) AS total_revenue FROM `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` GROUP BY 1 ORDER BY total_revenue LIMIT 3 );
  5. [挿入] をクリックします。生成したクエリが [無題のクエリ] タブに追加されます。

クエリの説明を取得する

  1. クエリを選択します。

  2. クエリのすぐ左にある Gemini をクリックします。

  3. [このクエリを説明する] をクリックします。

  4. BigQuery Studio の右側に Gemini のダイアログが開きます。

  5. [チャットを開始] をクリックします。チャット ウィンドウに以下のようなクエリの説明が表示されます。

  6. 説明を確認します。Gemini によって次のような回答の要約が提供されます。

    要約すると、このクエリは収益を基準に人気が高いメニュー アイテムと人気が低いメニュー アイテムを特定するのに役立ち、ビジネス上の意思決定に貴重な分析情報を提供します。
  7. [実行] をクリックします。結果は 6 つのメニュー アイテムで、売上が高い上位 3 つのアイテムと売上が低い下位 3 つのアイテムです。

振り返りの時間

  1. 自分のデータやユースケースに当てはめて、コード生成機能をどのように活用できるか考えてみましょう。
  2. また、コード説明機能はどのように使用すればよいでしょうか。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 収益を基準に上位 3 つと下位 3 つのメニュー ID を取得する。

タスク 3. クエリを変換する

前のタスクで作成したクエリは便利ですが、いくつかの重要な情報が不足しています。たとえば、メニュー アイテムの名前がわからず、また total_revenue 列の小数点以下の桁数が必要以上に多くなっています。

メニュー アイテムの名前を取得するには、menu テーブルと order item テーブルを結合する必要があります。また、小数点以下 2 桁まで表示するように total_revenue フィールドの形式を設定できます。

このタスクでは、Gemini の変換機能を使用して、このようなギャップに対処するためのプロンプトを記述します。

menu テーブルと order item テーブルを結合してメニュー アイテムの名前を取得する

  1. + をクリックして新しい SQL クエリを作成します。BigQuery Studio に新しいタブが表示されます。

  2. SQL 生成ツール をクリックして SQL 生成ツールにアクセスします。[Gemini を使用して SQL を生成] ダイアログが表示されます。このウィンドウで自然言語のプロンプトを入力して新しい SQL ステートメントを生成できます。

  3. 次のプロンプトを入力します。

    menu テーブルを order item テーブルと結合し、menu_id と item_name を返す。total_revenue を基準に上位 3 つのアイテムと下位 3 つのアイテムを表示する。
  4. [生成] をクリックします。Gemini によって以下のような SQL ステートメントが作成されます。

    ( SELECT t1.menu_id, t1.item_name, SUM(t2.item_total) AS total_revenue FROM `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS t1 INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS t2 ON t1.menu_id = t2.menu_id GROUP BY 1, 2 ORDER BY total_revenue DESC LIMIT 3 ) UNION ALL ( SELECT t1.menu_id, t1.item_name, SUM(t2.item_total) AS total_revenue FROM `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS t1 INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS t2 ON t1.menu_id = t2.menu_id GROUP BY 1, 2 ORDER BY total_revenue LIMIT 3 );
  5. [挿入] をクリックします。生成したクエリが [無題のクエリ] タブに追加されます。

クエリの説明を取得する

  1. クエリを選択します。

  2. クエリのすぐ左にある Gemini をクリックします。

  3. [このクエリを説明する] をクリックします。Gemini のチャット ウィンドウに、以下のような要約の説明が表示されます。

    このクエリは、コーヒー ショップのメニューで人気が高いアイテムと人気が低いアイテムをすばやく簡単に特定する方法を提供します。この情報は、在庫、価格、メニューの変更に関する意思決定に役立ちます。
  4. 説明の詳細を確認します。

  5. [実行] をクリックします。結果は 6 つのメニュー アイテムで、売上が高い上位 3 つのアイテムと売上が低い下位 3 つのアイテムです。ただし、今回は menu_id と total_revenue のフィールドだけでなく、それらの間に item_name のフィールドも表示されています。

  6. 以下の質問に回答してください。

    • 収益が最も高いアイテムはどれですか。
    • 収益が最も低いアイテムはどれですか。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 menu テーブルと order item テーブルを結合してメニュー アイテムの名前を取得する。

クエリを変換して不必要な小数点以下の桁を削除する

  1. クエリを選択します。

  2. Gemini をクリックして SQL 生成ツールにアクセスします。

  3. [変換] をクリックします。[Gemini を使用して SQL を変換] ポップアップが表示されます。

  4. 次のプロンプトを入力します。

    総収益の列の形式を小数点以下 2 桁までにする。
  5. [生成] をクリックします。生成された新しいクエリが表示されます。

    注: BigQuery ではコードの違いが示されることに注目してください。置き換えられる行は赤の背景のテキストになり、プロンプトに基づいてその行と置き換わる新しい行は緑の背景のテキストになります。
  6. [挿入] をクリックします。新しいクエリが [無題のクエリ] タブに表示されます。

    ( SELECT t1.menu_id, t1.item_name, ROUND(SUM(t2.item_total), 2) AS total_revenue FROM `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS t1 INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS t2 ON t1.menu_id = t2.menu_id GROUP BY 1, 2 ORDER BY total_revenue DESC LIMIT 3 ) UNION ALL ( SELECT t1.menu_id, t1.item_name, ROUND(SUM(t2.item_total), 2) AS total_revenue FROM `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS t1 INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS t2 ON t1.menu_id = t2.menu_id GROUP BY 1, 2 ORDER BY total_revenue LIMIT 3 );
  7. [実行] をクリックします。結果はよく似たものになります。ただし、今回は総収益のフィールドが小数点以下 2 桁までになっています。

振り返りの時間

  1. Clouds of Coffee Delight の総収益はいくらですか。

  2. 自分のデータやユースケースに当てはめて、コード生成機能をどのように活用できるか考えてみましょう。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 総収益の列の形式を小数点以下 2 桁までにする。

タスク 4. コードのレビュー、デバッグ、提案

BigQuery で Gemini を使用するときは、コードのレビューとデバッグも行うことができます。エラーが含まれている可能性がある場合は、コードを改良してエラーがなくなるように、Gemini を使用して変更を提案してもらうことができます。

シナリオ

同僚が次のような SQL コードを作成しました。

SELECT oi.menu_id, m.item_name, SUM(oi.item_total) AS total_revenue FROM `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS oi INNER JOIN `{{{project_0.project_id|set at lab start}}}.menu` AS m ON oi.menu_id = m.menu_id WHERE m.item_size = 'Small' GROUP BY 1, 2 ORDER BY total_revenue DESC LIMIT 10;

目標としていたのは、coffee_on_wheels データセットから総収益を基準に上位 10 個のスモール サイズのアイテムを特定し、それらの menu_iditem_nametotal_revenue のフィールドを取得することです。

しかし、同僚によると、この SQL コードで次のエラーが表示されます。

見つかりません: データセット : はロケーション US で見つかりませんでした

同僚は問題を解決できません。

ここでのタスクは、Gemini と coffee_on_wheels データセットを使用して、チームのメンバーが生成したこの SQL コードの問題を解決することです。

コードのレビュー

  1. + をクリックして新しい SQL クエリを作成します。

  2. 次のクエリを入力します。

    SELECT oi.menu_id, m.item_name, SUM(oi.item_total) AS total_revenue FROM `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS oi INNER JOIN `{{{project_0.project_id|set at lab start}}}.menu` AS m ON oi.menu_id = m.menu_id WHERE m.item_size = 'Small' GROUP BY 1, 2 ORDER BY total_revenue DESC LIMIT 10;
  3. [実行] をクリックします。クエリの実行に失敗し、次のエラーが表示されることを確認します。

    見つかりません: データセット : はロケーション US で見つかりませんでした

Gemini とエラーからコードをデバッグする

  1. BigQuery で Gemini のチャット ウィンドウにアクセスします。

  2. チャット ウィンドウで、次の質問を入力します。

    このクエリを実行すると、"見つかりません: : はロケーション US で見つかりませんでした" と表示されるのはなぜですか。
  3. Shift+Enter キー(Mac の場合は Shift+return キー)を押して、チャット ウィンドウで新しい行に進みます。

  4. クエリを選択してコピーします。

  5. 先ほどの質問のすぐ後に貼り付けます。

  6. Shift+Enter キー(Mac の場合は Shift+return キー)を押して、チャット ウィンドウで新しい行に進みます。

  7. 次の文を入力します。

    問題を解決する新しいコードを提案してください。
  8. メッセージを送信 をクリックします。Gemini から回答が返されます。

  9. 回答で提案を確認します。

    それらの提案から、問題の最も可能性の高い原因は、クエリにある menu テーブルの INNER JOIN ステートメントでデータセット名 coffee_on_wheels が正しく指定されていないことだとわかります。

    考えられる解決策として、以下のような改良されたクエリが提案で提供されます。

    SELECT oi.menu_id, m.item_name, SUM(oi.item_total) AS total_revenue FROM `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS oi INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS m ON oi.menu_id = m.menu_id WHERE m.item_size = 'Small' GROUP BY 1, 2 ORDER BY total_revenue DESC LIMIT 10;
  10. 改良されたクエリをコピーします。

  11. + をクリックして新しい [無題のクエリ] タブを開きます。

  12. 改良されたクエリを新しい [無題のクエリ] タブに貼り付けます。

  13. [実行] をクリックします。結果は、上位 10 個のスモールの各メニュー アイテムのアイテム名と総収益になります。

同僚が求めていた結果とかなり近いものになりました。ただし、改良されたクエリにはわずかに欠けていることが 1 つあります。total_revenue フィールドの小数点以下の桁数が必要以上に多くなっていることです。これについては、以下の手順で Gemini に修正するよう指示できます。

total_revenue フィールドの形式を小数点以下 2 桁までにする

  1. Gemini のチャット ウィンドウで、次のプロンプトを入力します。

    このクエリの改良が必要です。
  2. Shift+Enter キー(Mac の場合は Shift+return キー)を押して、チャット ウィンドウで新しい行に進みます。

  3. クエリを選択してコピーします。

  4. プロンプトのこの部分のすぐ後に貼り付けます。

  5. Shift+Enter キー(Mac の場合は Shift+return キー)を押して、チャット ウィンドウで新しい行に進みます。

  6. プロンプトの最後に次のテキストを追加します。

    結果に表示される total_revenue フィールドが小数点以下 2 桁までになるようにコードをリファクタリングしてください。
  7. プロンプトが次のようになっていることを確認します。

    このクエリの改良が必要です。SELECT oi.menu_id, m.item_name, SUM(oi.item_total) AS total_revenue FROM `.coffee_on_wheels.order_item` AS oi INNER JOIN `.coffee_on_wheels.menu` AS m ON oi.menu_id = m.menu_id WHERE m.item_size = 'Small' GROUP BY 1, 2 ORDER BY total_revenue DESC LIMIT 10; 結果に表示される total_revenue フィールドが小数点以下 2 桁までになるようにコードをリファクタリングしてください。
  8. メッセージを送信 をクリックします。Gemini から以下のような回答が返されます。

    SELECT oi.menu_id, m.item_name, ROUND(SUM(oi.item_total), 2) AS total_revenue -- Round to 2 decimal places FROM `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS oi INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS m ON oi.menu_id = m.menu_id WHERE m.item_size = 'Small' GROUP BY 1, 2 ORDER BY total_revenue DESC LIMIT 10;

    説明は以下のようになります。

    total_revenue フィールドを小数点以下 2 桁までにするには、BigQuery の ROUND() 関数を使用できます。 ROUND(SUM(oi.item_total), 2) : クエリのこの部分で、ROUND() 関数を使用して oi.item_total の合計が小数点以下 2 桁までに丸められます。ROUND() 関数の 2 で、小数点以下の桁数を指定しています。
  9. リファクタリングされたコードをコピーします。

  10. + をクリックして新しい [無題のクエリ] タブを開きます。

  11. リファクタリングされたクエリを新しい [無題のクエリ] タブに貼り付けます。

  12. [実行] をクリックします。結果は、上位 10 個のスモールの各メニュー アイテムのアイテム名と総収益になります。

求めていた結果が得られたことを確認し、同僚にクエリを送ります。これでタスクは完了です。

振り返りの時間

  1. 次の質問に回答してください。収益が 5 番目に高いアイテムの名前は何ですか。また、その収益はいくらでしたか。

  2. 自分のデータやユースケースに当てはめて、苦労しているコードの修正にコードのレビューと提案の機能をどのように活用できるか考えてみましょう。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 エラーを修正して上位 10 個のスモールのメニュー アイテムを取得する。

お疲れさまでした

自然言語のプロンプトで SQL クエリを生成し、よく理解していないクエリの内容をコードの説明を使用して確認しました。Gemini の助けを借りてコードのレビューとデバッグも行いました。コードを改良するための提案を Gemini に求めて、その修正も行いました。Gemini in BigQuery を使用したクエリの作成について、コードがある場合とない場合の両方の経験を積めたはずです。クエリのトラブルシューティングも経験できました。毎日の BigQuery の使用に自信が持てるようになったら、Gemini を使用して知識やスキルをさらに深めていってください。

次のステップと詳細情報

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2024 年 11 月 6 日

ラボの最終テスト日: 2024 年 11 月 6 日

Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。