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.
Operatoren und Funktionen
Mit Amazon Redshift können Sie mithilfe von SUPER-Daten mithilfe von Operatoren und Funktionen erweiterte Analysen für große Datensätze durchführen. Operatoren und Funktionen für SUPER-Daten sind SQL-Konstrukte, die eine komplexe Analyse und Bearbeitung von halbstrukturierten Daten ermöglichen, die in Amazon Redshift Redshift-Tabellen gespeichert sind.
In den folgenden Abschnitten werden die Syntax, Beispiele und bewährte Methoden für die Verwendung von Operatoren und Funktionen für SUPER-Daten in Amazon Redshift behandelt, um das volle Potenzial Ihrer halbstrukturierten Daten auszuschöpfen.
Arithmetische Operatoren
SUPER-Werte unterstützen alle grundlegenden arithmetischen Operatoren +, -, *, /, % mit dynamischer Typisierung. Der resultierende Typ der Operation bleibt SUPER. Für alle Operatoren, außer für den binären Operator +, müssen die Eingabeoperanden Zahlen sein. Andernfalls gibt Amazon Redshift null zurück. Die Unterscheidung zwischen Dezimalzahlen und Gleitkommawerten wird beibehalten, wenn Amazon Redshift diese Operatoren ausführt und sich der dynamische Typ nicht ändert. Die Dezimalskalierung ändert sich jedoch, wenn Sie Multiplikationen und Teilungen verwenden. Arithmetische Überläufe verursachen immer noch Abfragefehler, sie werden nicht in null geändert. Der binäre Operator + führt eine Addition aus, wenn die Eingaben Zahlen sind, oder eine Verkettung, wenn die Eingaben Zeichenfolgen sind. Wenn ein Operand eine Zeichenfolge ist und der andere Operand eine Zahl ist, ist das Ergebnis null Die unären Präfix-Operatoren + und - geben null zurück, wenn der SUPER-Wert keine Zahl ist, wie im folgenden Beispiel gezeigt:
SELECT (c_orders[0]. o_orderkey + 0.5) * c_orders[0]. o_orderkey / 10 AS math FROM customer_orders_lineitem; math ---------------------------- 1757958232200.1500 (1 row)
Durch die dynamische Typisierung können Dezimalwerte in SUPER unterschiedliche Maßstäbe haben. Amazon Redshift behandelt Dezimalwerte, als ob es sich um unterschiedliche statische Typen handelt und erlaubt alle mathematischen Operationen. Amazon Redshift berechnet die resultierende Skalierung dynamisch basierend auf den Skalierungen der Operanden. Wenn einer der Operanden eine Gleitkommazahl ist, stuft Amazon Redshift den anderen Operanden zu einer Gleitkommazahl herauf und generiert das Ergebnis als Gleitkommazahl.
Arithmetische Funktionen
Amazon Redshift unterstützt die folgenden arithmetischen Funktionen für SUPER-Spalten. Sie geben null zurück, wenn die Eingabe keine Zahl ist:
FLOOR. Weitere Informationen finden Sie unter Die Funktion FLOOR.
CEIL und CEILING. Weitere Informationen finden Sie unter Die Funktion CEILING (oder CEIL).
ROUND. Weitere Informationen finden Sie unter Die Funktion ROUND.
TRUNC. Weitere Informationen finden Sie unter Die Funktion TRUNC.
ABS. Weitere Informationen finden Sie unter Funktion ABS.
Im folgenden Beispiel werden arithmetische Funktionen zum Abfragen von Daten verwendet:
SELECT x, FLOOR(x), CEIL(x), ROUND(x) FROM ( SELECT (c_orders[0]. o_orderkey + 0.5) * c_orders[0].o_orderkey / 10 AS x FROM customer_orders_lineitem ); x | floor | ceil | round --------------------+---------------+---------------+--------------- 1389636795898.0500 | 1389636795898 | 1389636795899 | 1389636795898
Die ABS-Funktion behält die Skala der Eingabe-Dezimalzahl während FLOOR, CEIL. ROUND eliminiert die Skala der Eingabe-Dezimalzahl.
Array-Funktionen
Amazon Redshift unterstützt die folgenden Funktionen für die Array-Zusammensetzung und die folgenden Hilfsprogramme:
ARRAY. Weitere Informationen finden Sie unter array-Funktion.
ARRAY_CONCAT. Weitere Informationen finden Sie unter array_concat-Funktion.
ARRAY_FLATTEN. Weitere Informationen finden Sie unter array_flatten-Funktion.
GET_ARRAY_LENGTH. Weitere Informationen finden Sie unter get_array_length-Funktion.
AUF_IN_ARRAY AUFTEILEN. Weitere Informationen finden Sie unter split_to_array-Funktion.
SUBARRAY. Weitere Informationen finden Sie unter subarray-Funktion.
Sie können SUPER-Arrays aus Werten in Amazon-Redshift-Datentypen mithilfe der ARRAY-Funktion erstellen, einschließlich anderer SUPER-Werte. Im folgenden Beispiel wird die variadische Funktion ARRAY verwendet:
SELECT ARRAY(1, c.c_custkey, NULL, c.c_name, 'abc') FROM customer_orders_lineitem c; array ------------------------------------------------------- [1,8401,null,""Customer#000008401"",""abc""] [1,9452,null,""Customer#000009452"",""abc""] [1,9451,null,""Customer#000009451"",""abc""] [1,8251,null,""Customer#000008251"",""abc""] [1,5851,null,""Customer#000005851"",""abc""] (5 rows)
Im folgenden Beispiel wird die Array-Verkettung mit der Funktion ARRAY_CONCAT verwendet:
SELECT ARRAY_CONCAT(JSON_PARSE('[10001,10002]'),JSON_PARSE('[10003,10004]')); array_concat ------------------------------------ [10001,10002,10003,10004] (1 row)
Das folgende Beispiel verwendet Array-Manipulation mit der SUBARRAY-Funktion, die eine Teilmenge des Eingabe-Arrays zurückgibt.
SELECT SUBARRAY(ARRAY('a', 'b', 'c', 'd', 'e', 'f'), 2, 3); subarray --------------- ["c","d","e"] (1 row))
Im folgenden Beispiel werden mehrere Ebenen von Arrays mit ARRAY_FLATTEN zu einem einzelnen Array zusammengeführt:
SELECT x, ARRAY_FLATTEN(x) FROM (SELECT ARRAY(1, ARRAY(2, ARRAY(3, ARRAY()))) AS x); x | array_flatten ----------------+--------------- [1,[2,[3,[]]]] | [1,2,3] (1 row)
Array-Funktionen ARRAY_CONCAT und ARRAY_FLATTEN verwenden dynamische Typisierungsregeln. Sie geben eine Null anstelle eines Fehlers zurück, wenn die Eingabe kein Array ist. Die Funktion GET_ARRAY_LENGTH gibt die Länge eines an ein bestimmtes Objekt übergebenen SUPER-Arrays oder eines Array-Pfads an.
SELECT c_name FROM customer_orders_lineitem WHERE GET_ARRAY_LENGTH(c_orders) = ( SELECT MAX(GET_ARRAY_LENGTH(c_orders)) FROM customer_orders_lineitem );
Im folgenden Beispiel wird eine Zeichenfolge mithilfe von SPLIT_TO_ARRAY in ein Array von Zeichenfolgen aufgeteilt. Die Funktion verwendet ein Trennzeichen als optionalen Parameter. Wenn kein Trennzeichen fehlt, ist der Standardwert ein Komma.
SELECT SPLIT_TO_ARRAY('12|345|6789', '|'); split_to_array --------------------- ["12","345","6789"] (1 row)
Informationsfunktionen
SUPER-Datenspalten unterstützen Inspektionsfunktionen, die den dynamischen Typ und andere Typinformationen über den SUPER Wert zurückgeben. Das gängigste Beispiel ist die Skalarfunktion JSON_TYPEOF, die einen VARCHAR mit den Werten „boolean“, „number“, „string“, „object“, „array“ oder „null“ zurückgibt, abhängig vom dynamischen Typ des SUPER-Wertes. Amazon Redshift unterstützt die folgenden booleschen Funktionen für SUPER-Datenspalten:
Weitere Hinweise zu Informationsfunktionen vom Typ SUPER finden Sie unterFunktionen für SUPER-Typinformationen.