自 2025 年 11 月 1 日起,Amazon Redshift 將不再支援建立新的 Python UDFs。如果您想要使用 Python UDFs,請在該日期之前建立 UDFs。現有的 Python UDFs將繼續如常運作。如需詳細資訊,請參閱部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Redshift 中的半結構化資料
透過在 Amazon Redshift 中使用半結構化資料支援,您可以在 Amazon Redshift 資料倉儲中擷取和存放半結構化資料。使用 SUPER 資料類型和 PartiQL 語言,Amazon Redshift 擴展了資料倉儲功能,以與 SQL 和 NoSQL 資料來源整合。如此一來,Amazon Redshift 就能對關聯式和半結構化的儲存資料進行有效的分析,例如 JSON。如需 Amazon Redshift 與 PartiQL 整合的相關資訊,請參閱 PartiQL – Amazon Redshift 的 SQL 相容查詢語言。
Amazon Redshift 提供兩種形式的半結構化資料支援:SUPER 資料類型和 Amazon Redshift Spectrum。
您可以透過將半結構化資料擷取至 Amazon Redshift 並將其存放在 SUPER 資料類型中,或使用 Amazon Redshift Spectrum 查詢存放在 Amazon S3 中的資料,來查詢半結構化資料。
使用半結構化資料的最佳實務
使用半結構化資料時,請考慮下列最佳實務。
使用 SUPER 資料時,建議您將
enable_case_sensitive_super_attribute
和enable_case_sensitive_identifier
組態選項設定為 true。如需詳細資訊,請參閱enable_case_sensitive_super_attribute及enable_case_sensitive_identifier。使用 COPY 命令將資料從 Amazon S3 儲存貯體載入 Amazon Redshift SUPER 資料欄。
使用 PartiQL 動態輸入和寬鬆語意,對 SUPER 資料值執行臨機操作查詢,而無需在查詢之前強加結構描述。如需動態輸入的資訊,請參閱 動態類型。如需寬鬆語意的資訊,請參閱 寬鬆的語義。
如果您打算經常查詢資料,請使用 PartiQL 將無結構和半結構化資料分割成具體化視觀表。當您對分解資料執行分析時,Amazon Redshift 具體化視觀表的單欄式組織可提供更好的效能。此外,需要擷取資料的傳統結構描述的使用者和商業智慧 (BI) 工具可以使用檢視 (無論是具體化或虛擬化) 做為傳統的資料結構描述呈現方式。
在 PartiQL 具體化視觀表將 JSON 或 SUPER 中的資料擷取到傳統的資料欄式具體化視觀表之後,您可以查詢具體化視觀表。如需具體化視觀表的資訊,請參閱 Amazon Redshift 中的具體化視觀表。如需 SUPER 資料類型如何與具體化視觀表搭配運作的相關資訊,請參閱SUPER 資料類型和具體化視觀表。
SUPER 資料類型使用的概念
接下來,您可以找到一些 Amazon Redshift SUPER 資料類型概念。
了解 Amazon Redshift 中的 SUPER 資料類型是什麼 - SUPER 資料類型是一種 Amazon Redshift 資料類型,可儲存無結構描述陣列和包含 Amazon Redshift 純量以及可能巢狀陣列和結構的結構。SUPER 資料類型可原生存放不同格式的半結構化資料,例如 JSON 或源自文件導向來源的資料。您可以新增 SUPER 資料欄來存放半結構化資料,並寫入存取 SUPER 資料欄的查詢,以及一般純量資料欄。如需 SUPER 資料類型的相關資訊,請參閱 SUPER 類型。
將無結構描述 JSON 擷取至 SUPER – 使用彈性的半結構化 SUPER 資料類型,Amazon Redshift 可以將無結構描述 JSON 接收並擷取至具有 SUPER 資料類型的資料欄。例如,您可以使用 COPY 命令,將 JSON 值擷取[10.5, “first”]
至 SUPER 資料類型資料欄。資料欄會保留 SUPER 值[10.5, ‘first’]
。您也可以使用 擷取 JSONJSON_PARSE 函數。預設情況下,COPY 和 json_parse
都使用嚴格的剖析語義來擷取 JSON。您還可以使用資料庫資料本身來建構 SUPER 值,包括陣列和結構。
擷取無結構描述 JSON 的彈性結構時,SUPER 資料欄不需要修改結構描述。例如,在分析點擊流時,您最初將具有屬性「IP」和「時間」的「點擊」結構儲存在 SUPER 欄中。您可以在不變更結構描述的情況下新增屬性「customer id」,以擷取此類變更。
用於 SUPER 資料類型的原生格式是一種二進位格式,其所需空間小於文字形式的 JSON 值。如此可在查詢時加快 SUPER 值的擷取和執行期處理速度。
使用 PartiQL 查詢 SUPER 資料 – PartiQL 是 SQL-92 的回溯相容擴充功能,許多 AWS 服務目前使用。使用 PartiQL 後,熟悉的 SQL 建構可無縫結合對傳統表格式 SQL 資料和 SUPER 半結構化資料的存取。您可以執行物件和陣列導覽以及解除巢狀化陣列。PartiQL 擴展了標準 SQL 語言,以宣告方式表達和處理巢狀和多值資料。
PartiQL 是 SQL 的擴充功能,其中 SUPER 欄的巢狀和無結構描述資料是一流的公民。PartiQL 不要求在查詢編譯時對所有查詢運算式進行類型檢查。這種方法可讓包含 SUPER 資料類型的查詢運算式,在存取 SUPER 欄內的實際資料類型時,在查詢執行期間以動態方式輸入。此外,PartiQL 在寬鬆模式下運作,其中類型不一致不會導致失敗,但會傳回 null。無結構描述和鬆散查詢處理的組合使得 PartiQL 非常適合擷取、載入、轉換 (ELT) 應用程式,其中 SQL 查詢會評估 SUPER 欄中擷取的 JSON 資料。
如需 Amazon Redshift PartiQL 的詳細資訊,請參閱 PartiQL – Amazon Redshift 的 SQL 相容查詢語言。如需動態輸入的資訊,請參閱 動態類型。如需鬆散查詢處理的資訊,請參閱 寬鬆的語義。
與 Redshift Spectrum 整合 - 當透過 JSON、Parquet 和其他具有巢狀資料的格式執行 Redshift Spectrum 查詢時,Amazon Redshift 支援 PartiQL 的多個面向。Redshift Spectrum 僅支援具有結構描述的巢狀資料。例如,使用 Redshift Spectrum,您可以宣告您的 JSON 資料在結構描述 nested_schemaful_example
中具有 屬性ARRAY<STRUCT<a:INTEGER, b:DECIMAL(5,2)>>
。此屬性的結構描述決定了資料永遠包含陣列,其中包含整數 a 和小數 b 的結構。如果資料變更為包含更多屬性,類型也會變更。相反地,SUPER 資料類型不需要結構描述。您可以使用具有不同屬性或類型的結構元素來儲存陣列。此外,值可以存放在陣列之外。
使用 SUPER 類型資料的考量
使用 SUPER 資料時,請考慮以下事項:
使用 JDBC 驅動程式 2.x 版、ODBC 驅動程式 2.x 版或 Amazon Redshift Python 驅動程式 2.0.872 版或更新版本。不支援 ODBC 驅動程式 1.x 版。
如需 JDBC 驅動程式的相關資訊,請參閱《Amazon Redshift 管理指南》中的為 Amazon Redshift 設定 JDBC 驅動程式 2.x 版的連線。
如需 ODBC 驅動程式的相關資訊,請參閱《Amazon Redshift 管理指南》中的為 Amazon Redshift 設定 ODBC 驅動程式 2.x 版的連線。
如需有關 Python 驅動程式的資訊,請參閱《Amazon Redshift 管理指南》中的 Amazon Redshift Python 連接器。
如需 SUPER 組態的相關資訊,請參閱SUPER 組態。