argendatafundar / qa

Control de calidad de datos
Other
0 stars 1 forks source link

 

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.

Uso

El proyecto cuenta con una interfaz mínima de consola con parámetros y ayuda para cambiar la funcionalidad:

image

[!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.

Correr sólo verificaciones

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

Generar IDs

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

Cerrar un subtópico (pasar a definitivo)

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 .csvs (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.