Optimización del Rendimiento de Consultas
Desliza para mostrar el menú
Comprender las vistas materializadas en BigQuery, una función potente para optimizar el rendimiento de las consultas y controlar los costos. Las vistas materializadas almacenan resultados de consultas precomputados, lo que las hace ideales para paneles y reportes que se ejecutan con frecuencia pero no requieren actualizaciones en tiempo real.
¿Qué es una Vista Materializada?
Una vista materializada almacena el resultado de una consulta como una tabla física:
- Se actualiza automáticamente según los cambios en los datos subyacentes;
- Los intervalos de actualización pueden configurarse, por ejemplo, cada 60 minutos;
- Las consultas sobre una vista materializada son más rápidas y económicas que consultar la tabla base.
¿Por Qué Usar Vistas Materializadas?
Las vistas materializadas ofrecen varios beneficios clave:
- Mejora del rendimiento al evitar cálculos repetidos;
- Reducción de costos de consulta al disminuir los datos escaneados;
- Optimización automática de consultas, donde BigQuery puede usar la vista materializada en lugar de la tabla base cuando sea posible.
Creación de una Vista Materializada
Las vistas materializadas se crean usando CREATE MATERIALIZED VIEW y una instrucción estándar SELECT. El comportamiento de actualización se controla mediante opciones de configuración.
-- 1. Create a materialized view for sales analysis by user loyalty status
CREATE MATERIALIZED VIEW `codefinity-442016.codeFinity_test.mv_sales_by_loyalty`
OPTIONS(
enable_refresh = true,
refresh_interval_minutes = 60
) AS
SELECT
up.loyalty_status,
COUNT(DISTINCT ps.user_id) AS user_count,
COUNT(ps.sale_id) AS transaction_count,
SUM(ps.quantity) AS total_items_sold,
SUM(ps.quantity * ps.sale_price) AS total_revenue,
AVG(ps.sale_price) AS avg_price_per_unit,
MAX(PARSE_DATE('%Y-%m-%d', ps.sale_date)) AS last_sale_date
FROM
`codefinity-442016.codeFinity_test.product_sales_section4` ps
JOIN
`codefinity-442016.codeFinity_test.user_profile` up
ON ps.user_id = up.user_id
GROUP BY
up.loyalty_status;
-- 2. Query the materialized view for much faster results
SELECT
loyalty_status,
user_count,
transaction_count,
total_revenue,
total_revenue / transaction_count AS avg_transaction_value,
total_revenue / user_count AS revenue_per_user
FROM
`codefinity-442016.codeFinity_test.mv_sales_by_loyalty`
ORDER BY
total_revenue DESC;
Limitaciones a Tener en Cuenta
Las vistas materializadas tienen restricciones importantes:
- Ciertas funciones con estado (como
CURRENT_TIMESTAMP) no están permitidas; - Las uniones y agregaciones admitidas están limitadas a patrones deterministas;
- Las tablas base deben estar en el mismo conjunto de datos que la vista materializada.
Estas restricciones son importantes de considerar durante el diseño para asegurar que la vista siga siendo elegible para la actualización automática.
Ejemplo
Un panel que rastrea métricas de ventas semanales puede consultar una vista materializada en lugar de la tabla de transacciones sin procesar. Esto mejora significativamente los tiempos de carga mientras mantiene los datos razonablemente actualizados.
Conclusión Clave
Las vistas materializadas son una forma eficaz de escalar cargas de trabajo en BigQuery y gestionar costos. Son más adecuadas para consultas recurrentes, paneles y escenarios de reporte donde las actualizaciones en tiempo casi real son suficientes.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla