# Amazon QuickSuite：自然语言数据分析实战指南

> 手把手教你用 Amazon QuickSuite 连接数据库、构建仪表板，并用自然语言查询数据。

- 作者: zhuermu
- 发布: 2025-05-20
- 网页版: https://zhuermu.com/blog/amazon-quicksuite-data-analysis/
- 首发于: https://aws.amazon.com/cn/blogs/china/amazon-quicksuite-data-analysis-end-to-end-practice/

---
在数字化转型的时代，企业已经积累了海量的业务数据。传统的数据分析通常需要专业工程师编写复杂的 SQL 查询——这成为了一个瓶颈，限制了团队提取洞察的速度。Amazon QuickSuite 是 AWS 推出的 AI 驱动数字工作空间，它将 Amazon QuickSight 的 BI 能力整合到一个统一的平台中，实现数据接入、可视化和自然语言问答。

本文将完整走一遍整个流程：连接数据库（通过公网或私有 VPC）、创建数据集和仪表板、设置用于自然语言查询的主题（Topic），并将所有内容汇聚到一个协作空间（Space）中。

## 背景

Amazon QuickSuite 主要解决三大核心需求：

- **统一数据接入**——无论数据库、数据仓库还是 SaaS 应用位于公网还是 VPC 内部，都可以从单一控制台进行连接。
- **AI 驱动的分析**——不止于静态图表。平台的 AI 智能体可以将自然语言问题转换为 SQL 查询，并在数秒内返回可视化的答案。
- **协作空间**——在团队之间共享仪表板、主题和 AI 生成的洞察，无需再通过邮件发送电子表格或截图。

本指南的目标是通过五个步骤，带你从原始数据库一路走到可用的自然语言问答系统。

## 核心组件

在深入实现之前，先快速了解一下几个关键的构建模块：

| 组件 | 用途 |
|---|---|
| **数据源（Data Source）** | 到数据库（RDS、Redshift、MySQL、PostgreSQL 等）或 SaaS 应用的连接。同时支持公网和基于 VPC 的连接方式。 |
| **数据集（Dataset）** | 从数据源导入的一组已定义数据。可以加载到 SPICE 引擎中以实现快速查询，也可以直接对数据源进行查询。 |
| **仪表板（Dashboard）** | 基于一个或多个数据集构建的交互式可视化。支持图表、筛选器、参数和下钻。 |
| **主题（Topic）** | 一个经过精心整理的数据模型，将数据库列映射到易于业务理解的名称、同义词和聚合规则——从而支持自然语言查询。 |
| **空间（Space）** | 一个协作工作空间，可在其中与团队成员共享仪表板、主题和 AI 智能体。 |
| **AI 智能体（AI Agent）** | 自然语言问答引擎，负责理解用户问题、生成 SQL 并返回可视化答案。 |
| **SPICE 引擎** | 超快并行内存计算引擎（Super-fast Parallel In-memory Calculation Engine）——一个内存存储，通过缓存来自数据源的数据来加速查询。 |

## 步骤一：连接你的数据库

Amazon QuickSuite 根据数据库的网络配置支持两种连接方式。

### 1.1 公网连接

这是较为简单的方式，适用于可通过公网访问的数据库（例如带有公有端点的 RDS 实例）。

**前置条件：**
- 数据库实例已启用公有端点。
- 数据库安全组允许来自你所在 AWS 区域的 QuickSuite IP 地址范围的入站连接。你可以在 [AWS IP 地址范围文档](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html) 中查到这些 IP 范围。

**操作步骤：**

1. 登录 Amazon QuickSuite 控制台。
2. 进入 **Datasets（数据集）**，点击 **New dataset（新建数据集）**。
3. 选择你的数据源类型（例如 MySQL、PostgreSQL、MariaDB、Amazon Redshift）。
4. 输入连接参数：
   - **Host**：数据库的公有端点（例如 `mydb.abc123.us-east-1.rds.amazonaws.com`）
   - **Port**：数据库端口（例如 MySQL 为 `3306`，PostgreSQL 为 `5432`）
   - **Database name**：要连接的具体数据库
   - **Username and password**：对目标表拥有读取权限的凭证
5. 点击 **Validate connection（验证连接）** 以测试连通性。
6. 验证通过后，点击 **Create data source（创建数据源）** 保存。

### 1.2 VPC 私有连接

对于位于 VPC 内、没有公有端点的数据库，你需要配置 VPC 连接，以便 QuickSuite 能够通过私有网络路径访问该数据库。

**何时使用这种方式：**
- 数据库位于没有公有 IP 的私有子网中。
- 你所在组织的安全策略禁止使用公有数据库端点。
- 你需要在私有网络路径上实现传输加密。

**前置条件：**
- Amazon QuickSuite 企业版（Standard Edition 标准版不提供 VPC 连接功能）。
- 在 QuickSuite 中拥有系统管理员权限。
- 一个 VPC，其中至少有一个子网与数据库处于同一可用区，并配有允许来自 QuickSuite 流量的安全组。

**操作步骤：**

1. 在 QuickSuite 控制台中，进入 **Manage QuickSuite（管理 QuickSuite）** 并选择 **VPC connections（VPC 连接）**。
2. 点击 **Add VPC connection（添加 VPC 连接）**，并提供：
   - **VPC ID**：数据库所在的 VPC
   - **Subnet ID**：与数据库实例处于同一可用区的子网
   - **Security group ID**：允许向数据库端口出站流量的安全组
3. 保存该 VPC 连接。QuickSuite 会在指定子网中创建一个弹性网络接口（ENI）。
4. 更新**数据库的安全组**，允许来自 QuickSuite ENI 安全组的、面向数据库端口的入站流量。
5. 现在创建一个新的数据源（如步骤 1.1 所示），但选择你刚刚配置的 VPC 连接，而不是使用公有端点。
6. 验证并保存连接。

**跨区域场景：** 如果你的数据库与 QuickSuite 部署所在的 AWS 区域不同，可以在 QuickSuite 中配置 VPC 连接之前，先使用 VPC Peering（VPC 对等连接）或 AWS Transit Gateway 在两个 VPC 之间建立网络连通性。

## 步骤二：创建数据集

数据源连接完成后，下一步是定义一个数据集，供 QuickSuite 用于仪表板和主题。

1. 在 QuickSuite 控制台中，进入 **Datasets（数据集）**，点击 **New dataset（新建数据集）**。
2. 选择你在步骤一中创建的数据源。
3. 选择你的数据选取方式：
   - **Select tables（选择表）**：从可视化浏览器中挑选一个或多个表。如果定义了外键，QuickSuite 会自动检测表之间的关系。
   - **Custom SQL（自定义 SQL）**：编写一条 SQL 查询，精确定义要包含哪些数据。这对于希望在数据集层面定义的联接、筛选或计算列非常有用。
4. 选择**导入模式（import mode）**：
   - **SPICE**：将数据导入内存中的 SPICE 引擎。查询很快，因为它们针对缓存而非源数据库运行。最适合无需实时刷新的数据集。
   - **Direct query（直接查询）**：直接对源数据库运行查询。数据始终保持最新，但查询性能取决于数据库的容量。
5. 在**数据准备（data preparation）**界面中，你可以：
   - 将字段重命名为易于业务理解的名称
   - 更改数据类型（例如将字符串列转换为日期）
   - 添加计算字段（例如 `profit = revenue - cost`）
   - 应用筛选器以排除无关的行
   - 定义层级结构（例如 年 > 季度 > 月）
6. 如果使用 SPICE，请配置一个**刷新计划（refresh schedule）**（例如每天 UTC 时间凌晨 2:00），使缓存数据保持相对最新。
7. 点击 **Save & publish（保存并发布）**，使该数据集可用于仪表板和主题。

## 步骤三：构建仪表板

仪表板将原始数据转化为交互式可视化，让业务用户无需编写 SQL 即可自行探索。

### 3.1 创建分析

1. 进入 **Analyses（分析）**，点击 **New analysis（新建分析）**。
2. 选择你在步骤二中创建的数据集。
3. QuickSuite 会打开分析编辑器——一个用于构建可视化的拖放式画布。

### 3.2 添加可视化

QuickSuite 支持多种图表类型：

- **条形图**用于类别对比（例如按产品类别划分的收入）
- **折线图**用于时间序列趋势（例如月活跃用户数）
- **饼图/环形图**用于比例拆分
- **透视表**用于多维度聚合
- **KPI 组件**用于突出单一指标（例如本季度总收入）
- **地理空间地图**用于基于位置的数据

添加可视化的步骤：
1. 点击 **Add（添加）** > **Add visual（添加可视化）**。
2. 选择一种图表类型。
3. 将字段从字段列表拖到图表的配置区（例如将 `product_category` 拖到 X 轴，将 `revenue` 拖到值区）。
4. QuickSuite 会自动应用默认聚合（数值字段使用 SUM，维度使用 COUNT）。你可以点击配置区中的字段并选择其他聚合方式来更改它。

### 3.3 添加筛选器与交互能力

- **筛选器（Filters）**：添加工作表级或可视化级的筛选器，让用户可以缩小数据范围（例如按日期范围或地区筛选）。
- **参数（Parameters）**：定义用户可设置的参数（例如目标收入阈值），并在计算字段或条件格式中引用它们。
- **动作（Actions）**：配置下钻动作和跨可视化筛选，使得点击某个图表中的一个条形时可以筛选另一个图表中的数据。

### 3.4 发布仪表板

分析完成后：
1. 点击 **Share（共享）** > **Publish dashboard（发布仪表板）**。
2. 为仪表板指定名称和描述。
3. 选择哪些用户或用户组可以访问。
4. 已发布的仪表板现在是一个只读、交互式的视图，相关干系人可以从 QuickSuite 控制台访问它。

## 步骤四：创建用于自然语言问答的主题

主题（Topic）是 Amazon QuickSuite 的 AI 能力真正落地的地方。主题是叠加在数据集之上的一个整理层，用于教会 AI 智能体如何理解自然语言问题。

### 4.1 主题定义了什么

一个配置良好的主题包含：

- **易于业务理解的字段名**：与其显示 `prod_cat_id`，主题会将其映射为「产品类别」，这样用户就可以用自然语言询问「产品类别」。
- **同义词**：同一概念的多个名称。例如，"revenue"、"sales"、"income" 和 "earnings" 都可能映射到同一个字段。这能显著提升识别准确率。
- **字段关系与层级结构**：各字段之间如何关联（例如一个产品属于某个类别，一个城市属于某个地区）。
- **常见问题模式**：用户可能提出的示例问题，帮助 AI 智能体理解意图。
- **默认聚合与计算**：某个字段在问题中被提及时，默认应当求和、求平均还是计数。

### 4.2 创建主题

1. 在 QuickSuite 控制台中，进入 **Topics（主题）**。
2. 点击 **Create Topic（创建主题）**。
3. 为主题指定名称和描述（例如「销售分析」——「就产品销量、收入和客户趋势进行提问」）。
4. 选择要包含的数据集。QuickSuite 会自动分析数据结构并建议字段配置。
5. 针对每个字段，进行检查和配置：
   - **Display name（显示名称）**：一个人类可读的名称（例如将 `order_dt` 改为「订单日期」）。
   - **Description（描述）**：对字段含义的简要说明（例如「客户下单的日期」）。这有助于 AI 智能体区分相似字段。
   - **Synonyms（同义词）**：添加替代名称。对于名为「Revenue」的字段，你可以添加 "sales"、"total sales"、"income"、"earnings"。
   - **Aggregation（聚合）**：设置默认聚合方式（SUM、AVG、COUNT、MIN、MAX）。收入类字段通常默认使用 SUM；评分类字段默认使用 AVG。
   - **Data type semantic（数据类型语义）**：将字段标记为维度、度量或日期字段，以便 AI 智能体知道如何对其进行分组和聚合。
6. 如果你的主题跨越多个表，请配置**字段关系（field relationships）**。例如，将 `orders.customer_id` 关联到 `customers.id`，使智能体能够回答跨越两个表的问题。
7. 添加**示例问题（sample questions）**，帮助训练 AI 智能体：
   - "What was total revenue last quarter?"（上个季度的总收入是多少？）
   - "Show me the top 10 products by sales"（按销量列出前 10 个产品）
   - "How does revenue compare across regions this year vs. last year?"（今年与去年相比，各地区的收入对比如何？）
8. 点击 **Save（保存）** 以发布该主题。

### 4.3 测试与优化

创建主题后，用自然语言问题对它进行测试：

1. 打开主题，使用内置的问答界面。
2. 用自然语言输入问题，例如 "What are the top 5 selling products this month?"（本月销量前 5 的产品是哪些？）。
3. 检查生成的 SQL 和结果。如果 AI 误解了某个问题，请返回并：
   - 为相关字段添加更多同义词
   - 完善字段描述
   - 将被误解的问题作为示例问题添加进去，并附上正确的解读
4. 反复迭代，直到主题能够可靠地回答用户可能提出的问题。

## 步骤五：在空间中汇聚一切

空间（Space）是一个协作工作空间，你可以在其中将仪表板、主题和 AI 智能体组装成为团队服务的统一体验。

1. 进入 **Spaces（空间）**，点击 **Create Space（创建空间）**。
2. 为空间指定名称（例如「销售分析中心」）和描述。
3. 向空间添加内容：
   - **Dashboards（仪表板）**：添加你在步骤三中创建的仪表板。
   - **Topics（主题）**：添加你在步骤四中创建的主题。这样便可在空间内直接启用自然语言问答栏。
   - **AI Agent（AI 智能体）**：为该空间启用 AI 智能体，让团队成员可以提问并即时获得答案。
4. 配置**访问权限（access permissions）**：
   - 添加个人用户或用户组。
   - 设置角色（Viewer 查看者、Contributor 贡献者、Admin 管理员），以控制谁可以查看、编辑或管理该空间。
5. 保存并将空间 URL 分享给你的团队。

现在，团队成员可以打开空间、浏览仪表板获取可视化洞察，并在问答栏中输入自然语言问题以获得即时的、AI 生成的答案——全程无需编写任何一行 SQL。

## 总结

本指南所涵盖的端到端工作流程包含五个步骤：

1. **连接（Connect）**——建立数据源连接（公网或 VPC 私有）。
2. **建模（Model）**——创建带有易于业务理解的字段名、计算字段和刷新计划的数据集。
3. **可视化（Visualize）**——构建带有图表、筛选器和跨可视化动作的交互式仪表板。
4. **整理（Curate）**——创建带有同义词、描述和示例问题的主题，以实现准确的自然语言问答。
5. **协作（Collaborate）**——将所有内容组装到一个空间中，让团队成员可以探索仪表板并用自然语言提问。

打造良好自然语言问答体验的关键，在于在步骤四上投入时间——你的主题配置的同义词、描述和示例问题越完善，AI 智能体解读和回答用户查询就越准确。先从一个小而定义清晰的数据集入手，让主题稳定可靠地运作起来，然后再逐步扩展。

---

## 常见问题

### Amazon QuickSuite 如何连接私有 VPC 内的数据库？

需要 QuickSuite 企业版（标准版不支持 VPC 连接）和系统管理员权限。在 Manage QuickSuite 中添加 VPC 连接，提供 VPC ID、与数据库同一可用区的子网以及安全组。QuickSuite 会在该子网中创建一个弹性网络接口（ENI），之后需更新数据库的安全组，允许来自该 ENI 安全组的、面向数据库端口的入站流量。跨区域场景可先用 VPC Peering 或 Transit Gateway 打通网络。

### Amazon QuickSuite 中的主题（Topic）是什么？为什么对自然语言查询很重要？

主题是叠加在数据集之上的整理层，用于教会 AI 智能体理解自然语言问题。它将数据库列映射为易于业务理解的名称，添加同义词（如 revenue、sales、income），定义字段关系与层级结构，设置默认聚合方式，并附上示例问题。主题配置得越完善，AI 智能体把自然语言问题转换为 SQL 的准确率就越高。

### QuickSuite 数据集应该选 SPICE 还是直接查询（Direct query）模式？

SPICE 将数据导入内存引擎，查询针对缓存运行，速度快，最适合无需实时刷新的数据集，可搭配刷新计划（如每天定时）使缓存保持相对最新。直接查询则直接对源数据库运行，数据始终保持最新，但查询性能取决于数据库本身的容量。


---

## 参考资料

- [Amazon Quick Suite](https://aws.amazon.com/quicksuite/) — AWS
- [Amazon Athena User Guide](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) — AWS Documentation
