Einschränkungen - Amazon Redshift

Amazon Redshift wird UDFs ab dem 1. November 2025 die Erstellung von neuem Python nicht mehr unterstützen. Wenn Sie Python verwenden möchten UDFs, erstellen Sie das UDFs vor diesem Datum liegende. Bestehendes Python UDFs wird weiterhin wie gewohnt funktionieren. Weitere Informationen finden Sie im Blog-Posting.

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

Mit Amazon Redshift können Sie mit dem SUPER-Datentyp arbeiten, um halbstrukturierte Daten wie JSON, Avro oder Ion zu speichern und abzufragen. Die Einschränkungen für den Datentyp SUPER beziehen sich auf die Einschränkungen und Grenzen bei der Verwendung dieses Datentyps in Amazon Redshift. Die folgenden Abschnitte enthalten Einzelheiten zu den spezifischen Einschränkungen des SUPER-Datentyps, wie z. B. maximale Größe, Verschachtelungsebenen und Datentypen, die in halbstrukturierten Daten unterstützt werden.

  • Sie können SUPER-Spalten weder als Verteilungs- noch als Sortierschlüssel definieren.

  • Ein einzelnes SUPER-Objekt kann bis zu 16 MB Daten enthalten.

  • Die maximale Verschachtelungstiefe für Arrays und Strukturen des SUPER-Datentyps beträgt 1.000.

  • Jedes in einem einzelnen SUPER-Objekt gespeicherte Zeichenkettenliteral ist auf 16.000.000 Byte begrenzt.

  • Andernfalls ist ein einzelner Wert innerhalb eines SUPER-Objekts auf die maximale Länge des entsprechenden Amazon Redshift Redshift-Typs beschränkt.

  • Sie können keine Teilaktualisierungs- oder Transformationsvorgänge für SUPER-Spalten durchführen.

  • Sie können den SUPER-Datentyp und seinen Alias nicht in Right Joins oder Full Outer Joins verwenden.

  • Der SUPER Datentyp unterstützt XML nicht als eingehendes oder ausgehendes Serialisierungsformat.

  • In der FROM-Klausel einer Unterabfrage (die korreliert ist oder nicht), die eine Tabellenvariable zum Aufheben der Verschachtelung referenziert, kann die Abfrage nur auf ihre übergeordnete Tabelle und nicht auf andere Tabellen verweisen.

  • Sie können bei SUPER-Spalten, die durch einen rekursiven allgemeinen Tabellenausdruck (WITH RECURSIVE) erzeugt wurden, keine Verschachtelung aufheben oder Unpivoting für Objekte durchführen. Weitere Informationen zur rekursiven Methode finden Sie CTEs unter. Rekursive allgemeine Tabellenausdrücke

  • Einschränkungen für die Umwandlung

    SUPER-Werte können in andere Datentypen umgewandelt werden und umgekehrt, mit folgenden Ausnahmen:

    • Amazon Redshift unterscheidet keine Ganzzahlen und Dezimalstellen der Skala 0.

    • Wenn die Skalierung nicht Null ist, hat der SUPER-Datentyp dasselbe Verhalten wie andere Amazon-Redshift-Datentypen, mit der Ausnahme, dass Amazon Redshift Super-bezogene Fehler in null konvertiert, wie im folgenden Beispiel gezeigt.

      SELECT 5::bool; bool ------- True (1 row) SELECT 5::decimal::bool; ERROR: cannot cast type numeric to boolean SELECT 5::super::bool; bool ------- True (1 row) SELECT 5.0::bool; ERROR: cannot cast type numeric to boolean SELECT 5.0::super::bool; bool ------- (1 row)
    • Amazon Redshift wandelt die Datums- und Uhrzeittypen nicht in den SUPER-Datentyp um. Amazon Redshift kann nur Datums- und Uhrzeitdatentypen vom SUPER-Datentyp übertragen, wie im folgenden Beispiel gezeigt.

      SELECT o.o_orderdate FROM customer_orders_lineitem c,c.c_orders o; order_date ------------------ "2001-09-08" (1 row) SELECT JSON_TYPEOF(o.o_orderdate) FROM customer_orders_lineitem c,c.c_orders o; json_typeof ----------------- string (1 row) SELECT o.o_orderdate::date FROM customer_orders_lineitem c,c.c_orders o; order_date ---------------- 2001-09-08 (1 row) --date/time cannot be cast to super SELECT '2019-09-09'::date::super; ERROR: cannot cast type date to super
    • Die Umwandlung von nicht-skalaren Werten (Objekt und Array) in eine Zeichenfolge gibt NULL zurück. Um diese nicht skalaren Werte korrekt zu serialisieren, sollten Sie sie nicht umwandeln. Verwenden Sie stattdessen json_serialize, um nicht-skalare Werte umzuwandeln. Die json_serialize-Funktion gibt einen varchar zurück. Normalerweise müssen Sie nicht skalare Werte in varchar umwandeln, da Amazon Redshift implizit serialisiert, wie im folgenden ersten Beispiel gezeigt.

      SELECT r_nations FROM region_nations WHERE r_regionkey=300; r_nations ---------------- [1,"abc",null] (1 row) SELECT r_nations::varchar FROM region_nations WHERE r_regionkey=300; r_nations ------------- (1 row) SELECT JSON_SERIALIZE(r_nations) FROM region_nations WHERE r_regionkey=300; json_serialize ----------------- [1,"abc",null] (1 row)
  • Amazon Redshift unterstützt keine flüchtigen Funktionen wie RANDOM ( ) oder TIMEOFDAY ( ) in Unterabfragen, die die Verschachtelung einer äußeren Tabelle oder linken Seite (LHS) von IN-Funktionen mit solchen Unterabfragen aufheben.