Laboratorio 4: Optimización: Particionado y Clustering
Objetivos del Laboratorio
- Comprender los mecanismos de división física de datos mediante el particionado por tiempo en BigQuery.
- Implementar técnicas de ordenamiento interno con clustering para acelerar filtros sobre atributos de alta cardinalidad.
- Reducir el volumen de bytes escaneados en las consultas aplicando descarte de particiones (partition pruning).
- Desplegar de forma declarativa y estructurada tablas optimizadas para el control de costes en entornos analíticos.
Herramientas y APIs Utilizadas
Terraform (>= 1.0.0): Utilizado para declarar el dataset y la estructura optimizada de la tabla nativa.bq CLI: Cliente de línea de comandos empleado para el envío de trabajos de carga (load jobs) a BigQuery.BigQuery API: Servicio encargado de estructurar y distribuir el almacenamiento físico en Colossus aplicando particionado y clustering.
Estructura del Código Desarrollado
transactions.csv: Archivo plano conteniendo información transaccional repartida en múltiples fechas y tiendas.main.tf: Declaración de Terraform con la definición estricta del esquema, del bloque de particionado diario y del agrupamiento por clustering.04_query_optimization.sql: Consulta analítica que filtra por fecha y por identificador de tienda para validar la reducción de escaneo de datos.
Paso a Paso del Despliegue
Fase 1: Preparación del Conjunto de Datos
- Creación de los datos históricos de transacciones distribuidos en varios días de marzo de 2026 y asociados a diversos identificadores de tienda.
Fase 2: Infraestructura Optimizada con Terraform
- Declaración del recurso
google_bigquery_tablecon un esquema explícito de tipos físicos definidos en formato JSON. - Configuración del bloque de particionado diario
time_partitioningbasado en el campotransaction_datede tipo fecha. - Configuración de la directiva de
clusteringpara ordenar los registros de cada día por el campostore_id. - Aplicación del despliegue de infraestructura analítica mediante el comando de terminal
terraform apply.
Fase 3: Carga de Datos y Consulta de Rendimiento
- Carga del archivo CSV local a la tabla pre-esquematizada en BigQuery utilizando la herramienta de comandos
bq load. - Ejecución de la consulta SQL aplicando filtros en el
WHEREsobre las claves físicas de partición y de clustering. - Verificación del descarte de datos redundantes (partition pruning) comprobando la estimación y el total de bytes procesados por el motor de BigQuery.