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.
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
Las características clave de las vistas materializadas incluyen las siguientes:
- No requieren mantenimiento. Las vistas materializadas se precalculan en segundo plano cuando las tablas base cambian. Cualquier cambio en los datos incrementales de las tablas base se agrega de forma automática a las vistas materializadas, sin necesidad de que el usuario realice ninguna acción.
- Datos nuevos. Las vistas materializadas muestran datos nuevos. Si los cambios en las tablas base pueden invalidar la vista materializada, los datos se leen de forma directa desde las tablas base. Si los cambios en las tablas base no invalidan la vista materializada, los demás datos se leerán desde la vista materializada y solo se leerán 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 redirigirá 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.
Vistas materializadas incrementales y no incrementales
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 funciones 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 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 específicos (principales) que pueden ver los datos que compartes. 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 refleja las vistas materializadas que se analizan (si las hay) y muestra 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 estableciste un valor para la cantidad máxima de bytes facturados y una consulta lee una cantidad de bytes que supera el límite, la consulta falla sin incurrir en cargos, sin importar si la consulta usa vistas materializadas, las tablas base o ambas.
Estimación de costos mediante ejecuciones de prueba: Una ejecución de prueba 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: Se pueden crear vistas materializadas sobre tablas de BigQuery que tengan habilitada la replicación entre regiones, pero solo en la región principal. Si se usa la región secundaria, es posible que aparezca 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.
Precios de las vistas materializadas
Los costos se asocian con los siguientes aspectos de las vistas materializadas:
- 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
| 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
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 se procesa como NUMERIC o FLOAT64 para el usuario, 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.