Problema El contexto
Para analizar datos de varios años, el equipo armaba macros de Excel que resumían la información por partes, con el límite de 1 millón de filas de Excel. Esto tomaba entre 2 días y 1 semana, según la carga de trabajo.
Luego se creó una macro que revisaba cada archivo y lo resumía para analizarlo. El problema: ante un error había que buscar el archivo original, y los reportes se perdían o se borraban con frecuencia.
El reporte de staging de paletas se genera en .xlsb y se actualiza 4 veces al día. El objetivo: almacenarlo de forma estructurada, sin pasos manuales y sin duplicar registros en cada recarga.
Solución Qué resolví
- Con VBA, el reporte .xlsb se convierte a CSV y se guarda en SharePoint.
- Power Automate detecta el archivo nuevo y lo envía al bucket de Cloud Storage.
- Un disparador de Cloud Functions se activa con el archivo y ejecuta un script que crea el job de Dataflow.
- Dataflow transforma y limpia los datos: formatos de fecha, errores provenientes de fórmulas y tipos de datos por columna.
- Se elimina la fecha en BigQuery y se insertan los datos; los registros con error van a la tabla de rechazos y el estado se avisa por correo.
- Consultas programadas en BigQuery actualizan la tabla conectada al dashboard de Power BI, que la consume vía DirectQuery.
Estado: en producción; se ejecuta cada vez que detecta archivos nuevos.
Arquitectura técnica
Microsoft 365
- Excel + VBAGenera el reporte (.xlsb) y lo convierte a CSV
- SharePointAlmacena el archivo
- Power AutomateDetecta el archivo nuevo y orquesta el envío
Google Cloud
- Cloud StorageRecibe el CSV
- Cloud FunctionsSe activa con el archivo y crea el job de Dataflow
- DataflowTransforma y limpia los datos
- BigQueryBorra la fecha e inserta; los rechazos van a otra tabla
Consumo
- BigQueryConsultas programadas actualizan la tabla del dashboard
- Power BIDashboard vía DirectQuery
Control de errores
- Registros con error → tabla de rechazos en BigQuery.
- Estado del proceso ETL → aviso por correo a los usuarios técnicos.
- Falla del flujo en Power Automate → aviso en Microsoft Teams.
Detalle del flujo en Power Automate
- Disparador: se crea o modifica un archivo en la carpeta de SharePoint.
- Validación de seguridad: solo continúan los archivos autorizados; el resto se ignora.
- HTTP: solicita a una Cloud Function la URL firmada.
- HTTP: envía el archivo directamente a Cloud Storage con esa URL.
- Si ocurre un error en el flujo, se envía un aviso a Microsoft Teams.
Resultados y validación Resultados y evidencia
150,000
registros procesados en 4 minutos
Pipeline en GCP, medido desde el disparo en Power Automate hasta el fin en Cloud Functions.
−87%
tiempo de procesamiento de reportes operativos (de 2 h a 15 min)
Tiempo del proceso operativo completo. Los 4 minutos corresponden al tramo técnico de ingesta.
Cualitativo (no medido): el dashboard se actualiza solo, los errores se revisan a nivel de detalle y no se pierden archivos porque todo queda estructurado en BigQuery.
Tiempo de análisis con el pipeline frente a los 2 días a 1 semana anteriores.
Decisiones técnicas Cómo pensé
- Reemplazar el resumen archivo por archivo en Excel por datos estructurados en BigQuery: ante un error se revisa a nivel de detalle y no se pierden archivos.
- Power Automate como disparador y carga a Cloud Storage mediante URLs firmadas (carga segura).
- BigLake sobre el bucket para optimizar costos de almacenamiento.
- Como el reporte llega 4 veces al día, cada carga borra primero la fecha en BigQuery y luego inserta, para evitar duplicados.
- Los registros con error no detienen la carga: van a una tabla de rechazos y se avisa por correo.
Alternativas técnicas evaluadas dentro de GCP y por qué se descartaron.
Calidad de datos y pruebas
- Dataflow valida y corrige formatos de fecha, errores provenientes de fórmulas y tipos de datos por columna.
- Los registros con error van a una tabla de rechazos en BigQuery y no detienen la carga.
- Control de duplicados: cada carga borra la fecha correspondiente e inserta de nuevo, porque el reporte llega 4 veces al día.
- El estado del proceso se avisa por correo a los usuarios técnicos.
Pruebas automatizadas y validaciones adicionales: por documentar.
Limitaciones y siguientes pasos
El código productivo vive en GCP y procesa datos de la empresa, por lo que no es público. Siguiente paso propuesto: una versión reproducible con datos sintéticos, diagrama de arquitectura y pruebas.
¿Quieres conversar sobre este proyecto?
Puedo explicar la arquitectura, las decisiones y las limitaciones en una entrevista.
Contactar por LinkedIn