Creación de columnas escalares de Amazon Redshift a partir de datos fragmentados - Amazon Redshift

Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del 1 de noviembre de 2025. Si desea utilizar las UDF de Python, créelas antes de esa fecha. Las UDF de Python existentes seguirán funcionando con normalidad. Para obtener más información, consulte la publicación del blog.

Creación de columnas escalares de Amazon Redshift a partir de datos fragmentados

Los datos sin esquemas almacenados en SUPER pueden afectar el rendimiento de Amazon Redshift. Por ejemplo, los predicados de filtro o las condiciones de unión como análisis de rango restringido no pueden utilizar eficazmente los mapas de zona. Los usuarios y las herramientas de BI pueden utilizar las vistas materializadas como la presentación convencional de los datos y aumentar el rendimiento de las consultas analíticas.

La siguiente consulta analiza la vista materializada super_mv y filtra en 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';

Inspeccione stl_scan para comprobar que Amazon Redshift no puede utilizar eficazmente los mapas de zona en el análisis de rango restringido a través de 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)

En el siguiente ejemplo, se adapta la vista materializada super_mv para crear columnas escalares a partir de los datos fragmentados. En este caso, Amazon Redshift convierte o_orderstatus de SUPER en VARCHAR. Además, especifique o_orderstatus como la clave de ordenación para 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 );

Después de volver a ejecutar la consulta, compruebe que Amazon Redshift ahora pueda utilizar mapas de zona.

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

Puede comprobar que el análisis de rango restringido ahora utiliza mapas de zona de la siguiente manera.

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)