Introducción a las vistas materializadas

Las vistas materializadas de BigQuery son tablas precalculadas que optimizan el rendimiento de las consultas y reducen los costos de ejecución de las consultas predecibles que se ejecutan con frecuencia. Al almacenar periódicamente los resultados de una consulta, las vistas materializadas resuelven la latencia de las consultas y los altos costos de análisis cuando se consultan repetidamente conjuntos de datos grandes con patrones de agregación predecibles. Al combinar automáticamente los datos precalculados con los cambios recientes en las tablas base, las vistas materializadas garantizan resultados de consultas actualizados sin necesidad de canalizaciones de datos manuales.

Este documento está destinado a ingenieros de datos, administradores de bases de datos y desarrolladores de inteligencia empresarial (IE) que diseñan canalizaciones de análisis de alto rendimiento. Para implementar correctamente las vistas materializadas, debes estar familiarizado con las estructuras de conjuntos de datos de BigQuery, las funciones de agregación de GoogleSQL y las estructuras de costos de las consultas.

Beneficios de las vistas materializadas

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

  • Procesamiento previo de datos : Mejora el rendimiento de las consultas mediante la preparación de agregaciones, filtros, uniones y clústeres.
  • Aceleración del panel : Potencia las herramientas de IE, como Looker, que consultan con frecuencia las mismas métricas agregadas, por ejemplo, los usuarios activos diarios.
  • Análisis en tiempo real en transmisiones grandes : Puede proporcionar respuestas más rápidas en tablas que reciben datos de transmisión de alta velocidad.
  • Administración de costos : Reduce el costo de las consultas repetitivas y costosas en conjuntos de datos grandes.

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 de 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 de la vista materializada y solo lee los cambios de las tablas base.

    En el siguiente diagrama, se muestra la lógica que se usa para combinar los cambios de datos en tiempo real:

    Lógica de combinación de actualidad de los datos en tiempo real.

  • Ajuste inteligente : Si alguna parte de una consulta en una tabla base se puede resolver mediante 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.

    En el siguiente diagrama, se muestra el flujo de trabajo de redireccionamiento de consultas del ajuste inteligente:

    Flujo de trabajo de redireccionamiento de consultas de ajuste inteligente.

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 se puede usar depende de tu situación. En la siguiente tabla, se comparan las funciones de las vistas materializadas incrementales y no incrementales:

Categoría Incremental No incremental
Consulta admitida Limitado La mayoría de las consultas
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 muestran 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 (principales) específicos. Los 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 de consultas en caché. 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 costos. Si especificas una cantidad máxima de bytes facturados y una consulta lee datos más allá de ese límite, la consulta falla y no genera costos, sin importar si usó la vista materializada, la tabla base o ambas.

  • Estimación de costos con ejecución de prueba. Una ejecución de prueba repite la lógica de reescritura de una 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 usa vistas materializadas.

  • Replicación de datos entre regiones. Las vistas materializadas se pueden crear en tablas de BigQuery que tienen 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 en tablas con funciones específicas, como se describe en las siguientes secciones.

Tablas con captura de datos modificados activa

Puedes crear vistas materializadas en tablas con captura de datos modificados (CDC) activa, un patrón que se usa para transferir continuamente cambios en la base de datos o la tabla. 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 tiempo de ejecución, por lo que debes configurarlas con un max_staleness suficiente para evitar trabajos de combinación en tiempo de ejecución. Para obtener más información, consulta Limitaciones de las vistas materializadas en tablas con captura de datos modificados activa.

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 la forma en que se calcula el 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 esbozo intermedio de formato propietario. Para el cálculo del tamaño de los datos, la columna se trata como BYTES.

Flujo de trabajo para comenzar

La configuración de las vistas materializadas implica el siguiente flujo de trabajo:

  1. Diseña y verifica la consulta. Redacta tu consulta de agregación con los lineamientos de GoogleSQL.
  2. Crea la vista materializada. Ejecuta la CREATE MATERIALIZED VIEW instrucción con la Google Cloud consola, la herramienta de línea de comandos de bq o la API de BigQuery.
  3. Permite que se ejecute el ajuste inteligente. BigQuery redirige automáticamente las consultas en la tabla base para usar la vista materializada. No es necesario que las consultas ni las aplicaciones vuelvan a escribir los destinos.

Para comenzar a crear, consulta Crea vistas materializadas.

¿Qué sigue?