Einschränkungen bei verschachtelten Daten (Vorschau) - Amazon Redshift

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- oder map-Typ kann andere array- oder map-Typen enthalten, sofern Abfragen für die verschachtelten arrays oder maps keine scalar-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 ein OUTER 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. einer SELECT- oder WHERE-Klausel, verwenden. Die folgende Abfrage wird beispielsweise nicht ausgeführt, da sich die SELECT-Klausel der Unterabfrage auf die übergeordnete Tabelle c 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 der FROM-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 einer WHERE-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 und maps in ihrer FROM-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 um scalar-Werte handelt. Die folgenden Abfragen versuchen beispielsweise beide, Elemente aus einem Array auszuwählen (SELECT). Die Abfrage, die arr.a auswählt, funktioniert, da es sich bei arr.a um einen scalar-Wert handelt. Die zweite Abfrage funktioniert nicht, da array ein Array ist, das in der FROM-Klausel aus s3.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 der SELECT-Anweisung verwenden.