Amazon Redshift dejará de admitir la creación de UDF de Python después del 30 de junio de 2026. Empezaremos a aplicarlo por fases. Para obtener más información sobre los detalles del fin de vida de Python y las opciones de migración, consulte la entrada del blog
Vistas materializadas almacenadas como tablas de Apache Iceberg
Puede crear vistas materializadas que almacenen los datos como tablas de Apache Iceberg en buckets de Amazon S3 o Tablas de Amazon S3. A diferencia de las vistas materializadas estándar de Amazon Redshift, que almacenan datos internamente en Redshift Managed Storage (RMS), las vistas materializadas de Iceberg se almacenan como tablas de Iceberg estándar y son accesibles desde cualquier motor de análisis que admita el formato Iceberg, incluidos Apache Spark, Amazon Athena y Trino.
Las vistas materializadas de Iceberg combinan las capacidades de optimización de consultas y actualización incremental de Amazon Redshift con el formato de tabla abierta de Iceberg. Puede crear, actualizar y eliminar vistas materializadas de Iceberg utilizando los mismos comandos SQL que las vistas materializadas estándar, con la adición de la cláusula USING ICEBERG durante la creación.
Las vistas materializadas de Iceberg se admiten en Redshift sin servidor y en clústeres aprovisionados con tipos de instancias RG. Los tipos de instancia RA3 y DC2 no son compatibles.
Para obtener información sobre los comandos SQL utilizados para crear y administrar vistas materializadas de Iceberg, consulte los siguientes temas de comando:
Cómo funcionan las vistas materializadas de Iceberg
Al crear una vista materializada de Iceberg, Amazon Redshift hace lo siguiente:
Ejecuta la consulta de definición y escribe los resultados como archivos de datos de Parquet en Amazon S3.
Registra la tabla en AWS Glue Data Catalog con los metadatos de Iceberg, lo que permite que otros motores la puedan detectar.
Almacena la definición de vista materializada y el estado de actualización en AWS Glue para una administración independiente del clúster.
Al actualizar una vista materializada de Iceberg, Amazon Redshift compara las instantáneas de Iceberg de la tabla de origen actual con las instantáneas grabadas en la última actualización. Si se detectan cambios, Amazon Redshift calcula y aplica solo los datos modificados (actualización incremental) o realiza un nuevo cálculo completo.
Requisitos de tabla de origen
Las tablas de origen para las vistas materializadas de Iceberg deben cumplir los siguientes requisitos:
Deben estar en formato Apache Iceberg. Las tablas que no son de Iceberg (tablas nativas de Amazon Redshift, tablas externas de Hive o Parquet) no se admiten como tablas de origen.
Deben estar en la misma Región de AWS y cuenta que la vista materializada.
Se puede hacer referencia con una notación de tres partes (
awsdatacatalog.), una notación de Tablas de Amazon S3 (database.table") o una notación de dos partes a través de un esquema externo (bucket@s3tablescatalog".database.table).external_schema.table
Interoperabilidad entre motores
Las vistas materializadas de Iceberg creadas por Amazon Redshift aparecen como tablas de Iceberg estándar en AWS Glue Data Catalog. Otros motores de análisis pueden leerlas mediante patrones de acceso a las tablas de Iceberg estándar sin necesidad de realizar ninguna configuración adicional.
Se aplican las siguientes restricciones:
Solo Amazon Redshift puede actualizar o eliminar las vistas materializadas que creó Amazon Redshift.
Las vistas materializadas de Iceberg creadas por otros motores (como Apache Spark) las puede consultar Amazon Redshift como tablas de solo lectura pero no las puede actualizar ni eliminar.
Actualización incremental
Amazon Redshift realiza una actualización incremental cuando la definición de vista materializada lo admite. La actualización incremental lee solo los datos que cambiaron en las tablas de origen desde la última actualización y aplica esos cambios a la vista materializada.
La actualización es compatible con las vistas materializadas que usan:
SELECT ... FROM ... WHERE ... GROUP BYcon las funciones de agregación COUNT y SUMCombinaciones internas entre las tablas de origen de Iceberg
Amazon Redshift vuelve automáticamente a la actualización completa cuando:
La vista materializada utiliza construcciones de SQL que no son compatibles con la actualización incremental. Para obtener más información, consulte la sección Limitaciones siguiente y Actualización de una vista materializada.
Las instantáneas de la tabla de origen de la última actualización han caducado.
Los datos de la vista materializada se modificaron fuera de una operación de actualización de Amazon Redshift.
Actualización simultánea
Varios clústeres o grupos de trabajo de Amazon Redshift pueden intentar actualizar la misma vista materializada de Iceberg de forma simultánea. Amazon Redshift utiliza el control de simultaneidad optimista (OCC) a través del mecanismo de actualización condicional de AWS Glue Data Catalog para garantizar que solo se realice correctamente una actualización. Si se detecta una actualización simultánea, Amazon Redshift comprueba si la vista materializada sigue obsoleta. Si otro clúster ya ha completado la actualización, la operación se interrumpe.
Compactación y mantenimiento de tabla
Para las vistas materializadas de Iceberg almacenadas en buckets de Tablas de Amazon S3, Tablas de Amazon S3 administra automáticamente la compactación y la optimización de los archivos de datos. El usuario no tiene que hacer nada más.
En el caso de las vistas materializadas almacenadas en buckets de Amazon S3 de uso general (especificados mediante el parámetro LOCATION), Amazon Redshift no realiza la compactación. Con el tiempo, la actualización incremental produce muchos archivos de datos pequeños que pueden reducir el rendimiento de lectura. Para mantener el rendimiento de lectura, utilice las siguientes prácticas recomendadas:
Ejecute la compactación con regularidad con una herramienta externa, como el procedimiento
rewrite_data_filesde Apache Spark.Configure la caducidad de las instantáneas de Iceberg para limitar el crecimiento del almacenamiento a partir de las instantáneas históricas.
En el caso de las tablas de origen, configure la retención de instantáneas para que supere el intervalo de actualización esperado. Cuando las instantáneas de la tabla de origen caducan antes de la siguiente actualización, Amazon Redshift ya no puede calcular un delta incremental y vuelve a la actualización completa.
Consideraciones de seguridad
Permisos
Los siguientes permisos son necesarios:
CREATE: la persona que llama necesita el permiso CREATE TABLE en la base de datos AWS Glue de destino. El rol de IAM asociado al esquema externo (el rol de definición de MV) debe tener el permiso SELECT en todas las tablas de origen, concedido a través de las políticas de recursos de AWS Lake Formation o AWS Glue.
REFRESH: la persona que llama debe tener permiso ALTER en la vista materializada. El rol de definición de MV (registrado en el momento de la creación) debe tener el permiso SELECT en todas las tablas de origen.
DROP: la persona que llama debe tener permiso DROP en la vista materializada.
QUERY: la persona que llama necesita el permiso SELECT en la vista materializada, concedido mediante políticas de recursos AWS Lake Formation o AWS Glue.
Para obtener información sobre la creación de roles de IAM para Amazon Redshift y la concesión de permisos AWS Lake Formation, consulte Introducción a Amazon Redshift Spectrum. Para comprobar que el rol de IAM tiene los permisos necesarios en las tablas de origen, utilice la consola de AWS Lake Formation o la API de GetEffectivePermissionsForPath. Para comprobar que la base de datos de AWS Glue de destino existe y que el rol tiene acceso, utilice la API GetDatabase.
En el siguiente ejemplo, se comprueba que el rol de IAM tiene el permiso SELECT en una tabla de origen mediante AWS Lake Formation:
aws lakeformation list-permissions \ --principal DataLakePrincipalIdentifier=arn:aws:iam::123456789012:role/myspectrum_role \ --resource '{"Table":{"DatabaseName":"mydb","Name":"orders"}}'
En el ejemplo siguiente, se verifica que la base de datos de AWS Glue de destino existe y es accesible:
aws glue get-database --name mydb
Visibilidad del historial de instantáneas
Las vistas materializadas de Iceberg almacenan datos como tablas de Iceberg estándar con un historial completo de instantáneas. Un lector con acceso a los archivos de Iceberg subyacentes puede comparar instantáneas sucesivas para observar qué filas se agregaron o eliminaron entre las actualizaciones.
Para las vistas materializadas agregadas (aquellas con funciones GROUP BY y agregadas), el delta visible se limita a los cambios en los valores agregados, no a las filas individuales de la tabla de origen. Para las vistas materializadas no agregadas, el delta corresponde a las filas específicas que han cambiado en el resultado de la vista materializada.
Este comportamiento es inherente al formato de tabla de Iceberg. Cualquier tabla de Iceberg que se someta a escrituras incrementales expone la misma propiedad.
Para mitigar este comportamiento:
Utilice los permisos de AWS Lake Formation o las políticas de bucket de Amazon S3 para controlar quién puede acceder a los archivos de datos de Iceberg subyacentes de la vista materializada.
Para las vistas materializadas que contienen información confidencial y en las que el historial de cambios no debería poder observarse, defina la vista materializada con construcciones de SQL que obliguen a una actualización completa (como DISTINCT). La actualización completa reemplaza todos los datos de cada instantánea, por lo que no es posible determinar qué filas específicas han cambiado.
Configure la caducidad de las instantáneas de Iceberg para limitar la ventana de cambios observables. Con buckets de Tablas de Amazon S3, el mantenimiento administrado gestiona automáticamente el ciclo de vida de las instantáneas.
Utilice buckets de Tablas de Amazon S3, que proporcionan un control de acceso integrado por tabla.
Supervisión
Historial de actualizaciones
Las operaciones de actualización realizadas por el clúster local se registran en SVL_MV_REFRESH_STATUS. Consulte esta vista para comprobar el tiempo de actualización, el estado y si la actualización fue incremental o completa.
SELECT mv_name, starttime, endtime, status FROM svl_mv_refresh_status WHERE mv_name = 'daily_revenue' ORDER BY starttime DESC LIMIT 10;
Tenga en cuenta que esta vista del sistema solo registra las actualizaciones realizadas por el clúster local. Si varios clústeres actualizan la misma vista materializada de Iceberg, las tablas del sistema de cada clúster muestran solo su propio historial de actualizaciones.
Detección de vistas materializadas de Iceberg
Utilice el comando SHOW TABLES para buscar vistas materializadas de Iceberg. Las vistas materializadas de Iceberg aparecen con table_type = 'EXTERNAL TABLE' y table_subtype = 'ICEBERG MATERIALIZED VIEW'. SHOW TABLES funciona en todas las rutas de catálogo (esquemas externos, awsdatacatalog y Tablas de Amazon S3).
SHOW TABLES FROM SCHEMA awsdatacatalog.mydb LIKE '%';
También puede utilizar SVV_EXTERNAL_TABLES para buscar vistas materializadas de Iceberg en los esquemas externos, donde aparecen con tabletype = 'EXTERNAL TABLE':
SELECT schemaname, tablename, location FROM svv_external_tables WHERE tabletype = 'EXTERNAL TABLE';
nota
SVV_EXTERNAL_TABLES enumera las vistas materializadas de Iceberg solo para esquemas externos. SVV_EXTERNAL_TABLES no enumera las vistas materializadas de Iceberg a las que se accede a través de awsdatacatalog o los catálogos de Tablas de Amazon S3; utilice SHOW TABLES para detectarlas.
STV_MV_INFO no incluye las vistas materializadas de Iceberg.
Limitaciones
No puede definir una vista materializada de Iceberg que haga referencia o incluya cualquiera de los siguientes:
Las tablas de origen que no son de Iceberg (tablas nativas de Amazon Redshift, tablas externas de Hive, Parquet, Delta Lake o Hudi)
Tablas de origen con la versión 3 del formato de Iceberg
Funciones definidas por el usuario (UDF) o agregados definidos por el usuario
Funciones mutables (GETDATE, RANDOM, CURRENT_TIMESTAMP y funciones similares)
Las cláusulas ORDER BY, LIMIT u OFFSET
Identificadores en mayúsculas en los nombres de tablas, columnas o alias
Tablas de origen de una Región de AWS o cuenta diferente
Tablas filtradas por AWS Lake Formation (control de acceso detallado)
Las siguientes construcciones de SQL están permitidas en la definición de la vista materializada, pero obligan a una actualización completa en lugar de a una actualización incremental:
DISTINCT
Combinaciones externas completa (LEFT, RIGHT, FULL)
Funciones de ventana
subconsultas
operaciones set
GROUPING SETS, ROLLUP, CUBE
Agregación de funciones distintas de COUNT y SUM
COUNT(DISTINCT), SUM(DISTINCT)
Limitaciones adicionales:
La reescritura automática de consultas para utilizar vistas materializadas no es compatible con las vistas materializadas de Iceberg.
Las vistas materializadas automatizadas no son compatibles con las vistas materializadas de Iceberg.
Las vistas materializadas de Iceberg no admiten la actualización automática. Debe actualizarlas manualmente mediante REFRESH MATERIALIZED VIEW.
Las vistas materializadas de Iceberg se admiten solo en Redshift sin servidor y en clústeres aprovisionados con tipos de instancias RG. Los tipos de instancia RA3 y DC2 no son compatibles.
El control de acceso detallado (FGAC) no es compatible en las vistas materializadas de Iceberg.
La actualización CASCADE no es compatible con las vistas materializadas de Iceberg.
Las vistas materializadas de iceberg no se pueden crear ni actualizar cuando
enable_case_sensitive_identifierestá configurado entrue.