Introducción a las vistas materializadas

Las vistas materializadas son vistas precalculadas que almacenan periódicamente los resultados de una consulta de SQL. Las vistas materializadas pueden reducir el tiempo total de procesamiento y los cargos relacionados con las consultas, ya que almacenan los resultados de las consultas, lo que reduce la cantidad de datos que se deben analizar en cada consulta. BigQuery verifica que las vistas materializadas proporcionen datos actualizados calculando las actualizaciones en segundo plano. Este proceso se lleva a cabo de forma incremental usando solo los datos modificados de la tabla base, sujeto a una serie de consideraciones. Las vistas materializadas se pueden consultar directamente o BigQuery puede usarlas para optimizar las consultas a sus tablas base.

Entre las características clave de las vistas materializadas se incluyen las siguientes:

  • Mantenimiento cero. Las vistas materializadas se precalculan en segundo plano cuando cambian las tablas base. Los cambios incrementales de datos de las tablas base se añaden automáticamente a las vistas materializadas, sin que el usuario tenga que hacer nada.
  • Datos actualizados. Las vistas materializadas devuelven datos actualizados. Si los cambios en las tablas base pueden invalidar la vista materializada, los datos se leen directamente de las tablas base. Si los cambios en las tablas base no invalidan la vista materializada, el resto de los datos se lee de la vista materializada y solo los cambios se leen de las tablas base.
  • Ajuste inteligente. Si alguna parte de una consulta en la tabla base se puede resolver consultando la vista materializada, BigQuery redirige la consulta para que use la vista materializada y así mejorar el rendimiento y la eficiencia.

Comparar con vistas lógicas

En la siguiente tabla se resumen las similitudes y las diferencias entre las vistas lógicas y las vistas materializadas de BigQuery.

Componente Vistas lógicas Vistas materializadas
Optimizar la computación No
Asistencia con las consultas Todo Limitada1
Particiones y clústeres N/A
Actualización incremental No
Almacenamiento adicional No
Reescritura de consultas No
Costes de mantenimiento No
Antigüedad de los datos Nunca Opcional 2

1 La opción --allow_non_incremental_definition admite una gama más amplia de consultas de SQL para crear vistas materializadas.

2 La opción --max_staleness proporciona un rendimiento alto y constante con costes controlados al procesar conjuntos de datos grandes que cambian con frecuencia.

Casos prácticos

Las vistas materializadas pueden optimizar las consultas con un coste de computación elevado y resultados de conjuntos de datos pequeños. Entre los procesos que se benefician de las vistas materializadas se incluyen las operaciones de procesamiento analítico online (OLAP) que requieren un procesamiento significativo con consultas predecibles y repetidas, como las de los procesos de extracción, transformación y carga (ETL) o las de las canalizaciones de inteligencia empresarial (BI).

Los siguientes casos prácticos destacan el valor de las vistas materializadas. Las vistas materializadas pueden mejorar el rendimiento de las consultas si necesitas con frecuencia lo siguiente:

  • Agrega los datos previamente. Agregación de datos de streaming.
  • Prefiltra los datos. Ejecutar consultas que solo lean un subconjunto concreto de la tabla.
  • Datos previos a la unión. Combinaciones de consultas, sobre todo entre tablas grandes y pequeñas.
  • Reagrupar datos. Ejecutar consultas que se beneficiarían de un esquema de clustering diferente de las tablas base.

Ajuste inteligente

Las vistas materializadas se pueden usar para mejorar de forma transparente el rendimiento de las consultas sin modificarlas. Puedes usar una vista materializada para optimizar conjuntos de consultas con patrones comunes, como las que genera una herramienta de BI. Para obtener más información, consulta Usar vistas materializadas.

Vistas materializadas autorizadas

Puedes crear una vista materializada autorizada para compartir un subconjunto de datos de un conjunto de datos de origen con una vista de un conjunto de datos secundario. A continuación, puede compartir esta vista con usuarios y grupos específicos (principales) que podrán ver los datos que comparta. Las entidades pueden consultar los datos que proporciones en una vista, pero no pueden acceder directamente al conjunto de datos de origen.

Las vistas autorizadas y las vistas materializadas autorizadas se autorizan de la misma forma. Para obtener más información, consulta el artículo Vistas autorizadas.

Interacción con otras funciones de BigQuery

Las siguientes funciones de BigQuery funcionan de forma transparente con las vistas materializadas:

  • Explicación del plan de consulta: el plan de consulta refleja qué vistas materializadas se analizan (si hay alguna) y muestra cuántos bytes se leen de las vistas materializadas y las tablas base combinadas.

  • Almacenamiento en caché de consultas: los resultados de una consulta que BigQuery reescribe mediante una vista materializada se pueden almacenar en caché con las limitaciones habituales (uso de funciones deterministas, no se pueden insertar datos en streaming en las tablas base, etc.).

  • Restricción de costes: si has definido un valor para el número máximo de bytes facturados y una consulta va a leer un número de bytes que supera el límite, la consulta fallará sin incurrir en ningún cargo, independientemente de si la consulta usa vistas materializadas, las tablas base o ambas.

  • Estimación de costes mediante una prueba de funcionamiento: Una prueba de funcionamiento repite la lógica de reescritura de consultas con las vistas materializadas disponibles y proporciona una estimación de costes. Puedes usar esta función para comprobar si una consulta específica usa alguna vista materializada.

Tablas de BigLake con la caché de metadatos habilitada

Las vistas materializadas de las tablas con caché de metadatos de BigLake habilitada pueden hacer referencia a datos estructurados almacenados en Cloud Storage y Amazon Simple Storage Service (Amazon S3). Estas vistas materializadas funcionan como vistas materializadas sobre tablas de almacenamiento gestionadas por BigQuery, incluidas las ventajas de la actualización automática y la optimización inteligente. Otras ventajas son la agregación, el filtrado y la combinación previos de los datos almacenados fuera de BigQuery. Las vistas materializadas de las tablas de BigLake se almacenan en el almacenamiento gestionado de BigQuery y tienen todas sus características.

Cuando creas una vista materializada en una tabla de BigLake de Amazon S3, los datos de la vista materializada no se pueden combinar con datos de BigQuery. Para que los datos de Amazon S3 de una vista materializada estén disponibles para las combinaciones, crea una réplica de la vista materializada. Solo puede crear réplicas de vistas materializadas en vistas materializadas autorizadas.

Limitaciones

  • Puede que se apliquen límites a las referencias de tablas base y otras restricciones. Para obtener más información sobre los límites de las vistas materializadas, consulta Cuotas y límites.
  • Los datos de una vista materializada no se pueden actualizar ni manipular directamente mediante operaciones como COPY, EXPORT, LOAD, WRITE o instrucciones del lenguaje de manipulación de datos (DML).
  • No puedes sustituir una vista materializada por otra con el mismo nombre.
  • El SQL de la vista no se puede actualizar después de crear la vista materializada.
  • Una vista materializada debe residir en la misma organización que sus tablas base o en el mismo proyecto si el proyecto no pertenece a ninguna organización.
  • Las vistas materializadas usan una sintaxis de SQL restringida y un conjunto limitado de funciones de agregación. Para obtener más información, consulta Vistas materializadas admitidas.
  • Las vistas materializadas no se pueden anidar en otras vistas materializadas.
  • Las vistas materializadas no pueden consultar tablas externas ni comodín, vistas lógicas1 ni copias de seguridad.
  • Solo se admite el dialecto GoogleSQL en las vistas materializadas.
  • Puedes definir descripciones para las vistas materializadas, pero no para las columnas individuales de la vista materializada.
  • Si eliminas una tabla base sin eliminar primero la vista materializada, se producirá un error en las consultas y las actualizaciones de la vista materializada. Si vuelves a crear la tabla base, también debes volver a crear la vista materializada.
  • Si una vista materializada tiene una tabla base con captura de datos de cambios habilitada, no se puede hacer referencia a esa tabla en la misma consulta que a la vista materializada.

1La compatibilidad con referencias de vistas lógicas está en vista previa. Para obtener más información, consulta Referencia de vistas lógicas.

Limitaciones de las vistas materializadas en tablas de BigLake

  • No se admite la creación de particiones de la vista materializada. Las tablas base pueden usar particiones de Hive, pero el almacenamiento de vistas materializadas no se puede particionar en tablas de BigLake. Esto significa que cualquier eliminación en una tabla base provoca una actualización completa de la vista materializada. Para obtener más información, consulta Actualizaciones incrementales.
  • El valor de la opción -max_staleness de la vista materializada debe ser mayor que el de la tabla base de BigLake.
  • No se admiten combinaciones entre tablas gestionadas de BigQuery y tablas de BigLake en una única definición de vista materializada.
  • BigQuery BI Engine no admite la aceleración de vistas materializadas en tablas BigLake.

Precios de las vistas materializadas

Los costes están asociados a los siguientes aspectos de las vistas materializadas:

  • Consultar vistas materializadas.
  • Mantener vistas materializadas, como cuando se actualizan. El coste de la actualización automática se factura al proyecto en el que se encuentra la vista. El coste de la actualización manual se factura al proyecto en el que se ejecuta la tarea de actualización manual. Para obtener más información sobre cómo controlar los costes de mantenimiento, consulta Mantenimiento de trabajos de actualización.
  • Almacenar tablas de vistas materializadas.
Componente Precios bajo demanda Precios basados en la capacidad
Consultas Bytes procesados por las vistas materializadas y las partes necesarias de las tablas base.1 Los slots se consumen durante el tiempo de consulta.
Mantenimiento Bytes procesados durante el tiempo de actualización. Los slots se consumen durante el tiempo de actualización.
Almacenamiento Bytes almacenados en vistas materializadas. Bytes almacenados en vistas materializadas.

1Cuando es posible, BigQuery solo lee los cambios desde la última vez que se actualizó la vista. Para obtener más información, consulta Actualizaciones incrementales.

Detalles de los costes de almacenamiento

En el caso de los valores agregados AVG, ARRAY_AGG y APPROX_COUNT_DISTINCT de una vista materializada, el valor final no se almacena directamente. En su lugar, BigQuery almacena internamente una vista materializada como un boceto intermedio, que se usa para generar el valor final.

Por ejemplo, supongamos que se crea una vista materializada con el siguiente comando:

CREATE MATERIALIZED VIEW project-id.my_dataset.my_mv_table AS
SELECT date, AVG(net_paid) AS avg_paid
FROM project-id.my_dataset.my_base_table
GROUP BY date

Aunque la columna avg_paid se muestra al usuario como NUMERIC o FLOAT64, internamente se almacena como BYTES, y su contenido es un borrador intermedio en formato propietario. Para calcular el tamaño de los datos, la columna se trata como BYTES.

Siguientes pasos