與查詢編輯器 v2 生成式 SQL 互動 (預覽) - Amazon Redshift

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

與查詢編輯器 v2 生成式 SQL 互動 (預覽)

這是預覽版本中的查詢編輯器 v2 生成式 SQL 的發行前版本文件。文件和功能會隨時變更。我們建議僅在測試環境中使用此功能,不要在生產環境中使用。如需預覽版條款與條件,請參閱 AWS 服務條款中的 Beta 版服務參與
注意

目前,產生式 SQL 支援僅適用於下列項目 AWS 區域:

  • 美國東部 (維吉尼亞北部) 區域 (us-east-1)

  • 美國西部 (奧勒岡) 區域 (us-west-2)

  • 歐洲 (法蘭克福) 區域 (eu-central-1)

您可以在 Amazon Redshift 查詢編輯器 v2 中與 Amazon Q 生成式 SQL 功能互動。這是一個編碼助理,可根據您的提示和資料庫模式產生 SQL 陳述式。當您在查詢編輯器 v2 中編寫筆記本時,可以使用此編碼助理。

與生成式 SQL 互動時,請提出特定問題,在有複雜的請求時反覆運算,並驗證答案的準確性。

以自然語言提供分析請求時,請盡可能具體地協助編碼助理了解您需要的內容。而不是詢問「尋找售出最多門票的熱門會場」,而是提供更多詳細資訊,例如「尋找 2008 年售出最多門票的前三個會場的名稱/ID」。使用資料庫中一致的物件名稱,例如資料庫中定義的結構描述、資料表和資料欄名稱,而不是以不同的方式參考相同的物件,這會造成助理混淆。

將複雜的請求分解為多個簡單的陳述式,這些陳述式更容易讓助理解譯。反覆提出後續問題,以從助理那裡獲得更詳細的分析。例如,首先要問「哪個州的場地最多?」 然後根據回應,詢問「哪個是這個州最受歡迎的會場?」。

執行產生的 SQL 之前,請先檢閱產生的 SQL 以確保準確性 如果產生的 SQL 查詢有錯誤或不符合您的意圖,請提供指示給助理,說明如何更正,而不是改寫整個請求。例如,如果查詢缺少年份的述詞子句,請詢問「從 2008 年提供會場」。

與生成式 SQL 互動時的考量

在聊天面板中工作時,請考慮以下幾點。

  • 您帳戶的查詢編輯器 v2 管理員必須已在生成式 SQL 設定頁面中開啟聊天功能。

  • 若要使用查詢編輯器 v2 生成式 SQL,除了查詢編輯器 v2 AWS 受管政策中指定的其他許可sqlworkbench:GetQSqlRecommendations外,您還需要 IAM 政策中的許可。如需有關 AWS 受管理策略的詳細資訊,請參閱存取查詢編輯器 v2

  • 您的問題必須以英文撰寫。

  • 您的問題必須參考叢集或工作群組中已連接的資料庫。為了避免空白狀態錯誤,應該有至少一個資料表和資料庫中的一些資料。

  • 您的問題必須參照儲存在連線資料庫中的資料。但無法參考外部結構描述。如需受支援之結構描述的詳細資訊,請參閱 Amazon Redshift 資料庫開發人員指南中的建立結構描述

  • 任何導致 SQL 變更連線資料庫的問題,都可能會產生警告。

  • 生成式 AI 技術是一種新穎的技術,在反應中可能會出現錯誤,有時也稱為幻覺。在您的環境或工作負載中使用之前,請先測試並檢閱所有程式碼是否有錯誤和漏洞。

  • 您可以透過帳戶中其他使用者執行來分享 SQL 查詢,以改善建議。您的帳戶管理員可以執行下列 SQL 命令,以允許存取帳戶的查詢歷程記錄。

    GRANT ROLE SYS:MONITOR to "IAMR:role-name"; GRANT ROLE SYS:MONITOR to "IAM:user-name"; GRANT ROLE SYS:MONITOR to "database-username";

    如需有關 SYS:MONITOR 的詳細資訊,請參閱 Amazon Redshift 資料庫開發人員指南中的 Amazon Redshift 系統定義角色

  • 您的資料是安全和私有的。您的資料不會跨帳戶共用。您的查詢、資料和資料庫結構描述不會用於訓練生成式 AI 基礎模型 (FM)。您的輸入會用作 FM 的上下文提示詞,僅做為對您的查詢的回答。

使用生成式 SQL

設定正確的許可權後,在查詢編輯器 v2 中使用筆記本時,您可以選擇圖示來開始對話。

若要與查詢編輯器 v2 生成式 SQL 聊天功能進行互動以產生 SQL
  1. 在查詢編輯器 v2 的編輯器索引標籤中,開啟筆記本。

  2. 選擇 Generative SQL panel 生成式 SQL 圖示,然後按照指令在聊天面板中詢問您對 Amazon Redshift 查詢編輯器 v2 生成式 SQL 的問題。

    您在提示欄位中提供問題,查詢編輯器 v2 會使用建議的 SQL 來回應。遇到的任何錯誤,都會在聊天面板中傳回給您。

  3. 選擇新增至筆記本,新增 Markdown 儲存格與您的提示,以及含有建議 SQL 的 SQL 儲存格以加入至您的筆記本。

  4. (選用) 選擇重新產生 SQL,為相同的提示產生另一個回應。您可以選擇為目前的提示重新產生 SQL 一次。

  5. (選用) 在生成式 SQL 聊天面板中,選擇 More 更多圖示,然後選擇重新整理資料庫以重新整理描述已連線之資料庫的中繼資料。此中繼資料包括資料庫中結構描述定義、資料表和欄的定義。

以管理員身分更新生成式 SQL 設定

具有正確 IAM 許可的使用者可以檢視和變更相同 AWS 帳戶中其他使用者的生成式 SQL 設定。除了查詢編輯器 v2 的受管政策中指定的其他許可sqlworkbench:UpdateAccountQSqlSettings外,此 AWS 管理員還必須在其 IAM 政策中擁有權限。如需受管政策的詳細資訊,請參閱 要使用查詢編輯器 v2 所需的許可

讓系統管理員為帳戶中的所有使用者開啟生成式 SQL 聊天
  1. 選擇 Settings 設定圖示以顯示不同設定畫面的選單。

  2. 然後選擇 Generative SQL settings 生成式 SQL 設定圖示,以顯示生成式 SQL 設定頁面。

  3. 選取生成式 SQL,為帳戶中的使用者開啟生成式 SQL 功能。

搭配 TICKIT 資料使用 Amazon Q 生成式 SQL 功能的範例

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

注意

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

與查詢編輯器 v2 生成式 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]

這個案例只說明了與查詢編輯器 v2 生成式 SQL 互動的一些基本方法。您可以使用這種生成式 AI 技術進行更多實驗,幫助您開始編寫 SQL 來查詢資料庫。