巢狀資料限制 - Amazon Redshift

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

巢狀資料限制

下列限制適用巢狀資料:

  • 陣列只可以包含純量或 struct 類型。Array 類型不能包含 arraymap 類型。

  • Redshift Spectrum 僅以外部資料表形式支援複雜資料類型。

  • 查詢和子查詢結果資料欄必須為純量。

  • 如果 OUTER JOIN 表達式參照巢狀資料表,則只能參考該資料表和其巢狀陣列 (和對映)。如果 OUTER JOIN 表達式未參考巢狀資料表,則可以參考任何數量的非巢狀資料表。

  • 如果子查詢中的 FROM 子句參考巢狀資料表,則不能參考任何其他資料表。

  • 如果子查詢取決於參考上層的巢狀資料表,則只能在 FROM 子句中使用該上層。您無法在任何其他子句中使用查詢,例如 SELECTWHERE 子句。例如,下列查詢不會運行。

    SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(c.id) FROM c.phones p WHERE p LIKE '858%') > 1

    下列查詢可運作,因為上層 c 僅用於子查詢的 FROM 子句。

    SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(*) FROM c.phones p WHERE p LIKE '858%') > 1
  • 存取 FROM 子句以外位置巢狀資料的子查詢必須傳回單一值。唯一的例外是 WHERE 子句中的 (NOT) EXISTS 運算子。

  • 不支援 (NOT) IN

  • 所有巢狀類型的最大深度為 100。此限制適用所有檔案格式 (Parquet、ORC、Ion 和 JSON)。

  • 存取巢狀資料的彙總子查詢只能參考其 FROM 子句中 (而非外部資料表) 的 arraysmaps

  • 不支持查詢 Redshift 頻譜表中嵌套數據的偽列。如需詳細資訊,請參閱 虛擬資料欄