Erstellen von skalaren Amazon-Redshift-Spalten aus aufgeteilten Daten - 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 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.

Erstellen von skalaren Amazon-Redshift-Spalten aus aufgeteilten Daten

Schemalose Daten, die in SUPER gespeichert sind, können die Leistung von Amazon Redshift beeinflussen. Beispiel: Filterprädikate oder Join-Bedingungen als Scans mit eingeschränkter Reichweite können Zonenzuordnungen nicht effektiv verwenden. Benutzer und BI-Tools können materialisierte Ansichten als konventionelle Darstellung der Daten verwenden und die Leistung analytischer Abfragen steigern.

Die folgende Abfrage scannt die materialisierte Ansicht super_mv und filtert nach o_orderstatus.

SELECT c.c_name, v.o_totalprice FROM customer_orders_lineitem c JOIN super_mv v ON c.c_custkey = v.c_custkey WHERE v.o_orderstatus = 'F';

Untersuchen Sie stl_scan, um zu überprüfen, ob Amazon Redshift Zonenzuordnungen beim Scannen von o_orderstatus mit eingeschränkter Reichweite nicht effektiv verwenden kann.

SELECT slice, is_rrscan FROM stl_scan WHERE query = pg_last_query_id() AND perm_table_name LIKE '%super_mv%'; slice | is_rrscan -------+----------- 0 | f 1 | f 5 | f 4 | f 2 | f 3 | f (6 rows)

Im folgenden Beispiel wird die materialisierte Ansicht super_mv angepasst, um skalare Spalten aus den aufgeteilten Daten zu erstellen. In diesem Fall wandelt Amazon Redshift o_orderstatus von SUPER zu VARCHAR um. Geben Sie außerdem o_orderstatus als Sortierschlüssel für super_mv aus.

CREATE MATERIALIZED VIEW super_mv distkey(c_custkey) sortkey(c_custkey, o_orderstatus) AS ( SELECT c_custkey, o.o_orderstatus::VARCHAR AS o_orderstatus, o.o_totalprice, o_idx FROM customer_orders_lineitem c, c.c_orders o AT o_idx );

Stellen Sie nach dem erneuten Ausführen der Abfrage sicher, dass Amazon Redshift jetzt Zonenzuordnungen verwenden kann.

SELECT v.o_totalprice FROM super_mv v WHERE v.o_orderstatus = 'F';

Sie können überprüfen, ob der Scan mit eingeschränkter Reichweite jetzt Zonenzuordnungen wie folgt verwendet.

SELECT slice, is_rrscan FROM stl_scan WHERE query = pg_last_query_id() AND perm_table_name LIKE '%super_mv%'; slice | is_rrscan -------+----------- 0 | t 1 | t 2 | t 3 | t 4 | t 5 | t (6 rows)