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.
Beispiele für UNNEST
UNNEST ist ein Parameter in der FROM-Klausel, der verschachtelte Daten zu Spalten erweitert, die die nicht verschachtelten Elemente der Daten enthalten. Informationen zum Entschachteln von Daten finden Sie unter Abfragen halbstrukturierter Daten.
Mit der folgenden Anweisung wird die orders Tabelle, die eine products Spalte mit Produktarrays enthält, erstellt und aufgefüllt. IDs Für die Beispiele in diesem Abschnitt werden die Beispieldaten in dieser Tabelle verwendet.
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 Entschachteln von Abfragen mit den Beispieldaten unter Verwendung der PartiQL-Syntax.
Entschachteln eines Arrays ohne OFFSET-Spalte
Die folgende Abfrage entschachtelt die SUPER-Arrays in der Produktspalte, wobei jede Zeile ein Element aus der Bestellung order_id darstellt.
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)
Die folgende Abfrage findet in jeder Bestellung das teuerste Produkt.
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)
Entschachteln eines Arrays mit einer impliziten OFFSET-Spalte
Die folgende Abfrage verwendet den Parameter UNNEST ... WITH OFFSET, um die nullbasierte Position jedes Produkts innerhalb des Bestellungs-Arrays 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 mit offset_col.
Entschachteln eines Arrays mit einer expliziten OFFSET-Spalte
Die folgende Abfrage verwendet den Parameter UNNEST ... WITH OFFSET, um die Produkte innerhalb ihrer Bestellungs-Arrays 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)