Einschränkungen für verschachtelte Daten
Die folgenden Einschränkungen gelten für verschachtelte Daten:
-
Ein Array darf nur Skalare oder
struct
-Typen enthalten.Array
-Typen dürfen keinearray
- odermap
-Typen enthalten. -
Redshift Spectrum unterstützt komplexe Datentypen nur als externe Tabellen.
-
Ergebnisspalten von Abfragen und Unterabfragen müssen skalar sein.
-
Wenn sich ein
OUTER JOIN
-Ausdruck auf eine verschachtelte Tabelle bezieht, darf er sich nur auf die betreffende Tabelle und ihre verschachtelten Arrays (und Zuordnungen) beziehen. Wenn sich einOUTER JOIN
-Ausdruck nicht auf eine verschachtelte Tabelle bezieht, kann er sich auf eine beliebige Anzahl nicht verschachtelter Tabellen beziehen. -
Wenn sich eine
FROM
-Klausel in einer Unterabfrage auf eine verschachtelte Tabelle bezieht, darf sie sich auf keine andere Tabelle beziehen. -
Wenn eine Unterabfrage von einer verschachtelten Tabelle abhängig ist, die sich auf eine übergeordnete Tabelle bezieht, dürfen Sie die übergeordnete Tabelle nur in der
FROM
-Klausel verwenden. Sie dürfen die Abfrage in keiner anderen Klausel, wie z. B. einerSELECT
- oderWHERE
-Klausel, verwenden. Die folgende Abfrage wird beispielweise nicht ausgeführt.SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(c.id) FROM c.phones p WHERE p LIKE '858%') > 1
Die folgende Abfrage funktioniert, da die übergeordnete Tabelle
c
nur in derFROM
-Klausel der Unterabfrage verwendet wird.SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(*) FROM c.phones p WHERE p LIKE '858%') > 1
-
Eine Unterabfrage, die an anderer Stelle als die
FROM
-Klausel auf verschachtelte Daten zugreift, muss einen einzelnen Wert zurückgeben. Die einzigen Ausnahmen sind(NOT) EXISTS
-Operatoren in einerWHERE
-Klausel. -
(NOT) IN
wird nicht unterstützt. -
Die maximale Verschachtelungstiefe aller verschachtelter Typen ist 100. Diese Einschränkung gilt für alle Dateiformate (Parquet, ORC, Ion und JSON).
-
Aggregations-Unterabfragen, die auf verschachtelte Daten zugreifen, dürfen nur auf
arrays
undmaps
in ihrerFROM
-Klausel verweisen, nicht auf eine externe Tabelle. -
Das Abfragen der Pseudospalten verschachtelter Daten in einer Redshift-Spectrum-Tabelle wird nicht unterstützt. Weitere Informationen finden Sie unter Pseudospalten.