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.
En este artículo se describe cómo crear y actualizar vistas materializadas en Databricks SQL para mejorar el rendimiento y reducir el costo de las cargas de trabajo de procesamiento y análisis de datos.
¿Qué son las vistas materializadas?
En Databricks SQL, las vistas materializadas son tablas administradas por el catálogo de Unity que almacenan físicamente los resultados de una consulta. A diferencia de las vistas estándar, que calculan los resultados a petición, las vistas materializadas almacenan en caché los resultados y los actualizan a medida que cambian las tablas de origen subyacentes, ya sea según una programación o automáticamente.
Las vistas materializadas son adecuadas para cargas de trabajo de procesamiento de datos, como el procesamiento de extracción, transformación y carga (ETL). Las vistas materializadas proporcionan una manera simple y declarativa de procesar datos de cumplimiento, correcciones, agregaciones o captura de datos modificados (CDC) generales. Las vistas materializadas también permiten transformaciones fáciles de usar mediante la limpieza, el enriquecimiento y la desnormalización de las tablas base. Al calcular previamente consultas costosas o usadas con frecuencia, las vistas materializadas reducen la latencia de consulta y el consumo de recursos. En muchos casos, pueden calcular incrementalmente los cambios de las tablas de origen, mejorando aún más la eficacia y la experiencia del usuario final.
A continuación se muestran casos de uso comunes para vistas materializadas:
- Mantener actualizado un panel de BI con una latencia mínima de consultas de usuario final.
- Reducción de la orquestación ETL compleja con lógica SQL simple.
- Creación de transformaciones complejas y superpuestas.
- Los casos de uso que exigen un rendimiento coherente con información actualizada.
Al crear una vista materializada en una instancia de Databricks SQL Warehouse, se crea una canalización sin servidor para procesar la creación y actualización de la vista materializada. Puede supervisar el estado de las operaciones de actualización en el Explorador de catálogos. Consulte Ver detalles de vista materializados con DESCRIBE EXTENDED
.
Requisitos
Las vistas materializadas creadas en Databricks SQL están respaldadas por una canalización sin servidor. El área de trabajo debe admitir canalizaciones sin servidor para usar esta funcionalidad.
Requisitos para crear o actualizar vistas materializadas:
Debe utilizar un almacén pro o SQL sin servidor habilitado para Unity Catalog.
Para actualizar una vista materializada, debe estar en el área de trabajo que la creó.
Para actualizar incrementalmente una vista materializada de tablas Delta, las tablas de origen deben tener habilitado el seguimiento de filas.
El propietario (el usuario que crea la vista materializada) debe tener los permisos siguientes:
- Privilegio
SELECT
en las tablas base a las que hace referencia la vista materializada. - Privilegios
USE CATALOG
yUSE SCHEMA
en el catálogo y el esquema que contiene las tablas de origen para la vista materializada. - Privilegios
USE CATALOG
yUSE SCHEMA
en el esquema y catálogo de destino de la vista materializada. - Privilegios
CREATE TABLE
yCREATE MATERIALIZED VIEW
en el esquema que contiene la vista materializada.
- Privilegio
Para actualizar una vista materializada, debe tener el privilegio
REFRESH
en la vista materializada.
- El área de trabajo debe estar en una región que admita almacenes de SQL sin servidor.
Requisitos para consultar vistas materializadas:
Debe ser el propietario de la vista materializada o tener
SELECT
en la vista materializada, junto conUSE SCHEMA
yUSE CATALOG
en sus elementos primarios.Debe usar uno de los siguientes recursos de proceso:
Almacén de SQL
Interfaces de Lakeflow para canalizaciones declarativas
Proceso del modo de acceso estándar (anteriormente modo de acceso compartido)
Modo de acceso dedicado (anteriormente modo de acceso de usuario único) en Databricks Runtime 15.4 y versiones posteriores, siempre y cuando el área de trabajo esté habilitada para el proceso sin servidor. Consulte Control de acceso detallado en la computación dedicada.
Si es el propietario de la vista materializada puede usar un recurso de proceso en modo de acceso dedicado que ejecuta Databricks Runtime entre 14.3 y versiones posteriores.
Para obtener información sobre otras restricciones sobre el uso de vistas materializadas, consulte Limitaciones.
Crear una vista materializada
Las operaciones CREATE
de la vista materializada de Databricks SQL usan un almacén de Databricks SQL para crear y cargar datos en la vista materializada. La creación de una vista materializada es una operación sincrónica, lo que significa que el comando CREATE MATERIALIZED VIEW
se bloquea hasta que se crea la vista materializada y finaliza la carga de datos inicial. Se crea automáticamente una canalización sin servidor para cada vista materializada de Databricks SQL. Cuando se actualiza la vista materializada, los flujos declarativos de Lakeflow procesan la actualización.
Para crear una vista materializada, use la instrucción CREATE MATERIALIZED VIEW
. Para enviar una instrucción crear, use el editor de SQL en la interfaz de usuario de Azure Databricks, la CLI de SQL de Databrickso la API de SQL de Databricks.
El usuario que crea una vista materializada es el propietario de la vista materializada.
En el ejemplo siguiente se crea la vista materializada mv1
a partir de la tabla base base_table1
:
-- This query defines the materialized view:
CREATE OR REPLACE MATERIALIZED VIEW mv1
AS SELECT
date,
sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;
Al crear una vista materializada mediante la instrucción CREATE OR REPLACE MATERIALIZED VIEW
, la actualización inicial de datos y el recopilación comienzan inmediatamente. Esto no consume recursos computacionales de la SQL Warehouse. En su lugar, se utilizan las canalizaciones declarativas de Lakeflow sin servidor para la creación y las actualizaciones subsiguientes.
Los comentarios de columna en una tabla base se propagan automáticamente a la nueva vista materializada solo en la creación. Para agregar una programación, restricciones de tabla u otras propiedades, modifique la definición de vista materializada (la consulta SQL).
La misma instrucción SQL actualizará una vista materializada si se ejecuta nuevamente o según un horario establecido. Una actualización realizada de esta manera actúa como cualquier otra actualización. Para obtener más información, consulte Actualizar una vista materializada.
Para más información sobre cómo configurar una vista materializada, consulte Configuración de vistas materializadas en Databricks SQL. Para obtener información sobre la sintaxis completa para crear una vista materializada, consulte CREATE MATERIALIZED VIEW. Para obtener información sobre cómo cargar datos en diferentes formatos y desde diferentes lugares, consulte Carga de datos con canalizaciones declarativas de Lakeflow.
Carga de datos desde sistemas externos
Databricks recomienda cargar datos externos mediante Lakehouse Federation para los orígenes de datos admitidos. Para obtener información sobre cómo cargar datos de orígenes no admitidos por la federación de Lakehouse, consulte Opciones de formato de datos. Para obtener información general sobre cómo cargar datos, incluidos ejemplos, consulte Carga de datos con canalizaciones declarativas de Lakeflow.
Ocultar datos confidenciales
Importante
Esta característica está en versión preliminar pública.
Puede usar vistas materializadas para ocultar datos confidenciales de los usuarios que acceden a la tabla. Una manera de hacerlo es crear la consulta para que no incluya esos datos en primer lugar. Pero también puede enmascarar columnas o filtrar filas en función de los permisos del usuario que realiza la consulta. Por ejemplo, podría ocultar la tax_id
columna para los usuarios que no están en el grupo HumanResourcesDept
. Para ello, use las sintaxis ROW FILTER
y MASK
durante la creación de la vista materializada. Para obtener más información, consulte Filtros de fila y máscaras de columna.
Actualizar una vista materializada
Actualizar una vista materializada actualiza la vista para reflejar los cambios más recientes en la tabla base en el momento de la actualización.
Al definir una vista materializada, la CREATE OR REPLACE MATERIALIZED VIEW
instrucción se usa para crear la vista y para actualizarla para las actualizaciones programadas. También puede usar la REFRESH MATERIALIZED VIEW
instrucción para actualizar la vista materializada sin necesidad de volver a proporcionar la consulta. Consulte REFRESH (MATERIALIZED VIEW o STREAMING TABLE) para obtener más información sobre la sintaxis y los parámetros de SQL para este comando. Para obtener más información sobre los tipos de vistas materializadas que se pueden actualizar incrementalmente, consulte Actualización incremental para vistas materializadas.
Para enviar una instrucción de actualización, use el editor de SQL en la interfaz de usuario de Azure Databricks, un cuaderno asociado a un almacenamiento de SQL, el CLI de SQL de Databrickso la API de SQL de Databricks.
El propietario y cualquier usuario al que se le haya concedido el privilegio REFRESH
en la tabla, puede actualizar la vista materializada.
En el ejemplo siguiente se actualiza la vista materializada mv1
:
REFRESH MATERIALIZED VIEW mv1;
La operación es sincrónica de forma predeterminada, lo que significa que el comando se bloquea hasta que se complete la operación de actualización. Para actualizar de forma asincrónica, puede agregar la ASYNC
palabra clave :
REFRESH MATERIALIZED VIEW mv1 ASYNC;
¿Cómo se actualizan las vistas materializadas de Databricks SQL?
Las vistas materializadas crean y utilizan automáticamente canalizaciones declarativas sin servidor de Lakeflow para procesar las operaciones de actualización. La canalización administra la actualización y Databricks SQL Warehouse supervisa la actualización para crear la vista materializada. Las vistas materializadas se pueden actualizar mediante una canalización que se ejecuta según una programación. Las vistas materializadas creadas por Databricks SQL siempre se ejecutan en modo desencadenado. Consulte Desencadenado frente al modo de canalización continua.
Las vistas materializadas se actualizan mediante uno de los dos métodos.
- Actualización incremental : el sistema evalúa la consulta de la vista para identificar los cambios que se produjeron después de la última actualización y combina solo los datos nuevos o modificados.
- Actualización completa : si no se puede realizar una actualización incremental, el sistema ejecuta toda la consulta y reemplaza los datos existentes en la vista materializada por los nuevos resultados.
La estructura de la consulta y el tipo de datos de origen determinan si se admite la actualización incremental. Para admitir la actualización incremental, los datos de origen deben almacenarse en tablas Delta, con el seguimiento de filas y la fuente de distribución de datos de cambios habilitada. Después de crear una vista materializada, puede supervisar su comportamiento de actualización para comprobar si se actualiza incrementalmente o a través de una actualización completa.
Para obtener más información sobre los tipos de actualización y cómo optimizar las actualizaciones incrementales, consulte Actualización incremental para vistas materializadas.
Actualizaciones asincrónicas
De forma predeterminada, las operaciones de actualización se realizan de forma sincrónica. También puede establecer una operación de actualización para que se produzca de forma asincrónica. Esto se puede establecer mediante el comando refresh con la ASYNC
palabra clave . Consulte REFRESH (MATERIALIZED VIEW o STREAMING TABLE) El comportamiento asociado a cada enfoque es el siguiente:
- Sincrónico: una actualización sincrónica impide que otras operaciones continúen hasta que se complete la actualización. Si el resultado es necesario para el siguiente paso, como al secuenciar operaciones de actualización en herramientas de orquestación como Trabajos de Lakeflow, use una actualización sincrónica. Para organizar vistas materializadas con un trabajo, use el tipo de tarea SQL. Consulte Trabajos de Lakeflow.
- Asincrónica: una actualización asincrónica inicia un trabajo en segundo plano en el cómputo de canalizaciones declarativas de Lakeflow cuando comienza una actualización de vista materializada, permitiendo que el comando se complete antes de que finalice la carga de datos. Este tipo de actualización puede ahorrar costos porque la operación no necesariamente requiere capacidad de cómputo en el almacén donde se inicia el comando. Si la actualización se vuelve inactiva y no se está ejecutando ninguna otra tarea, el almacenamiento puede apagarse mientras la actualización usa otro proceso disponible. Además, las actualizaciones asincrónicas admiten iniciar varias operaciones en paralelo.
Actualización de la vista materializada de programación
Puede configurar una vista materializada de Databricks SQL para actualizarse automáticamente en función de una programación definida. Para establecer una programación, realice una de las siguientes acciones:
- Configure el cronograma con la cláusula
SCHEDULE
al crear la vista materializada - Agregue una programación con la instrucción ALTER MATERIALIZED VIEW.
Nota:
Como alternativa, puede crear una tarea en un trabajo que incluya ya sea la instrucción CREATE OR REPLACE MATERIALIZED VIEW
o la instrucción REFRESH
, y orquestarla como haría con cualquier otro trabajo. Consulte Trabajos de Lakeflow.
En el ejemplo siguiente se crea la vista mv1
materializada desde la tabla base_table1
base y una programación para actualizar la vista materializada una vez por hora:
CREATE OR REPLACE MATERIALIZED VIEW mv1
SCHEDULE EVERY 1 hour
AS SELECT
date,
sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;
Para establecer o cambiar la programación después de la creación, use la ALTER MATERIALIZED VIEW
instrucción :
ALTER MATERIALIZED VIEW sales ALTER SCHEDULE EVERY 1 day;
Cuando se crea una programación, se configura automáticamente un nuevo trabajo de Databricks para procesar la actualización.
Para ver la programación, realice una de las siguientes acciones:
- Ejecute la instrucción
DESCRIBE EXTENDED
desde el editor de SQL en la interfaz de usuario de Azure Databricks. Consulte DESCRIBE TABLE. - Utiliza el Explorador de Catálogos para ver la vista materializada. La programación aparece en la pestaña Información general, en Estado de actualización. Consulte ¿Qué es el Explorador de catálogos?.
Cuando hay una programación para las actualizaciones, todavía tiene la opción de ejecutar una actualización manual en cualquier momento, si tiene una necesidad de datos actualizados.
Detener una actualización activa
Para detener una actualización activa en la interfaz de usuario de Canalizaciones declarativas de Lakeflow, en la página Detalles de la canalización , haga clic en Detener para detener la actualización de la canalización. También puede detener la actualización con el CLI de Databricks o con la operación POST /api/2.0/pipelines/{pipeline_id}/stop en la API de Pipelines.
Eliminar permanentemente registros de una vista materializada con vectores de eliminación habilitados
Importante
La compatibilidad con la instrucción REORG
con vistas materializadas está en versión preliminar pública.
Nota:
- El uso de una instrucción
REORG
con una vista materializada requiere Databricks Runtime 15.4 y versiones posteriores. - Aunque puede usar la sentencia
REORG
con cualquier vista materializada, solo es necesario al eliminar registros de una vista materializada que tiene los vectores de eliminación habilitados. El comando no tiene ningún efecto cuando se usa con una vista materializada sin vectores de eliminación habilitados.
Para eliminar físicamente los registros del almacenamiento subyacente para una vista materializada con vectores de eliminación habilitados, como para el cumplimiento del RGPD, se deben realizar pasos adicionales para garantizar que una VACUUM operación se ejecute en los datos de la vista materializada.
Para eliminar físicamente los registros:
- Ejecute una instrucción
REORG
en la vista materializada y especifique el parámetroAPPLY (PURGE)
. Por ejemplo,REORG TABLE <materialized-view-name> APPLY (PURGE);
. Consulte REORG TABLE. - Espere a que pase el período de retención de datos de la vista materializada. El período de retención de datos predeterminado es siete días, pero se puede configurar con la propiedad
delta.deletedFileRetentionDuration
tabla. Consulte Configurar la retención de datos para consultas de viajes en el tiempo. REFRESH
la vista materializada. Consulte Actualizar una vista materializada. En un plazo de 24 horas después de laREFRESH
operación, las tareas de mantenimiento de canalizaciones declarativas de Lakeflow, incluida laVACUUM
operación necesaria para asegurarse de que los registros se eliminan permanentemente, se ejecutan automáticamente.
Quitar una vista materializada
Nota:
Para enviar el comando para quitar una vista materializada, debe ser el propietario de esa vista materializada o tener el privilegio MANAGE
en la vista materializada.
Para quitar una vista materializada, use la instrucción DROP VIEW. Para enviar una instrucción DROP
, puede usar el editor de SQL en la interfaz de usuario de Azure Databricks, la CLI de SQL de Databrickso la API de SQL de Databricks. En el ejemplo siguiente se anula la vista materializada mv1
:
DROP MATERIALIZED VIEW mv1;
También puede usar el Explorador de Catálogos para colocar una vista materializada.
- Haga clic en
Catálogo en la barra lateral.
- En el árbol del Explorador de catálogos de la izquierda, abra el catálogo y seleccione el esquema donde se encuentra la vista materializada.
- Abra el elemento Tablas en el esquema seleccionado y haga clic en la vista materializada.
- En el
, seleccione Eliminar.
Entender los costos de una vista materializada
Dado que una vista materializada se ejecuta en un cómputo sin servidor, fuera del cómputo que configuró para un cuaderno o trabajo, puede preguntarse cómo comprender los costos asociados a la vista materializada. El uso de la vista materializada se rastrea mediante el consumo de DBU. Para más información, consulte ¿Qué es el consumo de DBU de una vista materializada o una tabla de streaming?
Habilitar el seguimiento de filas
Para admitir actualizaciones incrementales de tablas Delta, el seguimiento de filas debe estar habilitado para esas tablas de origen. Si vuelve a crear una tabla de origen, debe volver a habilitar el seguimiento de filas.
En el ejemplo siguiente se muestra cómo habilitar el seguimiento de filas en una tabla:
ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);
Para más información, consulte Uso del seguimiento de filas para tablas Delta.
Limitaciones
- Para conocer los requisitos de proceso y área de trabajo, consulte Requisitos.
- Para conocer los requisitos de actualización incremental, consulte Actualización incremental para vistas materializadas.
- Las vistas materializadas no admiten columnas de identidad ni claves suplentes.
- Si una vista materializada usa un agregado de suma en una columna que se puede establecer en
NULL
y solo los valoresNULL
permanecen en esa columna, el valor agregado resultante de las vistas materializadas es cero en lugar deNULL
. - No se puede leer un fuente de distribución de datos modificados desde una vista materializada.
- Las consultas de viaje de tiempo no se admiten en vistas materializadas.
- Los archivos subyacentes que admiten vistas materializadas pueden incluir datos de tablas ascendentes (incluida la posible información de identificación personal) que no aparecen en la definición de vista materializada. Estos datos se agregan automáticamente al almacenamiento subyacente para admitir la actualización incremental de las vistas materializadas. Dado que los archivos subyacentes de una vista materializada podrían arriesgarse a exponer datos de tablas ascendentes que no forman parte del esquema de la vista materializada, Databricks recomienda no compartir el almacenamiento subyacente con consumidores descendentes que no son de confianza. Por ejemplo, supongamos que la definición de una vista materializada incluye una cláusula
COUNT(DISTINCT field_a)
. Aunque la definición de la vista materializada solo incluye la cláusula de agregadoCOUNT DISTINCT
, los archivos subyacentes contendrán una lista de los valores reales defield_a
. - Puede incurrir en algunos cargos de computación sin servidor, incluso cuando utiliza estas características en un entorno de computación dedicado.
- Si necesita usar una conexión de Azure Private Link con su vista materializada, póngase en contacto con su representante de Databricks.