Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al igual que las vistas estándar, las vistas materializadas son los resultados de una consulta y se accede a ellas de la misma manera que lo haría con una tabla. A diferencia de las vistas estándar, que vuelven a calcular los resultados en cada consulta, las vistas materializadas almacenan en caché los resultados y los actualiza en un intervalo especificado. Dado que una vista materializada está precomputada, las consultas en ella se pueden ejecutar mucho más rápido que en vistas normales.
Una vista materializada es un objeto de canalización declarativo. Incluye una consulta que lo define, un flujo para actualizarlo y los resultados almacenados en caché para un acceso rápido. Una vista materializada:
- Realiza un seguimiento de los cambios en los datos de origen.
- Al activarse, procesa incrementalmente los datos modificados y aplica las transformaciones necesarias.
- Mantiene la tabla de salida, sincronizada con los datos de origen, en función de un intervalo de actualización especificado.
Las vistas materializadas son una buena opción para muchas transformaciones:
- El razonamiento se aplica sobre los resultados almacenados en caché en lugar de las filas. De hecho, simplemente escribe una consulta.
- Siempre son correctos. Todos los datos necesarios se procesan, incluso si llegan tarde o fuera de pedido.
- A menudo son incrementales. Databricks intentará elegir la estrategia adecuada que minimice el costo de actualizar una vista materializada.
Cómo funcionan las vistas materializadas
En el diagrama siguiente se muestra cómo funcionan las vistas materializadas.
Las vistas materializadas se definen y actualizan mediante una sola canalización. Puede definir explícitamente vistas materializadas en el código fuente de la canalización. Las tablas definidas por una canalización no se pueden cambiar ni actualizar mediante ninguna otra canalización.
Nota:
Al crear una vista materializada fuera de una canalización, mediante Databricks SQL, Azure Databricks crea una canalización que se usa para actualizar la vista. Para ver la canalización, seleccione Trabajos y canalizaciones en el panel de navegación izquierdo del área de trabajo. Puede agregar la columna Tipo de canalización a la vista. Las vistas materializadas definidas en una canalización tienen un tipo de ETL. Las vistas materializadas creadas en Databricks SQL tienen un tipo de MV/ST.
Databricks usa el catálogo de Unity para almacenar metadatos sobre la vista, incluida la consulta y vistas del sistema adicionales que se usan para las actualizaciones incrementales. Los datos almacenados en caché se materializan en el almacenamiento en la nube.
En el ejemplo siguiente se unen dos tablas y se mantiene el resultado actualizado mediante una vista materializada.
Pitón
from pyspark import pipelines as dp
@dp.materialized_view
def regional_sales():
partners_df = spark.read.table("partners")
sales_df = spark.read.table("sales")
return (
partners_df.join(sales_df, on="partner_id", how="inner")
)
SQL
CREATE OR REPLACE MATERIALIZED VIEW regional_sales
AS SELECT *
FROM partners
INNER JOIN sales ON
partners.partner_id = sales.partner_id;
Actualizaciones incrementales automáticas
Cuando se desencadena la canalización que define una vista materializada, la vista se mantiene actualizada automáticamente, a menudo incrementalmente. Databricks intenta procesar solo los datos que se deben procesar para mantener actualizada la vista materializada. Una vista materializada siempre muestra el resultado correcto, incluso si requiere volver a calcular completamente el resultado de la consulta desde cero, pero a menudo Databricks realiza solo actualizaciones incrementales en una vista materializada, lo que puede ser mucho menos costoso que una recomputación completa.
En el diagrama siguiente se muestra una vista materializada denominada sales_report, que es el resultado de unir dos tablas ascendentes llamadas clean_customers y clean_transactions, y agrupar por país. Un proceso ascendente inserta 200 filas en clean_customers en tres países (EE. UU., Países Bajos, Reino Unido) y actualiza 5.000 filas en clean_transactions correspondientes a estos nuevos clientes. La sales_report vista materializada se actualiza incrementalmente solo para los países que tienen nuevos clientes o transacciones correspondientes. En este ejemplo, vemos tres filas actualizadas en lugar del informe de ventas completo.
Para obtener más información sobre cómo funciona la actualización incremental en vistas materializadas, consulte Actualización incremental para vistas materializadas.
Limitaciones de las vistas materializadas
Las vistas materializadas tienen las siguientes limitaciones:
- Dado que las actualizaciones crean consultas correctas, algunos cambios en las entradas requerirán una recomputación completa de una vista materializada, lo que puede ser costoso.
- No están diseñados para casos de uso de baja latencia. La latencia de actualizar una vista materializada está en segundos o minutos, no milisegundos.
- No todos los cálculos se pueden calcular incrementalmente.