教程:对 TICKIT 数据使用 Amazon Q 生成式 SQL 功能 - Amazon Redshift

教程:对 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 的示例对话
  1. 编辑器中,连接到包含 TICKIT 样本数据的集群或工作组。

  2. 创建一个空笔记本,然后选择 Generative SQL 生成式 SQL 图标以打开聊天面板。

  3. 输入以下提示,生成 SQL 来验证 VENUE 表中的记录数:

    How many venues are there?
    SELECT
      COUNT(*) AS num_venues
    FROM
      tickit.venue

    选择添加到笔记本,将两个单元格添加到打开的笔记本中。一个 Markdown 单元格中为“有多少个场馆?” 另一个单元格包含生成的 SQL。

    在 SQL 单元格中,选择运行以接收结果:

    count ------ 202
  4. 要请求另一个版本的 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 ...
  5. 生成式 SQL 助手可以对您的要求做出推测。尽管数据库中没有小组件,但您仍然可以询问。在这种情况下,它会给出消息,说明无法生成 SQL。

    How many widgets are there?
    I was not able to generate any SQL
  6. 随着对数据库的了解越来越多,您可以提出更具体的问题来生成 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

    您发现这不是所期望的结果。

  7. 您注意到谓词 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
  8. 如果您提出的问题试图更改连接的数据库,则会返回一条警告消息以及所推荐的任何 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 来查询数据库。