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.
UNNEST-Beispiele
UNNEST ist ein Parameter in der FROM-Klausel, der verschachtelte Daten in Spalten erweitert, die die nicht verschachtelten Elemente der Daten enthalten. Informationen zum Aufheben von Verschachtelungen von Daten finden Sie unter. Semistrukturierte Daten abfragen
Mit der folgenden Anweisung wird die orders
Tabelle erstellt und aufgefüllt. Sie enthält eine products
Spalte mit Produktarrays. IDs Die Beispiele in diesem Abschnitt verwenden die Beispieldaten in dieser Tabelle.
CREATE TABLE orders ( order_id INT, products SUPER ); -- Populate table INSERT INTO orders VALUES (1001, JSON_PARSE('[ { "product_id": "P456", "name": "Monitor", "price": 299.99, "quantity": 1, "specs": { "size": "27 inch", "resolution": "4K" } } ] ')), (1002, JSON_PARSE(' [ { "product_id": "P567", "name": "USB Cable", "price": 9.99, "quantity": 3 }, { "product_id": "P678", "name": "Headphones", "price": 159.99, "quantity": 1, "specs": { "type": "Wireless", "battery_life": "20 hours" } } ] '));
Im Folgenden finden Sie einige Beispiele für das Aufheben von Verschachtelungen von Abfragen mit den Beispieldaten unter Verwendung der PartiQL-Syntax.
Aufheben der Verschachtelung eines Arrays ohne OFFSET-Spalte
Die folgende Abfrage entfernt die SUPER-Arrays in der Produktspalte, wobei jede Zeile einen Artikel aus der Bestellung darstellt. order_id
SELECT o.order_id, unnested_products.product FROM orders o, UNNEST(o.products) AS unnested_products(product);
order_id | product ----------+----------------------------------------------------------------------------------------------------------------------------- 1001 | {"product_id":"P456","name":"Monitor","price":299.99,"quantity":1,"specs":{"size":"27 inch","resolution":"4K"}} 1002 | {"product_id":"P567","name":"USB Cable","price":9.99,"quantity":3} 1002 | {"product_id":"P678","name":"Headphones","price":159.99,"quantity":1,"specs":{"type":"Wireless","battery_life":"20 hours"}} (3 rows)
Mit der folgenden Abfrage wird das teuerste Produkt in jeder Bestellung ermittelt.
SELECT o.order_id, MAX(unnested_products.product) FROM orders o, UNNEST(o.products) AS unnested_products(product);
order_id | product ----------+----------------------------------------------------------------------------------------------------------------------------- 1001 | {"product_id":"P456","name":"Monitor","price":299.99,"quantity":1,"specs":{"size":"27 inch","resolution":"4K"}} 1002 | {"product_id":"P678","name":"Headphones","price":159.99,"quantity":1,"specs":{"type":"Wireless","battery_life":"20 hours"}} (2 rows)
Aufheben der Verschachtelung eines Arrays mit einer impliziten OFFSET-Spalte
Die folgende Abfrage verwendet den UNNEST ... WITH OFFSET
Parameter, um die Nullposition jedes Produkts innerhalb seines Ordnungsarrays anzuzeigen.
SELECT o.order_id, up.product, up.offset_col FROM orders o, UNNEST(o.products) WITH OFFSET AS up(product);
order_id | product | offset_col ----------+-----------------------------------------------------------------------------------------------------------------------------+------------ 1001 | {"product_id":"P456","name":"Monitor","price":299.99,"quantity":1,"specs":{"size":"27 inch","resolution":"4K"}} | 0 1002 | {"product_id":"P567","name":"USB Cable","price":9.99,"quantity":3} | 0 1002 | {"product_id":"P678","name":"Headphones","price":159.99,"quantity":1,"specs":{"type":"Wireless","battery_life":"20 hours"}} | 1 (3 rows)
Da die Anweisung keinen Alias für die Offset-Spalte angibt, benennt Amazon Redshift sie standardmäßig. offset_col
Aufheben der Verschachtelung eines Arrays mit einer expliziten OFFSET-Spalte
Die folgende Abfrage verwendet den UNNEST ... WITH OFFSET
Parameter auch, um die Produkte innerhalb ihrer Bestellfelder anzuzeigen. Der Unterschied zwischen dieser Abfrage und der Abfrage im vorherigen Beispiel besteht darin, dass sie die Offset-Spalte explizit mit dem Alias idx
benennt.
SELECT o.order_id, up.product, up.idx FROM orders o, UNNEST(o.products) WITH OFFSET AS up(product, idx);
order_id | product | idx ----------+-----------------------------------------------------------------------------------------------------------------------------+----- 1001 | {"product_id":"P456","name":"Monitor","price":299.99,"quantity":1,"specs":{"size":"27 inch","resolution":"4K"}} | 0 1002 | {"product_id":"P567","name":"USB Cable","price":9.99,"quantity":3} | 0 1002 | {"product_id":"P678","name":"Headphones","price":159.99,"quantity":1,"specs":{"type":"Wireless","battery_life":"20 hours"}} | 1 (3 rows)