Introducción a las vistas materializadas

Las vistas materializadas son vistas procesadas previamente que almacenan periódicamente los resultados de una consulta en SQL. En algunos casos de uso, las vistas materializadas reducen el tiempo total de procesamiento y los cargos relacionados, ya que disminuyen la cantidad de datos que se deben analizar para cada consulta. Puedes consultar vistas materializadas como lo harías con otros recursos de datos.

Beneficios de las vistas materializadas

En los siguientes casos de uso, se destaca el valor de las vistas materializadas:

  • Preprocesar datos. Mejora el rendimiento de las consultas preparando agregaciones, filtros, uniones y clústeres.
  • Aceleración del panel Potenciar las herramientas de IE, como Looker, que consultan con frecuencia las mismas métricas agregadas (por ejemplo, los usuarios activos por día)
  • Análisis en tiempo real de transmisiones grandes Puede proporcionar respuestas más rápidas en tablas que reciben datos de transmisión de alta velocidad.
  • Administración de costos Reducir el costo de las consultas repetitivas y costosas en grandes conjuntos de datos

Características clave

Las características clave de las vistas materializadas incluyen las siguientes:

  • No requieren mantenimiento. BigQuery precalcula las vistas materializadas en segundo plano cuando cambian las tablas base. BigQuery agrega automáticamente los cambios en los datos incrementales de las tablas base a las vistas materializadas, sin necesidad de que el usuario realice ninguna acción.
  • Datos actualizados. Las vistas materializadas muestran datos actualizados. Si los cambios en las tablas base pueden invalidar la vista materializada, BigQuery lee los datos directamente desde las tablas base. Si los cambios en las tablas base no invalidan la vista materializada, BigQuery lee el resto de los datos desde la vista materializada y solo lee los cambios desde las tablas base.
  • Ajuste inteligente. Si alguna parte de una consulta en una tabla de base se puede resolver con una consulta en la vista materializada, BigQuery redirige la consulta para usar la vista materializada y, así, mejorar el rendimiento y la eficiencia. Para obtener información sobre cómo y cuándo el ajuste inteligente puede mejorar las consultas, consulta Usa vistas materializadas.

Tipos de vistas materializadas

Existen dos tipos básicos de vistas materializadas:

  • Las vistas materializadas incrementales admiten un conjunto limitado de funciones. Para obtener más información sobre la sintaxis de SQL admitida para las vistas materializadas, consulta Crea vistas materializadas. Solo las vistas materializadas incrementales pueden aprovechar el ajuste inteligente.
  • Las vistas materializadas no incrementales admiten la mayoría de las sintaxis que no admiten las vistas materializadas incrementales.

Cuando creas vistas materializadas, de forma predeterminada, BigQuery solo te permite crear vistas basadas en consultas incrementales. Para crear una vista no incremental, puedes especificar allow_non_incremental_definition = true en la definición de la vista materializada.

El mejor tipo de vista materializada que puedes usar depende de tu situación. En la siguiente tabla, se comparan las características de las vistas materializadas incrementales y no incrementales:

Categoría Incremental No incremental
Consulta admitida Limitado La mayoría de las búsquedas
Costo de mantenimiento Puede reducir el costo de las consultas que se usan con frecuencia. Para obtener información sobre cómo se actualizan las vistas materializadas, consulta actualizaciones incrementales. Cada actualización ejecuta la consulta completa.
Compatibilidad con el ajuste inteligente Se admite para la mayoría de las consultas de vistas. No
Resultados siempre actualizados Compatible. Las vistas incrementales devuelven resultados de consultas actualizados incluso cuando las tablas base cambiaron desde la última actualización. No

Vistas materializadas autorizadas

Puedes crear una vista materializada autorizada para compartir un subconjunto de datos de un conjunto de datos de origen en una vista de un conjunto de datos secundario. Luego, puedes compartir esta vista con usuarios y grupos específicos (principales). Las entidades principales pueden consultar los datos que proporcionas 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 manera. Para obtener más información, consulta Vistas autorizadas.

Interacción con otras funciones de BigQuery

Las siguientes características de BigQuery funcionan de manera transparente con vistas materializadas:

  • Explicación del plan de consultas. El plan de consultas muestra las vistas materializadas que se analizan (si las hay) y 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 vuelve a escribir con una vista materializada pueden almacenarse en caché, de acuerdo con las limitaciones habituales (uso de funciones deterministas, sin transmisión a las tablas base, etcétera).

  • Restricción de costo. Si especificas una cantidad máxima de bytes facturados y una consulta lee datos que superan ese límite, la consulta falla sin incurrir en un cargo, sin importar si la consulta usa vistas materializadas, las tablas base o ambas.

  • Estimación de costos con una prueba de validación. Una prueba de validación repite la lógica de reescritura de la consulta con las vistas materializadas disponibles y proporciona una estimación de costos. Puedes usar esta función como una forma de probar si una consulta específica utiliza vistas materializadas.

  • Replicación de datos entre regiones. Las vistas materializadas se pueden crear en tablas de BigQuery que tengan habilitada la replicación entre regiones, pero solo en la región principal. Si usas la región secundaria, es posible que encuentres el siguiente mensaje de error: The dataset replica of the cross region dataset {PROJECT}:{DATASET} in region {REGION} is read-only because it's not the primary replica.

Además de estas funciones, puedes crear vistas materializadas sobre tablas con funciones específicas, como se describe en las siguientes secciones.

Tablas con captura de datos modificados activa

Puedes crear vistas materializadas sobre tablas con captura de datos modificados (CDC) activa. Estas vistas materializadas funcionan como vistas materializadas en tablas de BigQuery, incluidos los beneficios de la actualización automática. Las vistas materializadas no pueden realizar consultas de combinación en el tiempo de ejecución, por lo que debes configurarlas con un max_staleness suficiente para evitar trabajos de combinación en el tiempo de ejecución. Para obtener más información, consulta Limitaciones de las vistas materializadas en tablas con captura de datos modificados activa.

Tablas habilitadas para caché de metadatos de BigLake

Vistas materializadas enTablas habilitadas para caché de metadatos de BigLake puede hacer referencia a datos estructurados almacenados en Cloud Storage y Amazon Simple Storage Service (Amazon S3). Estas vistas materializadas funcionan como vistas materializadas en tablas de almacenamiento administradas por BigQuery, incluidos los beneficios de actualización automática y ajuste inteligente. Otros beneficios incluyen la agregación, el filtrado previo y la unión previa de los datos almacenados fuera de BigQuery. Las vistas materializadas en tablas de BigLake se almacenan en el almacenamiento administrado de BigQuery y tienen todas las características de este.

Cuando creas una vista materializada en una tabla de BigLake de Amazon S3, los datos de la vista materializada no están disponibles para las uniones con datos de BigQuery. Si deseas que los datos de Amazon S3 en una vista materializada estén disponibles para las uniones, crea una réplica de la vista materializada. Solo puedes crear réplicas de vistas materializadas en vistas materializadas autorizadas.

Limitaciones

Las vistas materializadas están sujetas a las siguientes limitaciones:

  • Es posible 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 vistas materializadas, consulta Cuotas y límites.
  • No puedes actualizar ni manipular directamente los datos de la vista materializada con operaciones como COPY, EXPORT, LOAD, WRITE o instrucciones de lenguaje de manipulación de datos (DML).
  • No puedes actualizar la consulta de una vista materializada después de crearla.
  • Una vista materializada debe residir en la misma organización que las tablas base o en el mismo proyecto si este no pertenece a una organización.
  • Las vistas materializadas admiten una sintaxis de SQL restringida y un conjunto limitado de funciones de agregación. Para obtener más información, consulta Compatibilidad con consultas de vistas materializadas.
  • No puedes anidar vistas materializadas sobre otras vistas materializadas.
  • Las vistas materializadas no pueden consultar tablas externas o comodín, vistas lógicas1 ni instantáneas.
  • Las vistas materializadas no admiten variables de sistema, por ejemplo, la variable de sistema @@session_id.
  • El valor de la opción max_staleness debe estar entre 30 minutos y 3 días, inclusive.
  • Las vistas materializadas solo admiten el dialecto de GoogleSQL.
  • Puedes establecer descripciones para las vistas materializadas, pero no para las columnas individuales de la vista materializada.
  • Si borras una tabla base sin borrar primero la vista materializada, las consultas y las actualizaciones de la vista materializada fallarán. Si vuelves a crear la tabla base, también debes volver a crear la vista materializada.
  • Solo las vistas materializadas no incrementales pueden tener tablas base de conjuntos de datos externos de Spanner. Si la última actualización de una vista materializada no incremental se produjo fuera del intervalo max_staleness, la consulta lee las tablas del conjunto de datos externo de Spanner base. Para obtener más información sobre las tablas de conjuntos de datos externos de Spanner, consulta Crea vistas materializadas sobre conjuntos de datos externos de Spanner.
  • BigQuery no almacena en caché los resultados de las consultas si estas se ejecutan en vistas materializadas no incrementales que hacen referencia a tablas de conjuntos de datos externos de Spanner.
  • Las vistas materializadas no pueden heredar ni definir de forma explícita tipos de datos con parámetros, como STRING(n), porque los tipos de datos con parámetros solo se admiten para las columnas de la tabla base y las variables de secuencia de comandos.

1La compatibilidad con referencias de vistas lógicas se encuentra en vista previa. Para obtener más información, consulta Vistas lógicas de referencia.

Limitaciones de las vistas materializadas en tablas con CDC activo

Las vistas materializadas con tablas base de captura de datos modificados activas tienen las siguientes limitaciones:

  • Si una vista materializada tiene una tabla base con captura de datos modificados activa, no puedes hacer referencia a esa tabla en una consulta que también haga referencia a la vista materializada.
  • Cuando creas una vista materializada sobre una tabla con captura de datos modificados activa, la vista materializada no puede realizar los trabajos de combinación en el entorno de ejecución de la tabla de CDC subyacente. Establece el valor de max_staleness de la vista materializada en, al menos, el doble del valor de max_staleness de la tabla base. Las consultas de una vista materializada fallan si la versión actual de la tabla de CDC subyacente es más antigua que la max_staleness de la vista materializada.
  • No puedes usar el ajuste inteligente para las vistas materializadas sobre tablas con captura de datos de cambio activa.

Limitaciones de las vistas materializadas en tablas de BigLake

Las vistas materializadas en tablas de BigLake tienen las siguientes limitaciones:

  • No puedes particionar la vista materializada. Las tablas base pueden usar la partición en Hive, pero no puedes particionar el almacenamiento de vistas materializadas en tablas de BigLake. Esto significa que cualquier eliminación de una tabla base provoca una actualización completa de la vista materializada. Para obtener más detalles, 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 puedes realizar una unión entre las tablas administradas de BigQuery y las tablas de BigLake en una sola definición de vista materializada.
  • BigQuery BI Engine no admite la aceleración de vistas materializadas sobre tablas de BigLake.

Precios de las vistas materializadas

Las vistas materializadas generan costos de las siguientes maneras:

  • Consulta de vistas materializadas
  • Mantenimiento de vistas materializadas, como cuando se actualizan las vistas materializadas. El costo de la actualización automática se factura al proyecto en el que reside la vista. El costo de la actualización manual se factura al proyecto en el que se ejecuta el trabajo de actualización manual. Para obtener más información sobre cómo controlar el costo de mantenimiento, consulta Actualiza el mantenimiento del trabajo.
  • Almacenamiento de tablas de vistas materializadas

En la siguiente tabla, se describen los componentes de precios de las vistas materializadas:

Componente Precios según demanda Precios basados en la capacidad
Realiza consultas Bytes procesados por vistas materializadas y las partes necesarias de las tablas base.1 Las ranuras se consumen con el tiempo de consulta.
Mantenimiento Bytes procesados durante el momento de la actualización. Las ranuras se consumen con 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 del costo de almacenamiento

La forma en que BigQuery almacena ciertos valores agregados afecta el cálculo del tamaño de almacenamiento. Para los valores agregados AVG, ARRAY_AGG y APPROX_COUNT_DISTINCT de una vista materializada, el valor final no se almacena directamente. En vez de eso, BigQuery almacena de forma interna una vista materializada como un esbozo intermedio que se usa para producir el valor final.

Por ejemplo, considera la vista materializada que se crea 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 aparece como NUMERIC o FLOAT64, se almacena como BYTES de forma interna, y su contenido es un boceto intermedio en un formato propietario. Para el cálculo del tamaño de los datos, la columna se trata como BYTES.

¿Qué sigue?