與 Amazon Q 生成式 SQL 互動 - Amazon Redshift

Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章

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

與 Amazon Q 生成式 SQL 互動

注意

Amazon Q 生成式 SQL 支援僅適用於下列項目AWS 區域:

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

  • 美國東部 (俄亥俄) 區域 (us-east-2)

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

  • 亞太區域 (孟買) 區域 (ap-south-1)

  • 亞太區域 (首爾) 區域 (ap-northeast-2)

  • 亞太區域 (新加坡) 區域 (ap-southeast-1)

  • 亞太區域 (雪梨) 區域 (ap-southeast-2)

  • 亞太區域 (東京) 區域 (ap-northeast-1)

  • 加拿大 (中部) 區域 (ca-central-1)

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

  • 歐洲 (愛爾蘭) 區域 (eu-west-1)

  • 歐洲 (倫敦) 區域 (eu-west-2)

  • 歐洲 (巴黎) 區域 (eu-west-3)

  • 南美洲 (聖保羅) 區域 (sa-east-1)

如需有關資料在哪裡處理的資訊,請參閱《Amazon Q Developer 使用者指南》中的 Amazon Q Developer 中的跨區域推論

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

與 Amazon Q 生成式 SQL 互動時,請提出特定問題,在有複雜的請求時進行迭代,並驗證答案的準確性。

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

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

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

將您執行生成式 SQL 所收到的錯誤文字作為提示提交至 Amazon Q 生成式 SQL。它會從這些錯誤中學習,以產生更佳的 SQL。

將您的結構描述新增至 SQL 搜尋路徑,以表示應使用結構描述。例如,當資料位於 tickit 結構描述而非公有結構描述中時,新增 tickit 結構描述。

set search_path to '$user', tickit;

與 Amazon Q 生成式 SQL 互動時的考量事項

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

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

  • 若要使用 Amazon Q 生成式 SQL,除了查詢編輯器 v2 的 AWS受管政策中指定的其他許可之外,還需要 IAM 政策sqlworkbench:GetQSqlRecommendations中的許可。如需 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 的上下文提示詞,僅做為對您的查詢的回答。

自訂內容

查詢編輯器 v2 管理員可以指定自訂內容,以根據您的環境量身打造生成式 SQL。自訂內容提供領域知識和偏好設定,可精細控制 SQL 產生。自訂內容是在 JSON 檔案中定義,查詢編輯器 v2 管理員可將其上傳到 Amazon Q 生成式 SQL。

以下是用來將資料倉儲的生成式 SQL 個人化的 JSON 金鑰。

所有資料表參考都需要遵循三部分標記法 database.schema.table

Resources

資源會指定套用自訂內容的資料資產範圍或部分。

ResourceId

指定資源的唯一識別碼。對於 Amazon Redshift 叢集,請指定 cluster id。對於 Redshift Serverless 工作群組,請指定 workgroup name

ResourceType

有效值:REDSHIFT_WAREHOUSE

TablesToInclude

指定 SQL 生成時參考的一組資料表。當您想要將 SQL 查詢的範圍限於一組定義的可用資料表子集時,此欄位會非常重要。此欄位可透過減少不必要的資料表參考,協助最佳化生成過程。您可以將此欄位與 TablesToExclude 配對,以更精確地控制查詢生成。

TablesToExclude

指定要從 SQL 生成中排除的一組資料表。當某些資料表不相關或不應在查詢生成過程中考慮時,可使用此項。

TableAnnotations

提供有關使用中資料表的中繼資料或補充資訊。這些註釋可以包括資料表說明、使用須知或任何其他屬性,以協助 Amazon Q 生成式 SQL 進一步了解資料表的內容或結構。這可讓資料表定義更清楚明確,對於提高 SQL 生成的準確性來說非常寶貴。

ColumnsToInclude

定義生成 SQL 查詢時要包含指定資料表中的哪些欄。此欄位有助於 Amazon Q 生成式 SQL 聚焦相關欄,並透過縮小資料擷取範圍來改善效能。此欄位可確保 Amazon Q 生成式 SQL 僅提取指定查詢內容所需的資料。

ColumnsToExclude

指定 SQL 生成時要省略不予考慮的欄。此項可在某些欄包含不相關或 Amazon Q 生成式 SQL 不應考慮的多餘資料時使用。透過管理包含和排除欄,您就可以精簡結果,並維持對所擷取資料的控制。

ColumnAnnotations

TableAnnotations 類似,此欄位提供個別欄特定的中繼資料或註釋。這些註釋可提供深入了解欄定義或特殊處理指示的資訊。此資訊有助於引導 SQL 生成過程,並確保在查詢中適當地使用欄。

CuratedQueries

一組預先定義的問題和答案範例,其中問題是以自然語言 (NLQ) 撰寫,而答案是對應的 SQL 查詢。這些範例可協助 Amazon Q 生成式 SQL 了解預期生成的查詢類型。這些範例可作為參考點來提高 Amazon Q 生成式 SQL 輸出的準確性和關聯性。

CustomDocuments

提供給 Amazon Q 生成式 SQL 的額外資訊或提示,例如定義、領域特定知識或解釋。例如,如果您的業務單位使用獨特的方法來計算值,例如「製造部門的總銷售額是價格 * 收入」,則可記載於此處。這些文件透過提供額外的內容,增強了 Amazon Q 生成式 SQL 解譯自然語言輸入的能力。

AdditionalTables

指定 SQL 生成時應考慮的任何其他資料表,但這些資料表不屬於儲存在資料倉儲中的資料。這可讓 Amazon Q 生成式 SQL 將外部資料來源整合到其 SQL 生成邏輯中,以擴大其處理複雜資料環境的容量。

AppendToPrompt

提供給 Amazon Q 生成式 SQL 的額外指示或指南,以引導 SQL 生成程序。這可包括說明如何建構查詢的特定指令、特定 SQL 建構模組的偏好設定,或任何其他提高 Amazon Q 生成式 SQL 輸出品質的高階指示。

下列範例自訂內容會顯示 JSON 檔案的格式,並定義下列項目:

  • 定義叢集 mycluster 的 Amazon Redshift 資料倉儲自訂內容。

  • 定義要包含和排除的特定資料表和欄,以協助最佳化 SQL 生成程序。

  • 定義要包含之資料表和欄的註釋。

  • 定義 Amazon Q 生成式 SQL 要使用的範例策劃查詢。

  • 定義生成 SQL 時要使用的自訂文件和防護機制。

  • 定義生成 SQL 時要使用的額外資料表的 DDL。

{ "resources": [ { "ResourceId": "mycluster", "ResourceType": "REDSHIFT_WAREHOUSE", "TablesToInclude": [ "database.schema.table1", "database.schema.table2" ], "TablesToExclude": [ "database.schema.table3", "database.schema.table4" ], "ColumnsToInclude": { "database.schema.table1": [ "col1", "col2" ], "database.schema.table2": [ "col1", "col2" ] }, "ColumnsToExclude": { "database.schema.table5": [ "col1", "col2" ], "database.schema.table6": [ "col1", "col2" ] }, "TableAnnotations": { "database.schema.table1": "table1 refers to Q3 sales", "database.schema.table2": "table2 refers to Q4 sales" }, "ColumnAnnotations": { "database.schema.table1": { "col1": "col1 refers to Q3 sale total", "col2": "col2 refers to sale location" }, "database.schema.table2": { "col1": "col2 refers to Q4 sale total", "col2": "col2 refers to sale location" } }, "CuratedQueries": [ { "Question": "what is the sales data for Q3", "Answer": "SELECT * FROM table1" }, { "Question": "what is the sales data for Q4", "Answer": "SELECT * FROM table2" } ], "CustomDocuments": [ "in manufacturing division total sales is price * revenue", "in research division total sales is price * revenue" ], "AdditionalTables": { "database.schema.table8": "create table database.schema.table8(col1 int)", "database.schema.table9": "create table database.schema.table9(col1 int)" }, "AppendToPrompt": "Apply these guardrails: Queries should never return the secretId field of a user." } ] }