Aplicación de consola .NET 8 para la carga automatizada de datos desde Excel a SQL Server.
Aplicación que lee información de clientes y transacciones desde un archivo Excel, valida los datos y los carga en una base de datos SQL Server
- appsettings.json
reemplazar las cadenas de conexión y rutas según sea necesario.
(YOUR_SERVER\\INSTANCE | your_username | your_password)
-
- Configuración de Base de Datos: Crea la base de datos y tablas necesarias
-
- Lectura de Excel: Extrae datos de clientes y transacciones
-
- Carga de Datos: Inserta los registros válidos en SQL Server
-
Uso de Surrogate Key (id_cliente_sk / id_transaccion_sk) Los IDs de negocio están duplicados (55, 98) Se implemento porque permite mantener histórico Facilita auditoría y control de versiones
-
Manejo de Clientes Duplicados Se implmento un CTE ya que cliente_canonico no elimina transacciones. (Se elige 1 registro como "versión válida") Solo garantiza que cada id_cliente tenga una única fila en la tabla clientes antes del JOIN, evitando totales incorrectos cuando hay duplicados.
-
Campo: es_valido_analitica Se definió como criterio para separar:
- Datos confiables para reporting
- Datos que deben revisarse
-
¿Por qué no borré datos? existan errores (fechas futuras, valores negativos, montos extremos o duplicados), si borraba datos significaba:
- perder evidencia del problema
- ocultar inconsistencias en vez de controlarlas
Por eso, en lugar de borrar, marqué los registros con flags:
- flag_fecha_futura
- flag_valor_negativo
- flag_outlier_venta
- flag_cantidad_negativa
- flag_duplicado De esta manera quedan disponibles para revisión, pero no afectan los análisis de la tabla resumen_anual.
-
Con los datos a revisar estas son algunas de mis hipotesis.
- Cobros sin entrega de productos (Valor > 0, Cantidad = 0): Podría ser pagos por servicios, abonos a deuda,o errores tipeo y omitio la cantidad.
- Entrega de productos sin cobro (Valor = 0, Cantidad > 0): Podrían ser muestras gratis, garantías, o errores de tipeo donde no se registró el precio.
- Cantidad de Productos negativa (-1 y -2) Podrían ser devoluciones, errores de tipeo.
- .NET 8
- Dapper (acceso a datos)
- EPPlus (lectura de Excel)
- Serilog (logging)
Editar appsettings.json:
- ConnectionStrings: Cadenas de conexión a SQL Server
- ExcelSettings: Ruta y hojas del archivo Excel
- ScriptsPath: Ubicación de los scripts SQL
dotnet run
Los logs se generan en la carpeta logs/