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
REFRESH MATERIALIZED VIEW
Actualiza una vista materializada.
Cuando crea una vista materializada, su contenido refleja el estado de la tabla o tablas de bases de datos subyacentes en ese momento. Los datos en la vista materializada permanecen sin cambios, incluso cuando las aplicaciones realizan cambios en los datos de las tablas subyacentes.
Para actualizar los datos en una vista materializada, puede utilizar la instrucción REFRESH MATERIALIZED
VIEW
en cualquier momento. Cuando se utiliza esta instrucción, Amazon Redshift identifica los cambios que han tenido lugar en la tabla o las tablas base, para luego aplicar esos cambios en la vista materializada.
Para obtener más información acerca de las vistas materializadas, consulte Vistas materializadas en Amazon Redshift.
Sintaxis
REFRESH MATERIALIZED VIEW mv_name [ RESTRICT | CASCADE ]
Parámetros
- mv_name
-
El nombre de la vista materializada que desea actualizar.
- RESTRICT
-
Palabra clave opcional. Actualiza la vista materializada especificada, pero no las vistas materializadas dependientes. El valor predeterminado si no se especifica ni RESTRICT ni CASCADE.
- CASCADE
-
Palabra clave opcional. Actualiza la vista materializada especificada y todas las vistas materializadas dependientes.
Notas de uso
Solo el propietario de una vista materializada puede realizar una operación REFRESH MATERIALIZED
VIEW
en esa vista. Además, el propietario debe tener el privilegio SELECT en las tablas base subyacentes para ejecutar correctamente REFRESH
MATERIALIZED VIEW
.
El comando REFRESH MATERIALIZED VIEW
se ejecuta como una transacción propia. Se sigue la semántica de las transacciones de Amazon Redshift para determinar qué datos de las tablas base son visibles para el comando REFRESH
o cuándo los cambios realizados por el comando REFRESH
están visibles para otras transacciones que se ejecutan en Amazon Redshift.
-
En las vistas materializadas incrementales,
REFRESH MATERIALIZED VIEW
utiliza solo las filas de la tabla base que ya están confirmadas. Por lo tanto, si la operación de actualización se ejecuta después de una instrucción de lenguaje de manipulación de datos (DML) en la misma transacción, los cambios de esa instrucción DML no son visibles para actualizar. -
Para la actualización completa de una vista materializada,
REFRESH MATERIALIZED VIEW
ve todas las filas de la tabla base visibles para la transacción de actualización, de acuerdo con la semántica de transacción habitual de Amazon Redshift. -
Según el tipo de argumento de entrada, Amazon Redshift sigue admitiendo la actualización incremental para vistas materializadas de las siguientes funciones con tipos de argumentos de entrada específicos: DATE (marca temporal), DATE_PART (fecha, hora, intervalo, tiempo-tz), DATE_TRUNC (marca temporal, intervalo).
-
La actualización incremental es compatible con una vista materializada donde la tabla básica se encuentra en un recurso compartido de datos.
Algunas operaciones de Amazon Redshift interactúan con vistas materializadas. Algunas de estas operaciones pueden forzar que una operación REFRESH MATERIALIZED VIEW
vuelva a calcular completamente la vista materializada aunque la consulta que define la vista materializada solo utilice las características SQL aptas para la actualización incremental. Por ejemplo:
-
Las operaciones de vacío en segundo plano pueden bloquearse si las vistas materializadas no se actualizan. Después de un periodo de umbral definido internamente, la operación de vacío puede funcionar. Cuando ocurre esta operación de vacío, cualquier vista materializada dependiente se marca para un nuevo cálculo en la siguiente actualización (incluso si es incremental). Para obtener información acerca de VACUUM, consulte VACUUM. Para obtener más información sobre eventos y cambios de estado, consulte STL_MV_STATE.
-
Algunas operaciones iniciadas por un usuario en tablas base fuerzan a la vista materializada a que se vuelva a calcular completamente la próxima vez que se ejecute una operación REFRESH. Ejemplos de tales operaciones son una operación VACUUM invocada manualmente, un cambio de tamaño clásico, una operación ALTER DISTKEY, una operación ALTER SORTKEY y una operación truncada. En algunos casos, las operaciones automáticas también pueden hacer que una vista materializada se vuelva a calcular por completo la próxima vez que se ejecute una operación REFRESH. Por ejemplo, una operación de autovacuum puede provocar un recálculo completo. Para obtener más información sobre eventos y cambios de estado, consulte STL_MV_STATE.
Actualización en cascada
La opción CASCADE actualiza la vista materializada especificada y todas las vistas materializadas dependientes, en orden de dependencia: las vistas materializadas base se actualizan con REFRESH antes que las vistas materializadas superiores (orden topológico). Esto le permite actualizar un conjunto anidado de vistas materializadas en un solo comando.
La opción RESTRICT (predeterminada si no se especifica ni RESTRICT ni CASCADE) actualiza solo la vista materializada especificada.
Cuando se utiliza la opción CASCADE, se aplican las siguientes reglas:
-
Solo el propietario de la vista materializada o un superusuario pueden ejecutar el comando
REFRESH MATERIALIZED VIEW ... CASCADE
. -
Si alguna de las vistas materializadas en la cascada no se puede actualizar, toda la operación en cascada se detendrá.
La funcionalidad de actualización en cascada solo se admite en vistas materializadas anidadas en vistas materializadas locales y de streaming. Las vistas materializadas con otros tipos de origen, como Spectrum o Uso compartido de datos, no se admiten en modo en cascada. CASCADE ejecuta la actualización en una sola transacción para todas las vistas materializadas anidadas.
Actualización incremental para obtener vistas materializadas en un recurso compartido de datos
Amazon Redshift admite la actualización automática e incremental de las vistas materializadas en un recurso compartido de datos de consumidores cuando se comparten las tablas base. La actualización incremental es una operación en la que Amazon Redshift identifica los cambios en la tabla o tablas base que se produjeron después de la actualización anterior y actualiza solo los registros correspondientes de la vista materializada. Para obtener más información sobre este comportamiento, consulte CREATE MATERIALIZED VIEW.
Limitaciones para la actualización incremental
En este momento, Amazon Redshift no es compatible con la actualización progresiva para vistas materializadas que se definen con una consulta a través de cualquiera de los siguientes elementos SQL:
-
OUTER JOIN (RIGHT, LEFT o FULL).
-
Establecer operaciones: UNION, INTERSECT, EXCEPT, MINUS.
-
UNION ALL cuando se produce en una subconsulta y una función de agrupación o una cláusula GROUP BY está presente en la consulta, o la vista materializada contiene una sortkey.
-
Las funciones de agrupación MEDIAN, PERCENTILE_CONT, LISTAGG, STDDEV_SAMP, STDDEV_POP, APPROXIMATE COUNT, APPROXIMATE PERCENTILE y las funciones de agrupación de cada bit.
nota
Se admiten las funciones de agregación COUNT, SUM, MIN, MAX y AVG.
-
Funciones de agregación DISTINCT, como DISTINCT COUNT, DISTINCT SUM, etc.
-
Funciones de ventana.
-
Una consulta que utiliza tablas temporales para la optimización de consultas, como la optimización de subexpresiones comunes.
-
subconsultas
-
Tablas externas que hacen referencia a los siguientes formatos de la consulta que definen la vista materializada.
-
Delta Lake
-
Hudi
La actualización incremental es compatible con las vistas materializadas definidas con formatos distintos de los enumerados anteriormente. Para obtener más información, consulte Vistas materializadas de tablas de lagos de datos externos en Amazon Redshift Spectrum.
-
-
Funciones mutables, como funciones de fecha y hora, funciones definidas por el usuario RANDOM y no STABLE.
-
Para conocer las limitaciones de la actualización incremental de las integraciones sin ETL, consulte Consideraciones al usar integraciones sin ETL con Amazon Redshift.
-
Acceso a tablas desde más de una base de datos.
Para obtener más información sobre las limitaciones de la vista materializada, incluido el efecto de las operaciones en segundo plano, como VACUUM, en las operaciones de actualización de la vista materializada, consulte Notas de uso.
Ejemplos
El siguiente ejemplo actualiza la vista materializada de tickets_mv
.
REFRESH MATERIALIZED VIEW tickets_mv;
El siguiente actualiza la vista materializada de products_mv
y todas las vistas materializadas dependientes:
REFRESH MATERIALIZED VIEW products_mv CASCADE;