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 Blogbeitrag
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 SUPER-Datentypbeschränkungen 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 an Daten enthalten.
Die maximale Verschachtelungstiefe für Arrays und Strukturen des SUPER-Datentyps beträgt 1.000.
Ein einzelner Wert innerhalb eines SUPER-Objekts ist auf die maximale Länge des entsprechenden Amazon-Redshift-Typs begrenzt. Beispielsweise ist ein einzelner, in SUPER geladener Zeichenfolgenwert auf die maximale VARCHAR-Länge von 65 535 Bytes 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 () erzeugt wurden, keine Verschachtelung aufheben oder Objekte entpivotieren.
WITH RECURSIVE
Weitere Hinweise zur rekursiven Methode finden Sie unter. CTEs Rekursive allgemeine TabellenausdrückeEinschrä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. Diejson_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)
Bei Datenbanken ohne Berücksichtigung der Groß- und Kleinschreibung unterstützt Amazon Redshift den SUPER-Datentyp nicht. Bei Spalten ohne Berücksichtigung der Groß- und Kleinschreibung werden sie von Amazon Redshift nicht in den SUPER-Typ umgewandelt. Daher unterstützt Amazon Redshift keine SUPER-Spalten, die mit Spalten ohne Berücksichtigung der Groß- und Kleinschreibung interagieren, die die Umwandlung auslösen.
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.