| # | Característica | Por qué es crítica | Ejemplo de buen diseño vs. mal diseño |
|---|---|---|---|
0 | Documentado | Para que se pueda realizar un desarrollo consistente basado en documentación oficial versionada por parte del proveedor o emisor del archivo, con cada campo descrito en lenguaje natural y los tipos de datos definidos. | Bueno: documentación oficial del archivo campo por campo / Malo: sin documentación o documentación incompleta. |
| 1 | Estructura fija y consistente | El parser debe saber exactamente dónde está cada campo sin ambigüedad | Bueno: CSV con 18 columnas siempre / Malo: JSON variable |
| 2 | Esquema rígido / schema-on-read estricto | Permite validación automática inmediata (tipos, obligatoriedad, longitud) | Columnas con tipos fijos + NOT NULL claros |
| 3 | Delimitadores y codificación claros y uniformes | Evita errores de parsing catastróficos | ; o + UTF-8 sin BOM / Malo: mezcla tab, coma, utf-16 |
| 4 | Encabezado presente y obligatorio | Facilita validación automática y autodescubrimiento de columnas | Primera fila = nombres de columnas exactos |
| 5 | Valores atómicos (1NF) | Evita tener que parsear dentro del campo durante la carga | “2025-02-20” en vez de “20/02/2025 14hs” |
| 6 | Normalización de formatos | Elimina variaciones que rompen reglas de negocio | Fechas → ISO 8601, montos → decimal con punto, sin símbolo $ |
| 7 | Códigos control / lookup cerrados | Permite validación contra tablas maestras | “tipo_doc”: solo “C”, “P”, “DNI”, “CI”, “RUC” |
| 8 | Clave única / negocio clara | Permite detección de duplicados y procesamiento idempotente | Campo o combinación = “ID_TRANSACCION” o “FOLIO+FECHA+MONTO” |
| 9 | Mecanismo de trazabilidad | Necesario para auditoría y re-procesos | Campo “source_file_name”, “line_number”, “batch_id” |
| 10 | Tamaño y volumen predecible | Evita problemas de memoria y timeouts en el importador | Archivos < 2-5 GB, < 1-5M registros por archivo |
| 11 | Ausencia (o muy controlada) de nulos | Los nulos mal gestionados rompen muchas reglas de integridad | Usar valores centinela claros (-1, ‘9999-12-31’, etc.) |
| 12 | Separación clara entre header y detail | Muy común en interfaces financieras y facturación | Tipo registro = ‘H’ / ‘D’ / ‘T’ (trailer) |
| 13 | Control de integridad simple | Permite validación rápida antes de procesar | Cantidad registros en trailer, sumatoria de montos |
| 14 | Formato preferido | (en 2025-2026) los más robustos para procesamiento transaccional | CSV → Fixed-width → Parquet columnar (si ya es stage) |


