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 actualizan 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.
Para obtener instrucciones sobre cuándo usar vistas materializadas frente a tablas o vistas de streaming, consulte ¿Qué son las canalizaciones?.
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 en el momento de su actualización. Todos los datos necesarios se procesan, incluso si llegan tarde o fuera de pedido.
- A menudo son incrementales. Databricks intenta elegir la estrategia adecuada que minimiza 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.
Note
Al crear una vista materializada independiente, fuera de las canalizaciones declarativas de Spark de Lakeflow, 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 independientes tienen un tipo de MV/ST. Consulte Uso de vistas materializadas independientes.
Databricks usa el catálogo de Unity para almacenar metadatos sobre la vista, incluida la consulta y vistas del sistema adicionales para las actualizaciones incrementales. Databricks materializa los datos almacenados en caché en el almacenamiento en la nube.
Note
Databricks crea tablas internas para admitir la actualización incremental de la vista materializada. Estas tablas aparecen en system.information_schema.tables pero no están visibles en el Explorador de catálogos u otras superficies de interfaz de usuario del área de trabajo.
En el ejemplo siguiente se unen dos tablas y se mantiene el resultado actualizado mediante una vista materializada.
Python
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, se actualizan tres filas en lugar de todo el informe de ventas.
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 la vista materializada
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.
- Azure Databricks intenta detectar cuándo una UDF usada en una vista materializada cambia el comportamiento y realiza una actualización completa para aplicar la UDF actualizada. Sin embargo, las UDF que llaman a otras funciones o bibliotecas pueden cambiar el comportamiento de maneras que Azure Databricks no reconoce. Un ejemplo de esto es cuando se actualiza una biblioteca denominada . Cuando cambia el comportamiento de una UDF, es su responsabilidad realizar una actualización completa en cualquier vista materializada que la use.
- Las vistas materializadas no admiten
CLONE. No se puede usar una vista materializada como origen o destino de un clon profundo o superficial. Para obtener más información, consulta Limitaciones. - Para ver la canalización que respalda una vista materializada, un usuario no administrador necesita el privilegio
REFRESHen la vista materializada, además de permisos sobre la canalización. Consulte ¿Quién puede ver una canalización y su salida?.