Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il post del blog
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Creazione di colonne scalari Amazon Redshift da dati suddivisi
I dati senza schema archiviati in SUPER possono influire sulle prestazioni di Amazon Redshift. Ad esempio, filtrare i predicati o unire le condizioni in quanto le scansioni limitate all'intervallo non possono utilizzare in modo efficace le mappe di zona. Gli utenti e gli strumenti di BI possono utilizzare le viste materializzate come presentazione convenzionale dei dati e aumentare le prestazioni delle query analitiche.
La query seguente esegue la scansione della vista materializzata super_mv e filtra su 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';
Ispezionare stl_scan per verificare che Amazon Redshift non sia in grado di utilizzare in modo efficace le mappe delle zone nella scansione con limiti di intervallo su o_orderstatus.
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)
Nell'esempio seguente viene eseguito l'adattamento della vista materializzata super_mv per creare colonne scalari fuori dai dati suddivisi. In questo caso, Amazon Redshift avvia o_orderstatus da SUPER a VARCHAR. Inoltre, specificare o_orderstatus come chiave di ordinamento per super_mv.
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 );
Dopo aver rieseguito la query, verificare che Amazon Redshift possa ora utilizzare le mappe delle zone.
SELECT v.o_totalprice FROM super_mv v WHERE v.o_orderstatus = 'F';
È possibile verificare che la scansione con limiti di intervallo ora utilizzi mappe di zona come indicato di seguito.
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)