Laboratorio 3: Tablas Externas y Federación de Datos
Objetivos del Laboratorio
- Comprender la diferencia arquitectónica entre tablas nativas (almacenamiento en Colossus) y tablas externas.
- Configurar la federación de consultas para interrogar archivos planos directamente desde el almacenamiento de objetos.
- Optimizar costes de almacenamiento físico evitando procesos redundantes de extracción, transformación y carga (ETL).
- Aprender a definir esquemas dinámicos basados en patrones comodín para la asimilación continua de nuevos archivos.
Herramientas y APIs Utilizadas
Terraform (>= 1.0.0): Utilizado para declarar la tabla externa de BigQuery y el bucket de origen de manera unificada.gcloud storage: CLI utilizado para simular la llegada de nuevos registros subiendo archivos de logs al bucket.BigQuery API: Motor encargado de mapear la metadata de los archivos planos y resolver las consultas en paralelo.
Estructura del Código Desarrollado
web_logs.csv: Archivo de registro inicial de actividad de red con marcas de tiempo y volumen de bytes enviados.main.tf: Declaración de Terraform que asocia el dataset, el bucket de almacenamiento y la tabla lógica externa.03_query_external_table.sql: Consulta de análisis analítico que consolida estadísticas de red a través de la tabla externa.
Paso a Paso del Despliegue
Fase 1: Preparación del Conjunto de Datos
- Creación de los datos iniciales de tráfico del servidor conteniendo direcciones IP, marcas de tiempo y códigos de respuesta HTTP.
Fase 2: Infraestructura Declarativa en Terraform
- Declaración del recurso
google_bigquery_tableasociando la directiva de configuraciónexternal_data_configuration. - Establecimiento de las variables
autodetect = trueysource_format = "CSV"para deducir el esquema al vuelo. - Configuración del parámetro
source_urisapuntando al bucket mediante un patrón de comodín:raw/logs/*.csv. - Aplicación del despliegue mediante
terraform apply. Se constata que la tabla se crea en BigQuery aun con el bucket vacío.
Fase 3: Transferencia de Archivos y Consultas Dinámicas
- Envío del primer archivo CSV de logs hacia el bucket remitiéndolo con el comando
gcloud storage cp. - Ejecución de la consulta SQL agregada validando que BigQuery lee los datos directamente de Cloud Storage.
- Simulación de ingesta en vivo subiendo un segundo archivo CSV a la misma ruta.
- Verificación inmediata de la agregación de nuevos registros en la consulta SQL sin necesidad de alterar la definición de la tabla.