本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
巢狀資料限制
下列限制適用巢狀資料:
-
陣列只可以包含純量或
struct
類型。Array
類型不能包含array
或map
類型。 -
Redshift Spectrum 僅以外部資料表形式支援複雜資料類型。
-
查詢和子查詢結果資料欄必須為純量。
-
如果
OUTER JOIN
表達式參照巢狀資料表,則只能參考該資料表和其巢狀陣列 (和對映)。如果OUTER JOIN
表達式未參考巢狀資料表,則可以參考任何數量的非巢狀資料表。 -
如果子查詢中的
FROM
子句參考巢狀資料表,則不能參考任何其他資料表。 -
如果子查詢取決於參考上層的巢狀資料表,則只能在
FROM
子句中使用該上層。您無法在任何其他子句中使用查詢,例如SELECT
或WHERE
子句。例如,下列查詢不會運行。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
子句中 (而非外部資料表) 的arrays
和maps
。 -
不支持查詢 Redshift 頻譜表中嵌套數據的偽列。如需詳細資訊,請參閱 虛擬資料欄。