arrow_back

使用 Gemini in BigQuery 进行编码

登录 加入
访问 700 多个实验和课程

使用 Gemini in BigQuery 进行编码

实验 1 小时 30 分钟 universal_currency_alt 1 个积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP1258

概览

假设您是一名数据分析师,已在 Data Beans 工作了几个月。您已经和团队成员共同完成了几个卓有成效的项目,现在公司给您分派了第一个独立项目。您已经能够独立编写较为复杂的查询,但现在公司要求您构建更复杂的查询,以获取更深入的数据洞见。虽然团队成员都很乐于提供帮助,但您需要开始在工作中展现自己更独立的一面。

您得知 BigQuery 的 SQL 代码生成、解释和转换功能或许能帮助您用自然语言来编写更复杂的查询。此外,如果您在编写新查询时遇到问题,您也可以借助 Gemini 来审核和调试代码。Gemini 甚至能为您提供解决问题的具体建议。运用这些功能不仅能提升您在工作中的独立性,还可大大提高工作效率。不过,您还不太清楚该如何着手使用这些功能。

目标

在本实验中,您将学习如何完成以下操作:

  • 使用自然语言提示来生成 SQL 查询。
  • 使用 BigQuery 的代码解释功能。
  • 使用 BigQuery 的转换功能修改 SQL 代码。
  • 向 Gemini 发出提示,要求在 BigQuery 中审核和调试 SQL 代码。
  • 向 Gemini 询问解决 SQL 代码问题的具体建议。

最后,本实验还留出了一些时间来让您回答实验日志中的问题,以便您回顾在本实验中学到的内容,思考如何将代码生成、解释、转换功能和关于代码的建议应用于您的数据、应用场景和工作流。

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 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?

查看 oder_item 表的架构

  1. 点击 order_item 表。order_item 表的架构即会显示。

  2. 查看架构的详细信息。

  3. 回答以下问题:

    哪些字段的数据类型是 INTEGER?

任务 2. 使用自然语言提示生成 SQL 查询

在此任务中,您将使用自然语言提示生成 SQL 查询,找出总收入排在前三位和后三位的菜单单品,并显示它们的菜单 ID 和总收入。

  1. 点击 以创建一个新的 SQL 查询。一个新的标签页将在 BigQuery Studio 中打开。

  2. 点击 来打开 SQL 生成工具。“借助 Gemini 生成 SQL”对话框即会显示。您可以在此窗口中输入自然语言提示以生成新的 SQL 语句。

  3. 输入以下提示:

    Show the menu IDs and total revenue from the order_item table with the top three highest and top three lowest by total revenue.
  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. 点击查询左侧的 图标。

  3. 点击解释此查询

  4. Gemini 对话框将在 BigQuery Studio 的右侧打开。

  5. 点击开始聊天。在聊天窗口中,您将看到类似以下内容的查询解释:

  6. 仔细阅读该解释。Gemini 会提供类似以下内容的回答摘要:

    In summary, this query helps you identify the most and least popular menu items based on their revenue, providing valuable insights for business decisions.
  7. 点击运行。查询结果会显示六个菜单单品,即销售额最高和最低的三个单品。

思考与总结

  1. 思考一下,基于您的数据和 BigQuery 的应用场景,您会如何利用这个代码生成功能?
  2. 另外,您会如何利用代码解释功能?

点击检查我的进度以验证是否完成了以下目标: 检索收入最高和最低的三个菜单 ID。

任务 3.转换查询

您在上一个任务中创建的查询虽然有用,但还缺少一些关键信息。比如,查询结果中没有显示菜单单品名称,而且 total_revenue 列的小数位过多。

要获取菜单单品名称,您需要将 menu 表和 order_item 表进行联接。您还可以对 total_revenue 字段设定格式,只显示两位小数。

在这个任务中,您将学习如何使用 Gemini 的转换功能撰写提示,以便解决这些问题。

联接 menu 和 order_item 表以获取菜单单品名称

  1. 点击 以创建一个新的 SQL 查询。一个新的标签页将在 BigQuery Studio 中打开。

  2. 点击 来打开 SQL 生成工具。“借助 Gemini 生成 SQL”对话框即会显示。您可以在此窗口中输入自然语言提示以生成新的 SQL 语句。

  3. 输入以下提示:

    Join the menu table with the order item table, return the menu_id, the item_name, and show the top three highest items and bottom three lowest items by total_revenue.
  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. 点击查询左侧的 图标。

  3. 点击解释此查询。Gemini 聊天窗口中会显示类似以下内容的摘要,来对查询做出解释:

    This query provides a quick and easy way to identify the most popular and least popular items on the coffee shop's menu, which can be valuable for making decisions about inventory, pricing, and menu changes.
  4. 仔细阅读该解释。

  5. 点击运行。查询结果会显示六个菜单单品,即销售额最高和最低的三个单品。但不同的是,这次的查询结果不仅包含 menu_id 和 total_revenue 字段,还在它们之间新增了 item_name 字段。

  6. 回答以下问题:

    • 哪款单品的收入最高?
    • 哪款单品的收入最低?

点击检查我的进度以验证是否完成了以下目标: 联接 menu 和 order_item 表以检索菜单单品名称。

转换查询以移除多余的小数位

  1. 选中该查询。

  2. 点击 来打开 SQL 生成工具。

  3. 点击转换。“借助 Gemini 转换 SQL”弹出窗口即会显示。

  4. 输入以下提示:

    Format the total revenue column so that there are only two decimal places.
  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. 点击运行。可以看到,查询结果与之前非常相似。但现在 total_revenue 字段仅显示两位小数。

思考与总结

  1. Clouds of Coffee Delight 总共创造了多少收入?

  2. 思考一下,基于您的数据和 BigQuery 的应用场景,您会如何利用这个代码生成功能?

点击检查我的进度以验证是否完成了以下目标: 将 total_revenue 列的格式设定为仅保留两位小数。

任务 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 数据集中检索总收入排在前十位的小杯单品,包括 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. 在聊天窗口中,输入如下问题:

    Why am I getting "Not found: : was not found in location US" when I run this query?
  3. 在聊天窗口中按下 <SHIFT><ENTER>(Mac 用户请按下 <SHIFT><return>)来换行。

  4. 选中并复制该查询。

  5. 将复制的查询粘贴到您刚才输入的问题下方。

  6. 在聊天窗口中按下 <SHIFT><ENTER>(Mac 用户请按下 <SHIFT><return>)来换行。

  7. 再输入以下这句话:

    Please suggest new code to resolve any issues.
  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 种小杯单品,包括它们的名称和总收入。

这个结果与您团队成员的需求已经非常接近了。不过,这个优化后的查询仍有一个小瑕疵。请注意,total_revenue 字段的格式中包含了过多的小数位。您可以按照以下步骤要求 Gemini 为您纠正这个问题。

将 total_revenue 字段的格式设定为仅保留两位小数

  1. 在聊天窗口中,输入以下要发送给 Gemini 的提示:

    I need help refining this query.
  2. 在聊天窗口中按下 <SHIFT><ENTER>(Mac 用户请按下 <SHIFT><return>)来换行。

  3. 选中并复制该查询。

  4. 将该查询直接粘贴在提示第一部分的后面。

  5. 在聊天窗口中按下 <SHIFT><ENTER>(Mac 用户请按下 <SHIFT><return>)来换行。

  6. 在提示的结尾处,补充以下内容:

    Can you refactor the code so that we round to only two decimal places displayed with the total_revenue field in the results?
  7. 检查您的提示是否如下所示:

    I need help refining this query. 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; Can you refactor the code so that we round to only two decimal places displayed with the total_revenue field in the results?
  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;

    您将看到类似以下内容的解释:

    To limit the total_revenue field to two decimal places, you can use the ROUND() function in BigQuery. ROUND(SUM(oi.item_total), 2) : This part of the query uses the ROUND() function to round the sum of oi.item_total to two decimal places. The 2 inside the ROUND() function specifies the number of decimal places to keep.
  9. 复制重构后的代码。

  10. 点击 打开一个新的未命名查询标签页。

  11. 将重构后的查询粘贴到新的未命名查询标签页中。

  12. 点击运行。查询结果显示了菜单中总收入最高的 10 种小杯单品,包括它们的名称和总收入。

确认查询结果符合预期后,您将优化后的查询发送给团队成员。他们对您的帮助表示感谢。

思考与总结

  1. 请回答以下问题:“收入排名第五的单品叫什么?另外,它的收入是多少?”

  2. 思考一下:基于您的数据和应用场景,您会如何利用代码审核和建议功能来解决您正在苦恼的代码问题?

点击检查我的进度以验证是否完成了以下目标: 修复错误并检索总收入最高的 10 种小杯菜单单品。

恭喜!

您学习了如何使用自然语言提示来生成 SQL 查询,并运用代码解释功能来理解不熟悉的查询。此外,您还使用 Gemini 来审核和调试代码。您学习了如何向 Gemini 寻求建议,以改进乃至修复您的代码。您在使用 Gemini in BigQuery 编写查询方面积累了更多经验,无论是通过代码还是无代码方式。现在,您甚至具备了排查查询问题的经验。您对 BigQuery 的掌握程度日益提升,并能熟练运用 Gemini 来扩展您的知识和技能。

后续步骤/了解详情

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

本手册的最后更新时间:2024 年 11 月 6 日

本实验的最后测试时间:2024 年 11 月 6 日

版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。