教程:对 TICKIT 数据使用 Amazon Q 生成式 SQL 功能
要编写有效的提示来生成 SQL,您必须了解自己的数据库架构和数据。TICKIT 数据包含七个表:两个事实表和五个维度表。样本数据包含 2008 年举办的娱乐活动的观众售票记录。有关 TICKIT 数据的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的示例数据库。您可以通过各种方法将 TICKIT 数据加载到数据库中既可以使用 Amazon Redshift 控制台,也可以使用查询编辑器 v2。查询编辑器 v2 提供了将 TICKIT 数据加载到数据库 sample_data_dev
的方法。有关信息,请参阅将数据加载到数据库。查询编辑器 v2 还提供了适用于 TICKIT 数据的示例提示。以下场景描述了与生成式 SQL 进行的对话,用以生成有关 TICKIT 样本数据的 SQL。在这个场景中,TICKIT 样本数据已在 Amazon Redshift 集群的 dev
数据库中创建。
注意
这个例子用于说明对话过程。虽然您使用了相同的提示,但生成式 SQL 的响应并不一致。
使用 Amazon Q 生成式 SQL 的示例对话
在编辑器中,连接到包含 TICKIT 样本数据的集群或工作组。
创建一个空笔记本,然后选择
生成式 SQL 图标以打开聊天面板。
-
输入以下提示,生成 SQL 来验证
VENUE
表中的记录数:How many venues are there?
SELECT COUNT(*) AS num_venues FROM tickit.venue
选择添加到笔记本,将两个单元格添加到打开的笔记本中。一个 Markdown 单元格中为“有多少个场馆?” 另一个单元格包含生成的 SQL。
在 SQL 单元格中,选择运行以接收结果:
count ------ 202
-
要请求另一个版本的 SQL,请选择重新生成 SQL并会收到以下答案:
SELECT venuestate, COUNT(*) AS num_venues FROM tickit.venue GROUP BY venuestate
选择添加到笔记本,再添加两个单元格到打开的笔记本中。一个 Markdown 单元格中为“有多少个场馆?” 另一个单元格包含生成的 SQL。
在 SQL 单元格中,选择运行 以接收结果,其中列出了各州的场馆数量:
venuestate num_venues ---------------------- MA 4 OH 8 MI 5 ...
-
生成式 SQL 助手可以对您的要求做出推测。尽管数据库中没有小组件,但您仍然可以询问。在这种情况下,它会给出消息,说明无法生成 SQL。
How many widgets are there?
I was not able to generate any SQL
-
随着对数据库的了解越来越多,您可以提出更具体的问题来生成 SQL。例如,您知道数据库中包含 2008 年几个月的销售数据。输入以下提示以生成 SQL,用于查找 2008 年 11 月的销量:
How many sales were there in November 2008?
SELECT COUNT(*) AS num_sales FROM tickit.sales s JOIN tickit.date d ON s.dateid = d.dateid WHERE d.month = 'November' AND d.year = 2008
选择添加到笔记本,将两个单元格添加到打开的笔记本中。一个 Markdown 单元格中为“2008 年 11 月的销量是多少?” 另一个单元格包含生成的 SQL。
在 SQL 单元格中,选择运行以接收结果:
num_sales ----- 0
您发现这不是所期望的结果。
-
您注意到谓词
date.month='November'
要求在 DATE 表中使用月份名称的缩写来表示月份。将谓词更改为d.month='NOV'
,然后重新运行 SQL。SELECT COUNT(*) FROM sales JOIN date ON sales.dateid = date.dateid WHERE date.month = 'NOV' AND date.year = 2008
在 SQL 单元格中,选择运行以获取新结果。
count ----- 14261
-
如果您提出的问题试图更改连接的数据库,则会返回一条警告消息以及所推荐的任何 SQL。输入以下提示以生成将数据插入表中的 SQL:
Insert 1 into the venue table.
INSERT , UPDATE OR delete data FROM the database AS that could potentially change the data.Please provide a query that ONLY selects data
I was not able to generate the correct SQL code. I generated SQL, but you'll have to edit it to work with your database.
如果您选择添加到笔记本,将两个单元格添加到打开的笔记本中并运行 SQL,SQL 会失败。
ERROR: syntax error at or near "," Position: 132 [ErrorId: 1-6546764a-011df2691778846219ce6ec2]
此场景仅用于说明与 Amazon Q 生成式 SQL 交互的一些基本方法。您可以使用此生成式 AI 技术进行更多实验,以帮助您开始编写 SQL 来查询数据库。