

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學課程：搭配 TICKIT 資料使用 Amazon Q 生成式 SQL 功能
<a name="query-editor-v2-generative-ai-example"></a>

若要撰寫生成式 SQL 的有效提示詞，您必須了解您的資料庫結構描述和資料。TICKIT 資料包含七個資料表：兩個事實資料表和五個維度資料表。範例資料包含 2008 年發生之娛樂活動服務員銷售的相關記錄。如需 TICKIT 資料結構描述的詳細資訊，請參閱 *Amazon Redshift 資料庫開發人員指南*中的[範例資料庫](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)。您可以透過 Amazon Redshift 主控台和查詢編輯器 v2 中的各種方法，將 TICKIT 資料載入資料庫。查詢編輯器 v2 提供一種將 TICKIT 資料載入資料庫 `sample_data_dev` 的方法。如需相關資訊，請參閱[將資料載入到資料庫](query-editor-v2-loading.md)。查詢編輯器 v2 也提供 TICKIT 資料的範例提示。下列案例說明與生成式 SQL 的對話，以產生有關 TICKIT 範例資料的 SQL。在這個案例中，TICKIT 範例資料已經建立於 Amazon Redshift 叢集的 `dev` 資料庫中。

**注意**  
這個範例是有關對話的圖解。生成式 SQL 的回應可能不符合使用相同提示詞的結果。

**與 Amazon Q 生成式 SQL 的對話範例**

1. 在**編輯**器中，連接至包含 TICKIT 範例資料的叢集或工作群組。

1. 建立空白筆記本，然後選擇 ![\[Generative SQL\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/images/qev2-amazon-q.png) 生成式 SQL 圖示以開啟聊天面板。

1. 輸入以下提示以產生 SQL，以驗證 `VENUE` 資料表中的記錄數：

   ```
   How many venues are there?
   ```

   ```
   SELECT
     COUNT(*) AS num_venues
   FROM
     tickit.venue
   ```

   選擇**新增至筆記本**，新增兩個儲存格至開啟的筆記本。一個 Markdown 儲存格「有多少個會場？」 和一個包含生成式 SQL。

   在 SQL 儲存格中，選擇**執行**以接收結果：

   ```
   count
   ------
   202
   ```

1. 若要請求其他版本的 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	
   ...
   ```

1. 生成式 SQL 助理可以假設您請求的內容。儘管資料庫中沒有小工具，但您仍然可以詢問。在這種情況下，它會提供你一條訊息，表示無法產生 SQL。

   ```
   How many widgets are there?
   ```

   ```
   I was not able to generate any SQL
   ```

1. 當您了解更多有關資料庫的資訊時，可以提出更具體的問題來產生 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
   ```

   您了解到這不是你期望的結果。

1. 您注意到述詞 `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
   ```

1. 如果您問的問題會嘗試變更連線的資料庫，則會傳回警告訊息以及任何建議的 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 來查詢資料庫。