- Resumen del proyecto
- Flujo de datos
- Ejemplo de procesamiento
- Requisitos previos
- Instalacion de dependencias
En este proyecto se implementa una solución de procesamiento de datos parametrizable por fechas usando librería OmegaConf, teniendo como origen un archivo csv, el cual posee como partición el campo "fecha_proceso". Con el uso de librería OmegaConf es posible poder modificar el config yaml y así mismo usar sus parametros para determinar qué datos procesar, de manera de abstraer del código de ejecución las configuraciones que guiarán al mismo.
Forma en que fluyen los datos según decisiones del usuario:
El archivo de origen es un csv con el siguiente formato:

Y luego del procesamiento, dependiendo de lo seleccionado por el usuario, se generarán tantos archivos csv como particiones existan en el rango elegido, como por ejemplo:

Y dichos archivos finales poseen el formato a continuación (ejemplo de una archivo con partición del 13-05-2025), donde se logran apreciar las nuevas columnas creadas en el procesamiento: cantidad de productos en una base unificada (archivo de origen traía la cantidad en dos unidades distintas, donde "ST" es una unidad y "CS" representa 20 unidades), el factor de conversión usado en cada registro, el precio unitario, el precio total y dos columnas booleanas que contienen la siguiente lógica de negocio: para la columna tipo_entrega, únicamente los valores de ZPRE y ZVE1 representan las entregas de rutina. Mientras que los valores de Z04 y Z05 son para entregas con bonificaciones, y el resto de valores no deben ser considerados:

Al ingresar a la terminal el usuario tiene 2 opciones:
Ejecución básica. Donde se procesarán todas las fechas (registros) del dataset de origen, para lo cual debe ejecutar en la terminal el comando:
python -m src.main config/config.yaml
Ejecución con parámetros personalizados. Donde el usuario podrá cambiar 1 o varios parámetros del config, como los rangos de fechas de datos seleccionados, las rutas de origen y destino de datos, país, formato de fechas, factor de conversión entre cajas y productos, tipos de entrega, etc. El usuario debe agregar un argumento extra al comando por cada parámetro que quiera modificar, asi por ejemplo:
- Cambiar fechas:
python -m src.main config/config.yaml processing.start_date=2025-02-01 processing.end_date=2025-02-28
- Cambiar país:
python -m src.main config/config.yaml processing.country=GT
- Python 3.10 o superior
- Java JDK 21
- Pyspark==3.5.1
- Omegaconf==2.3.0
- Instalar Java ( https://shorturl.at/nVwIS )
- Configurar la variable JAVA_HOME: