De Google Sheets a SQL: cuando madura el flujo de informes
Una hoja de cálculo suele ser un buen punto de partida: el equipo puede revisar y corregir datos sin esperar a desarrollo. El problema llega cuando el mismo archivo se convierte a la vez en formulario de entrada, base de datos, motor de transformación, control de acceso y registro de auditoría. Migrar a SQL no consiste en convertir un archivo; permite hacer explícitos la responsabilidad, las validaciones y los criterios de los informes, sin perder las revisiones humanas que todavía aportan valor.
Publicado el 28 de septiembre de 202614 min de lecturaPipeline de datos operativos
Cambia copiar y pegar por un pipeline trazable
Relaciona el origen, las decisiones de validación y el modelo del informe mediante un ID de ejecución
1 / ExtraerLee un rango definido con una identidad de permisos limitados.
2 / RegistrarConserva una captura original inmutable y sus metadatos.
3 / ValidarNormaliza tipos y separa filas incorrectas con su motivo.
4 / ModelarAplica claves, relaciones y reglas versionadas.
5 / ConciliarCompara los totales antes de publicar el informe.
Antes de diseñar tablas, aclara qué representa la hoja: ¿es una fuente oficial, una cola de revisión humana, una exportación temporal o un informe con anotaciones? No elimines una aprobación humana solo porque SQL pueda guardar las filas. Mantén la revisión intencional cuando evita decisiones incorrectas sobre finanzas, inventario o clientes.
Modela el proceso antes que las tablas
Comportamiento en la hoja
Concepto explícito del sistema
Pregunta de diseño
Una persona agrega una fila
Registro de origen, autor y hora de envío
¿Quién corrige y cómo se auditan los cambios?
Columna calculada con fórmula
Transformación versionada o vista derivada
¿Se recalcula o queda fijada tras la aprobación?
Color o celda de estado
Transición de estado validada
¿Qué roles pueden cambiar ese estado?
Pestaña mensual copiada
Hechos fechados y dimensiones de informe
¿El período es un atributo de negocio o solo una pestaña?
Comprobación manual de totales
Invariante de conciliación y cola de excepciones
¿Qué diferencia debe bloquear la publicación?
Importa los datos originales antes de limpiarlos
Guarda un lote inmutable con la hoja y el rango de origen, la hora de extracción, la revisión disponible, la identidad del servicio y el ID de ejecución. Conserva los valores originales o una captura fiel, por separado de los registros normalizados. Así podrás reproducir un informe, explicar una fila rechazada y volver a ejecutar validaciones mejoradas sin fingir que los datos originales ya estaban limpios.
Lee solo rangos aprobados, agrupa solicitudes a la API y usa la identidad y los permisos mínimos necesarios. Nunca guardes credenciales duraderas en una hoja compartida o un script del navegador. Trata las fórmulas, las fechas dependientes de la configuración regional, las celdas vacías y los valores que parecen números pero son identificadores como casos distintos.
Valida por capas y explica los rechazos
Normaliza tipos y zonas horarias; después comprueba campos obligatorios, valores permitidos, unicidad, integridad referencial y reglas de negocio. Rechaza o aísla las filas inválidas con un código estable y una referencia a la fila de origen. No conviertas en silencio “1.234,50” con una configuración regional equivocada ni elimines ceros iniciales de códigos de clientes o productos. Una corrección autorizada debe crear una nueva ejecución de importación, no modificar la captura original.
Aprovecha las garantías de integridad de SQL
Las claves primarias y únicas definen identidades; las foráneas, relaciones; y las restricciones CHECK, invariantes que deben cumplir todos los escritores. Una consulta de informe no debería ser el único lugar que detecta un estado imposible o una cantidad negativa. Separa las tablas de preparación de las tablas operativas confiables y promueve únicamente las filas que superen el contrato de validación. Parametriza las consultas y limita por cliente cuando compartas datos entre organizaciones.
Concilia antes de cambiar el informe
Durante un período de solapamiento, ejecuta el informe antiguo y el modelo SQL nuevo a partir de la misma captura de origen. Compara el número de filas, los totales por dimensiones relevantes, las exclusiones, los nulos, las claves duplicadas y los límites horarios. Documenta las diferencias aceptadas y sus causas. Que el pipeline termine correctamente no demuestra paridad si cambiaron la zona horaria, el redondeo de moneda o la interpretación de una fórmula.
Registra la versión del informe, los IDs de los lotes de entrada, la versión de la transformación y la hora de generación. Define si una corrección de los datos de origen modifica informes históricos o si estos permanecen tal como se emitieron. Es una política de negocio, no una decisión predeterminada de la base de datos.
Migra por etapas
Empieza con una ingestión de solo lectura e informes en paralelo. Luego convierte el modelo SQL en la fuente autorizada y conserva una exportación controlada o una hoja de revisión para quien la necesite. Solo entonces elimina la copia manual. Define responsable, condición de reversión, umbral de conciliación y fecha de comunicación para cada etapa. Evita permitir ediciones independientes en ambos sitios sin fecha límite: acabarás con fuentes de verdad en competencia.
En resumen
Migra cuando la concurrencia, la repetibilidad, el control de acceso o la auditoría ya no encajen en la hoja, pero conserva las decisiones humanas que sean intencionales. Construye el pipeline con capturas originales, validación explicable, restricciones relacionales y conciliación antes del cambio. Madurar el flujo no significa abolir las hojas de cálculo; significa definir responsabilidades y confiar en los informes.