Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einschränkungen bei verschachtelten Daten (Vorschau)
In diesem Thema werden Einschränkungen beim Lesen verschachtelter Daten mit Redshift Spectrum beschrieben. Verschachtelte Daten sind Daten, die verschachtelte Felder enthalten. Verschachtelte Felder sind Felder, die zu einer Einheit zusammengefügt sind, z. B. Arrays, Strukturen oder Objekte.
Anmerkung
Die in der folgenden Liste (mit Vorschau) gekennzeichneten Einschränkungen gelten nur für Vorschau-Cluster und Vorschau-Arbeitsgruppen, die in den folgenden Regionen erstellt wurden.
USA Ost (Ohio): (us-east-2)
USA Ost (Nord-Virginia): (us-east-1)
USA West (Nordkalifornien) (us-west-1)
Asien-Pazifik (Tokyo) (ap-northeast-1)
Europa (Irland) (eu-west-1)
Europa (Stockholm) (eu-north-1)
Weitere Informationen zum Einrichten von Vorschau-Clustern finden Sie unter Erstellen eines Vorschau-Clusters im Amazon-Redshift-Verwaltungshandbuch. Weitere Informationen zum Einrichten von Vorschau-Arbeitsgruppen finden Sie unter Erstellen einer Vorschau-Arbeitsgruppe im Amazon-Redshift-Verwaltungshandbuch.
Die folgenden Einschränkungen gelten für verschachtelte Daten:
-
Ein
array
- odermap
-Typ kann anderearray
- odermap
-Typen enthalten, sofern Abfragen für die verschachteltenarrays
odermaps
keinescalar
-Werte zurückgeben. (Vorschau) -
Amazon Redshift Spectrum unterstützt komplexe Datentypen nur als externe Tabellen.
-
Die Ergebnisspalten der Unterabfrage müssen sich auf oberster Ebene befinden. (Vorschau)
-
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, kann die Unterabfrage die übergeordnete Tabelle nur in der
FROM
-Klausel verwenden. Sie können die übergeordnete Tabelle in keiner anderen Klausel, wie z. B. einerSELECT
- oderWHERE
-Klausel, verwenden. Die folgende Abfrage wird beispielsweise nicht ausgeführt, da sich dieSELECT
-Klausel der Unterabfrage auf die übergeordnete Tabellec
bezieht.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 (ParquetORC, 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.
-
Wenn Sie Daten aus Array- oder Map-Spalten extrahieren, indem Sie diese in einer
FROM
-Klausel angeben, können Sie nur Werte aus diesen Spalten auswählen, wenn es sich umscalar
-Werte handelt. Die folgenden Abfragen versuchen beispielsweise beide, Elemente aus einem Array auszuwählen (SELECT
). Die Abfrage, diearr.a
auswählt, funktioniert, da es sich beiarr.a
um einenscalar
-Wert handelt. Die zweite Abfrage funktioniert nicht, daarray
ein Array ist, das in derFROM
-Klausel auss3.nested table
extrahiert wurde. (Vorschau)SELECT array_column FROM s3.nested_table;
array_column ----------------- [{"a":1},{"b":2}]
SELECT arr.a FROM s3.nested_table t, t.array_column arr;arr.a ----- 1
--This query fails to run. SELECT array FROM s3.nested_table tab, tab.array_column array;Sie können in der
FROM
-Klausel keine Arrays oder Maps verwenden, die selbst aus anderen Arrays oder Maps stammen. Um Arrays oder andere komplexe Strukturen auszuwählen, die in anderen Arrays verschachtelt sind, könnten Sie Indizes in derSELECT
-Anweisung verwenden.