BigQuery 中的对话式分析简介

1. 简介

从数据中获取洞见通常需要大量的时间、精力以及深厚的 SQL 专业知识。在此 Codelab 中,您将探索 BigQuery 的智能体目录,这是一个新平台,可通过对话式数据智能体提供即时、AI 驱动的洞见。

您将通过创建经过精心策划的数据智能体,超越简单的文本到 SQL 的转换。您将学习如何使用业务背景信息、系统说明和经过验证的查询来丰富智能体,以确保获得高度准确的结果。最后,您将发布此智能体,供组织中的其他用户使用。

前提条件

  • 对 Google Cloud 有基本的了解

学习内容

  • 如何浏览 BigQuery 智能体目录
  • 如何创建自定义智能体并定义知识来源
  • 如何使用 Gemini 生成语义元数据
  • 如何添加系统说明和经过验证的查询来引导智能体
  • 如何发布和共享智能体

所需条件

  • Google Cloud 账号和 Google Cloud 项目
  • 具备 BigQuery 和 SQL 的基础知识
  • 网络浏览器,例如 Chrome

2. 设置和要求

选择项目

  1. 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须 创建一个

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • 项目名称 是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
  • 项目 ID 在所有 Google Cloud 项目中是唯一的,并且是不可变的(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常情况下,您无需关注该字符串。在大多数 Codelab 中,您都需要引用项目 ID(通常用 PROJECT_ID 标识)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且此 ID 在项目期间会一直保留。
  • 此外,还有第三个值,即部分 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档
  1. 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有的话)。若要关闭资源以避免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除项目。Google Cloud 新用户符合参与 300 美元免费试用 计划的条件。

3. 准备工作

授予自己所需的角色

前往项目的 IAM 页面,然后授予自己 Gemini Data Analytics Data Agent Owner 角色:

1d3874c1bc28d81d.png

借助此角色,您可以创建、修改、共享和删除项目中的所有数据智能体。

启用所需的 API

使用侧边栏导航菜单或页面顶部的搜索菜单,前往 BigQuery > 智能体

点击启用 Data Analytics API with Gemini

4bc781d1a83ba367.png

同时启用 Gemini in BigQuery APIGemini for Google Cloud API

71678b9b8900a7a6.png

您现在应该会看到新的智能体页面:

23935c00cd4b23c1.png

4. 创建智能体

我们来使用 Google 趋势国际公共数据集 创建您的第一个数据智能体。此数据集可用于询问哪些搜索字词在国际上呈上升趋势,以及这些兴趣与历史数据相比如何。

首先,请为您的智能体命名并提供简要说明。此说明仅供其他用户了解智能体的用途。

智能体名称

Google Trends Agent

智能体说明

Data agent for the Google Trends International Top Terms public dataset

知识来源

现在,添加知识来源。知识来源是智能体可用于回答问题的 BigQuery 表、视图或 UDF。

在此演示中,为简单起见,我们仅添加一个表。不过,请注意,您最多可以为每个智能体添加 50 个知识来源,以处理更复杂的数据场景。

在搜索框中输入下表,选中该框,然后点击添加

bigquery-public-data.google_trends.international_top_terms

8b84bd4c4227637d.png

结构化上下文

如需提高数据智能体的准确率,请向表和列添加结构化上下文。点击Customise

f802527c7d72ae63.png

Gemini 会自动生成说明建议。点击“表说明”旁边的接受

cc02e10c0c74bf4b.png

如需将说明应用于所有列,请选中选择所有行 ,然后点击接受建议

f811458ff0240c.png

点击页面底部的更新 ,保存更改并返回到智能体编辑器。

说明

在智能体说明对话框中,您可以为智能体提供额外的指导,以便智能体解读和查询数据源。其中包括:

  • 同义词:关键字段的替代术语。
  • 关键字段:用于分析的最重要字段。
  • 排除的字段:数据智能体应避免的字段。
  • 过滤和分组:智能体应用于对数据进行过滤和分组的字段。
  • 联接关系:如何根据常用字段合并两个或更多表。

复制并粘贴以下说明:

### System Instruction

* You are an expert data analyst for the Google Trends International public dataset.
* Always filter on yesterday's refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY).
* If yesterday returns no data, filter on 2 days ago's refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY).
* Default to country-level results (one row per term).
* "Top" queries must deduplicate snapshot rows.
* Only include week or score when the user explicitly asks for trends over time.
* This is an international dataset and does not include any data for the United States.

### Additional Descriptions

#### 1. Core model:

* refresh_date selects the daily Top-25 term set.
* week + score are historical weekly values attached to those terms.
* Filtering week does not change which terms appear.

#### 2. Deduplication rule (critical):

* Snapshot rows repeat across weeks and regions.
* For "top" queries, always GROUP BY term (country-level) and compute rank as MIN(rank).

#### 3. Defaults:

* Country-level results only.
* Use region_code only if the user explicitly asks for regions.
* Limit results unless the user asks otherwise.

#### 4. Time series usage:

* Only include week or score when the user asks for trends over time, historical context, or week-over-week score changes.

#### 5. Field guidance:

* Prefer country_code or region_code for filters.
* country_name / region_name are for display only.
* score is normalized; compare trends within a term, not across terms.

经过验证的查询

经过验证的查询(之前称为 黄金查询)用作智能体的参考,以提高回答的准确性。它们会影响智能体的回答结构,并帮助智能体了解贵组织使用的业务逻辑。

我们来为您的智能体添加两个示例。点击添加查询 ,然后复制并粘贴以下问题和查询:

问题 1

What are the top search terms in the UK right now?

查询 1

SELECT term, MIN(rank) AS rank
FROM `bigquery-public-data.google_trends.international_top_terms`
WHERE refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
  AND country_code = 'GB'
GROUP BY term
ORDER BY rank
LIMIT 25;

在保存此查询之前,我们先运行它,确保其有效。

e3fb570a4109e93c.png

对我来说没问题!点击添加 以保存经过验证的查询。

我们再添加一个示例,以应对更复杂的用例。点击管理查询 并添加:

问题 2

Show the last 12 weeks of interest for the current top 5 terms in Auckland.

答案 2

WITH top5 AS (
  SELECT term, MIN(rank) AS rank
  FROM `bigquery-public-data.google_trends.international_top_terms`
  WHERE refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
    AND country_code = 'NZ'
    AND region_code = 'NZ-AUK'
  GROUP BY 1
  ORDER BY 2
  LIMIT 5
),
series AS (
  SELECT term, week, score,
    ROW_NUMBER() OVER (PARTITION BY term ORDER BY week DESC) AS rn
  FROM `bigquery-public-data.google_trends.international_top_terms`
  WHERE refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
    AND country_code = 'NZ'
    AND region_code = 'NZ-AUK'
    AND term IN (SELECT term FROM top5)
)
SELECT week, term, score
FROM series
WHERE rn <= 12
ORDER BY 1 DESC, 3

在进入下一部分之前,我们先来看看 Gemini 生成的建议

b52489d21f503a76.png

您可以在这里看到一些建议的经过验证的查询。将来创建新智能体时,这是一个很好的起点。只需确保验证您添加的任何查询!

术语库

我们来向术语库添加一个术语。如果您的企业使用 Dataplex,这些术语将直接从 Dataplex Universal Catalog 中的业务术语库导入。

点击添加术语 ,然后复制并粘贴以下示例:

术语

refresh_date

定义

Snapshot date that selects the daily Top 25 term set. All rows for that date belong to the same "what's trending now" snapshot. Attach Historical week and score values after this selection.

同义词

today, latest, current, now, recent

然后依次点击“添加”和“保存”。

33b4a74fcde504d5.png

代理设置

设置 部分中,您可以配置标签结算字节数上限

标签

标签是用于将 Google Cloud 资源整理到逻辑组中的键值对。为使本实验重点突出,请将标签留空。

结算字节数上限

为确保您不会意外生成任何费用高昂的查询,我们来为每个查询设置结算字节数上限。如果智能体的查询处理的字节数超出此限制,查询将失败,但不会产生费用。输入以下值:

10000000000

10,000,000,000 字节大约为 9.3 GB。如果您未指定值,则结算字节数上限将默认为项目的 每天的查询用量配额

5. 保存和共享智能体

预览

一切就绪!我们先测试一下您的智能体,然后再继续。在屏幕右侧,您可以在修改配置的同时动态测试智能体。预览会自动使用您提供的新元数据,而无需保存或发布更改。

我们来问一下智能体有权访问哪些数据。您可以随意用自己的话问几个问题:

b2679cc7c6c926b2.png

保存

测试几个提示后,保存,然后发布智能体:

56a45347d496dd42.png

发布智能体后,它将在 BigQuery Studio、对话式分析 API 和 Looker Studio Pro 中提供(取决于许可):

a4fbeb3011d409f5.png

我们计划在未来的版本中提供对其他平台和集成的支持。

分享

您应该会看到一条确认消息,表明智能体已发布。您现在可以与其他用户共享此智能体。

bdd4ee4be02c26d8.png

与其他用户共享智能体时,您可以通过为他们分配特定角色来控制他们的访问权限级别。这些角色决定了协作者是只能查看您的智能体,还是有权修改和管理其配置。

请务必注意,这些角色可以在两个不同的级别应用:

  • 项目级:在项目级授予角色会为用户授予对该 Google Cloud 项目中所有代理的相应权限。
  • 智能体级:如需进行更精细的控制,您可以为特定智能体授予角色。如果您希望用户有权访问某个特定数据智能体,但无法查看项目中的其他智能体,此方法会非常有用。

对话式分析的预定义角色如下:

  1. Gemini Data Analytics Data Agent Owner (roles/geminidataanalytics.dataAgentOwner) - 创建、修改、共享和删除所有数据智能体
  2. Gemini Data Analytics Data Agent Creator (roles/geminidataanalytics.dataAgentCreator) - 创建、修改、共享和删除您自己的数据智能体
  3. Gemini Data Analytics Data Agent Editor (roles/geminidataanalytics.dataAgentEditor) - 拥有对数据智能体的聊天和编辑权限
  4. Data Analytics Data Agent User (roles/geminidataanalytics.dataAgentUser) - 拥有对数据智能体的聊天和查看权限
  5. Gemini Data Analytics Data Agent Viewer (roles/geminidataanalytics.dataAgentViewer) - 拥有对数据智能体的查看(只读)权限

6. 与智能体创建对话

我们来退出共享 标签页,然后创建新对话:

d7a824ed0aaeaf12.png

点击创建对话后,系统会生成一个未命名的新对话。

我们来问一下英格兰有哪些字词呈上升趋势(您可以随意替换为您选择的位置!):

Based on the top 10 terms in England, how did they trend for the past 3 months?

解析响应流

数据智能体在回答问题时通常遵循相同的响应流:

  1. 推理: 智能体首先 "思考"提示。展开显示推理 按钮,查看智能体决策过程的分步洞见。
  2. 摘要:智能体生成查询、生成的报告和可视化的简明摘要。
  3. 生成的 SQL:展开这是查询… 部分以检查 SQL。点击在编辑器中打开 ,在 BigQuery Studio 中手动微调查询。
  4. 数据结果:智能体以清晰的表格格式呈现查询结果。
  5. 可视化:图表旁边会显示简要说明。智能体会自动推断出最适合您数据的可视化类型(例如,多系列折线图)。
  6. 数据洞见:智能体总结结果中的关键趋势和要点。
  7. 后续问题:最后,智能体会建议相关的后续问题,帮助您继续分析。

ee07f83cdbd20de1.png

BigQuery ML 支持

我们来继续询问数据智能体是否可以根据这些结果运行一些预测。这利用 BigQuery ML 函数来预测未来的点。

输入以下提示(请务必将“monopoly board”替换为与您的查询相关的术语!):

Can you predict and visualize how monopoly board will trend in the next 4 weeks?

您可以看到 AI_FORECAST 用于预测时间序列。这并不令人意外,不过有趣的是,您可以看到 2021 年 8 月出现大幅飙升,这与伦敦 Monopoly Lifesized 景点的盛大开幕相吻合!

441a92d19f7d15e0.png

7. 探索智能体目录

在结束之前,我们来探索一下智能体目录。点击窗口顶部的智能体目录

59acded82548bd.png

此页面是您管理数据智能体的中心,分为以下几个部分:

  • 我的智能体:您当前已发布的智能体。
  • 我的草稿智能体:您已保存但尚未发布的配置。
  • 您组织中的其他人分享的智能体:您有权访问的同事创建的智能体。
  • Google 提供的示例智能体:预配置的示例,可帮助您入门。

对于您管理的任何智能体,您都可以修改配置、复制智能体和管理共享权限。

8. 总结

恭喜,您已成功构建对话式分析数据智能体。请查看参考材料了解详情!

参考材料