在 Amazon Redshift 中擷取和查詢半結構化資料 - Amazon Redshift

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

在 Amazon Redshift 中擷取和查詢半結構化資料

透過使用 Amazon Redshift 中的半結構化資料支援,您可以在 Amazon Redshift 資料倉儲中擷取和儲存半結構化資料。使用 SUPER 資料類型和 PartiQL 語言,Amazon Redshift 擴展了資料倉儲功能,以與 SQL 和 NoSQL 資料來源整合。如此一來,Amazon Redshift 就能對 JSON 等關聯式和半結構化儲存資料進行有效的分析。

Amazon Redshift 提供兩種形式的半結構化資料支援: SUPER 資料類型和 Amazon Redshift Spectrum。

如果您需要以低延遲插入或更新小批次的 JSON 資料,請使用 SUPER 資料類型。此外,當您的查詢需要強大的一致性、可預測的查詢效能、複雜的查詢支援,以及不斷演變的結構描述和無結構描述資料的易用性時,請使用 SUPER。

相反地,如果您的資料查詢需要與其他 AWS 服務整合,並且主要為了存檔目的而存放在 Amazon S3 中的資料,請將 Amazon Redshift Spectrum 與開放檔案格式搭配使用。

SUPER 資料類型的使用案例

在 Amazon Redshift 中使用 SUPER 資料類型的半結構化資料支援,可提供卓越的效能、彈性和易用性。下列使用案例有助於示範如何將半結構化資料支援與 SUPER 結合使用。

快速靈活地插入 JSON 資料 - Amazon Redshift 支援快速交易,這些交易可以剖析 JSON 並將其儲存為 SUPER 值。與將 SUPER 屬性分解為傳統欄的表格中執行相同的插入操作相比,插入交易的運作速度最多可快五倍。例如,假設傳入的 JSON 格式為 {“a”:.., “b”:.., “c”“..., ...}。透過將傳入的 JSON 儲存到具有單一 SUPER 欄 S 的表格 TJ 中,而不是將其儲存到具有欄 ”a’、‘b’、“c’ 等的傳統表格 TR 中,可以多次加速插入效能。當 JSON 中有數百個屬性時,SUPER 資料類型的效能優勢就會變得很大。

此外,SUPER 資料類型不需要規則結構描述。在儲存傳入的 JSON 之前,您不需要自我檢查和清理傳入的 JSON。例如,假設傳入的 JSON 具有字串 "c" 屬性,而其他 JSON 具有整數 “c” 屬性,但沒有 SUPER 資料類型。在這種情況下,您必須分隔 c_string 和 c_int 欄或清理資料。相反地,對於 SUPER 資料類型,擷取期間會儲存所有 JSON 資料,而不會遺失資訊。稍後,您可以使用 SQL 的 PartiQL 擴充功能來分析資訊。

靈活的探索查詢 - 將半結構化資料 (例如 JSON) 儲存到 SUPER 資料值之後,您可以在不強加結構描述的情況下進行查詢。您可以使用 PartiQL 動態類型和寬鬆的語義來執行查詢並探索您需要的深度巢狀資料,而不需要在查詢之前強加結構描述。

將擷取、載入、轉換 (ETL) 操作的彈性查詢轉換為傳統具體化視觀表 - 將無結構描述和半結構化資料儲存到 SUPER 之後,您可以使用 PartiQL 具體化視觀表來自我檢查資料並將其分解為具體化視觀表。

具有分解資料的具體化視觀表是傳統分析案例的效能和可用性優勢的一個很好的範例。當您對分解資料執行分析時,Amazon Redshift 具體化視觀表的單欄式組織可提供更好的效能。此外,需要擷取資料的傳統結構描述的使用者和商業智慧 (BI) 工具可以使用檢視 (無論是具體化或虛擬化) 做為傳統的資料結構描述呈現方式。

在 PartiQL 具體化視觀表將 JSON 或 SUPER 中的資料擷取到傳統的資料欄式具體化視觀表之後,您可以查詢具體化視觀表。如需 SUPER 資料類型如何與具體化視觀表搭配運作的相關資訊,請參閱使用 SUPER 資料類型搭配具體化視觀表

您可以將動態資料遮罩政策套用至 SUPER 類型資料欄路徑上的 scalar 值。如需動態資料遮罩的詳細資訊,請參閱 動態資料遮罩。如需有關將動態資料遮罩與 SUPER 資料類型搭配使用的詳細資訊,請參閱 搭配 SUPER 資料類型路徑使用動態資料遮罩。(預覽)

如需使用 SUPER 資料類型的相關資訊,請參閱SUPER 類型

如需使用 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 值。例如,Amazon Redshift 可以將 JSON 值 [10.5, "first"] 擷取到 SUPER 值 [10.5, ‘first’],這是一個包含 Amazon Redshift 十進位 10.5 和 varchar ‘first’ 的陣列。Amazon Redshift 可以使用 COPY 命令或 JSON 剖析函數,將 JSON 擷取到 SUPER 值中,例如 json_parse('[10.5, "first"]')。預設情況下,COPY 和 json_parse 都使用嚴格的剖析語義來擷取 JSON。您還可以使用資料庫資料本身來建構 SUPER 值,包括陣列和結構。

在擷取無結構描述 JSON 的不規則結構時,SUPER 欄不需要修改結構描述。例如,在分析點擊流時,您最初將具有屬性「IP」和「時間」的「點擊」結構儲存在 SUPER 欄中。您可以在不變更結構描述的情況下新增屬性「customer id」,以擷取此類變更。

SUPER 資料類型所使用的原生格式是二進位格式,與文字形式的 JSON 值相比,它所需的空間較少。如此可在查詢時加快 SUPER 值的擷取和執行期處理速度。

使用 PartiQL 查詢超級資料 — PartiQL 是目前許多服務目前使用的 SQL-92 的向後相容延伸功能。 AWS 透過使用 PartiQL,熟悉的 SQL 建構模組可以順暢地結合對傳統表格式 SQL 資料和 SUPER 的半結構化資料的存取。您可以執行物件和陣列導覽以及解除巢狀化陣列。PartiQL 擴展了標準 SQL 語言,以宣告方式表達和處理巢狀和多值資料。

PartiQL 是 SQL 的擴充功能,其中 SUPER 欄的巢狀和無結構描述資料是一流的公民。PartiQL 不要求在查詢編譯時對所有查詢運算式進行類型檢查。這種方法可讓包含 SUPER 資料類型的查詢運算式,在存取 SUPER 欄內的實際資料類型時,在查詢執行期間以動態方式輸入。此外,PartiQL 在寬鬆模式下運作,其中類型不一致不會導致失敗,但會傳回 null。無結構描述和寬鬆查詢處理的組合使得 PartiQL 非常適合擷取、載入、轉換 (ELT) 應用程式,您的 SQL 查詢會評估擷取至 SUPER 欄的 JSON 資料。

與 Redshift Spectrum 整合 - 當透過 JSON、Parquet 和其他具有巢狀資料的格式執行 Redshift Spectrum 查詢時,Amazon Redshift 支援 PartiQL 的多個面向。Redshift Spectrum 僅支援具有結構描述的巢狀資料。例如,使用 Redshift Spectrum,您可以宣告 JSON 資料在結構描述 ARRAY<STRUCT<a:INTEGER, b:DECIMAL(5,2)>> 中具有屬性 nested_schemaful_example。此屬性的結構描述決定了資料永遠包含陣列,其中包含整數 a 和小數 b 的結構。如果資料變更為包含更多屬性,類型也會變更。相反地,SUPER 資料類型不需要結構描述。您可以使用具有不同屬性或類型的結構元素來儲存陣列。此外,一些值可以儲存在陣列之外。

如需支援 SUPER 資料類型之函數的詳細資訊,請參閱下列主題:

SUPER 資料的考量事項

使用 SUPER 資料時,請考慮以下事項:

  • 使用 JDBC 驅動程式 1.2.50 版本、ODBC 驅動程式 1.4.17 或更新版本,以及 Amazon Redshift Python 驅動程式 2.0.872 或更新版本。

    如需 JDBC 驅動程式的相關資訊,請參閱設定 JDBC 連線

    如需 ODBC 驅動程式的相關資訊,請參閱設定 ODBC 連線

  • SUPER 範例資料集 中尋找下列主題中使用的結構描述範例。

  • 下列主題中使用的所有 SQL 程式碼範例都包含在相同的 S3 字首中以供下載。其中包括資料定義語言 (DDL) 和 COPY 陳述式,以及與 SUPER 搭配使用的某些 TPC-H 修改查詢。

    若要檢視或下載 SQL 檔案,請執行下列其中一項:

    • 下載 SUPER 教學課程 SQL 檔案TPC-H 檔案

    • 使用 Amazon S3 CLI 執行以下命令。您可以使用自己的目標路徑。

      aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/semistructured-tutorial.sql /target/path aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/super_tpch_queries.sql /target/path

如需 SUPER 組態的相關資訊,請參閱SUPER 組態