Esta etapa del proyecto tiene como objetivo validar la calidad de los datos de los analistas. Este repositorio contiene el código utilizado para relizar dicha verificación. Los datos usados están compuestos por un CSV crudo junto con una plantilla de metadatos, donde se especificaron distintos aspectos de cada dataset (Como por ejemplo, qué columnas pueden tener nulos y cuales no). Luego, este programa corrobora que los datos cumplan con la especificación de metadatos.
Cada verificación genera un JSON que contiene toda la información técnica para luego mostrar un reporte en PDF utilizando pandoc
en el cual se vuelcan todos los problemas encontrados.
Cuando los datos están correctos, se los puede "exportar como definitivos", eso genera y aplica etiquetas a cada dataset (Cambiando el nombre a un formato estándar: TOPICO_gXX.csv
),
junto con el mapeo que se realizó (en formato JSON).
El funcionamiento de este código depende fuertemente de la organización de los archivos del proyecto: Se comunica con Google Drive para descargar los archivos, por lo que ejecutar este código sin el acceso necesario resultará en un error.
El proyecto cuenta con una interfaz mínima de consola con parámetros y ayuda para cambiar la funcionalidad:
[!CAUTION] Si pasamos
-C
o--clean-first
se borra TODO el contenido del cache (tmp/
) y de los resultados (output/
). Es una buena idea usarlo para asegurarse que no haya datos viejos o basura que puedan contaminar el resultado. Pero hay que tener cuidado con borrar outputs que ya eran correctos.
Sólo debe especificarse un subtópico con el número de entrega: Algunos ejemplos válidos:
python run.py --alias SUBTOP2
python run.py -a SUBTOP2
python run.py -s SUBTOP -e 2
python run.py --subtopico SUBTOP --entrega 2
El parámetro --index
genera sólo la tabla de IDs, --exportar-definitivo
lo hace como uno de sus pasos.
python run.py -a SUBTOP1 -i
python run.py -a SUBTOP1 --index
La diferencia con --index
es que acá remappea los .csv
con los nombres correspondientes para que matcheen 1:1 gráfico:dataset.
python run.py -a SUBTOP1 -d
python run.py -a SUBTOP1 --exportar-definitivo
Los controles están estructurados de manera jerárquica, de forma tal que existen algunos de nivel superior que llaman a otros de nivel inferior.
Por ejemplo, los Controles
de Subtopicos
, llaman a Controles
de Archivo
para analizar .csv
s (Encoding, delimiter), y Controles
de Consistencia
(Diferencias entre lo declarado en la plantilla y lo efectivo en un dataset).
Etc.
Subtopico
|
|\_Archivo
|
\_Consistencia
...
El entry point del programa de QA es 'main.py'. Ejecuta primero los tests unitarios y después el código.