Laboratorio 2: Ingesta de Datos en Batch (GCS a BigQuery)
Objetivos del Laboratorio
- Establecer una arquitectura de lago de datos centralizado (landing zone) en Google Cloud Storage.
- Aprender a formatear correctamente archivos estructurados en formato CSV y JSON delimitado por líneas (NDJSON).
- Garantizar la calidad e integridad del almacén analítico mediante la definición estricta de esquemas físicos en formato JSON.
- Automatizar la ingesta por lotes (batch ingestion) a tablas nativas de BigQuery utilizando herramientas de línea de comandos.
Herramientas y APIs Utilizadas
gcloud storage: Utilidad moderna de línea de comandos para la administración y transferencia de objetos en GCS.bq CLI: Cliente oficial para el envío de trabajos de carga (load jobs), consultas y manipulación de metadatos de BigQuery.Cloud Storage API: Interfaz de programación que habilita el almacenamiento de objetos de gran volumen en GCP.BigQuery API: Servicio que administra y procesa las tareas de ingesta física de datos.
Estructura del Código Desarrollado
ecommerce_users.csv: Datos planos estructurados con delimitadores por comas que contienen la cabecera e información de clientes.products.json: Archivo en formato NDJSON que simula un catálogo de productos con un objeto plano estructurado por línea física.ecommerce_users_schema.json: Esquema explícito que asocia nombres de columnas, tipos físicos y mandatoriedad (modo) para la tabla de usuarios.main.tf: Declaración de Terraform que despliega el datasetlab02_datasety el bucket de almacenamiento seguro.02_verify_batch_data.sql: Consulta de validación para certificar la consistencia del tipo de datos posterior a la carga física.
Paso a Paso del Despliegue
Fase 1: Preparación de Datos y Esquemas
- Creación de los datos planos de usuarios y estructuración del archivo de productos respetando el diseño obligatorio de una sola línea de texto por registro JSON.
- Estructuración manual del esquema JSON de clientes declarando tipos estrictos como
INTEGERyDATEpara prevenir fallos silenciosos.
Fase 2: Infraestructura con Terraform
- Declaración del recurso
google_storage_bucketcon la opciónforce_destroyactivada para permitir limpiezas en entornos de prueba. - Definición de un bloque
lifecycle_rulede borrado automático tras un día para controlar y evitar acumulación de costes residuales en almacenamiento. - Inicialización, planificación y despliegue físico del bucket de almacenamiento y del dataset mediante
terraform apply.
Fase 3: Transferencia e Ingesta Física
- Copia y transferencia de los datos locales a la ruta remota del bucket utilizando la instrucción
gcloud storage cp. - Lanzamiento del comando de ingesta de usuarios mapeando el esquema estructurado y omitiendo la cabecera mediante
--skip_leading_rows=1. - Lanzamiento del comando de ingesta de productos activando la inferencia de tipos con la directiva de seguridad de tipos
--autodetect. - Ejecución e inspección de los metadatos y de los datos importados mediante consultas de verificación agregadas en BigQuery.