En este trabajo se ha persiguido el desarrollo de una herramienta para analizar la calidad de los datos con objeto de que usuarios no expertos en la programación puedan poner bajo análisis la calidad de sus datos.
- 📁 Estructura del Proyecto
- 🛠️ DaqLity: Herramienta para el Análisis de la Calidad de los Datos
- 🖼️ Imágenes de la herramienta
- ⚙️ Instalación y Puesta en Marcha
- 🧪 Documentación: Tests de Calidad de Datos
TFG_Calidad_Datos/
├── Base de datos PostgreSQL/ # Base de datos para evaluación práctica
│ ├── ScriptFinal # Script de creación de base de datos e introuducción de datos
├── DaqLity/ # Herramienta desarrollada, posteriormente se explica su instalación
│ ├── ...
├── Desarrollo-GreatExpectations/ # Herramienta Great-Expectations analizada en la evaluación práctica
│ ├── great-expectations
| | ├── evaluacion-practica-ge.py # Desarrollo de test para analizar la calidad de datos en Great-Expectations
| | ├── ...
│ ├── ...
|── Desarrollo-PyDeequ/
| |── evaluacion-practica-pydeequ.py # Desarrollo de test para analizar la cadlidad de datos en PyDeequ
|── README.me # Documentación del proyecto
└── conjunto_test_plan_de_calidad.josn # Conjunto de pruebas definidas en el plan de calidad recogidas en archivo JSON
DaqLity es una herramienta interactiva desarrollada como parte de un Trabajo de Fin de Grado (TFG) en Ingeniería Informática. Su objetivo principal es facilitar el análisis y la visualización de la calidad de conjuntos de datos, empleando tecnologías como Apache Spark y Streamlit.
La aplicación permite detectar posibles problemas de calidad en los datos, presentar información sobre las diferentes dimensiones de la calidad del dato y ofrecer una interfaz sencilla para su uso por parte de analistas y científicos de datos no exportos en programación.
Para obtener una copia local del proyecto, ejecutar:
git clone https://github.com/AlejandroAcebo/TFG_Calidad_Datos/Después de clonar el repositorio, accede al directorio principal de la herramienta:
cd ./TFG_Calidad_Datos/DaqLitySe recomienda crear un entorno virtual para aislar las dependencias del proyecto:
python3 -m venv venv
source venv/bin/activateEjecuta los siguientes comandos para actualizar el sistema, instalar Java y configurar las variables de entorno, y finalmente instalar las dependencias de Python necesarias:
sudo apt update
sudo apt install openjdk-17-jdk
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
pip install streamlit
pip install pyspark==3.5.0
pip install --upgrade setuptools wheel
pip install plotly
pip install pydeequ
pip install findsparkDescarga de los conectores jdbc de bases relacionales: PostgreSQL, MySQL, SQL Server y MariaDB
mkdir jars && cd jars/
wget https://jdbc.postgresql.org/download/postgresql-42.6.0.jar
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar
wget https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/12.2.0.jre8/mssql-jdbc-12.10.0.jre8.jar
wget https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/3.1.4/mariadb-java-client-3.1.4.jar
Guía de Instalación y Configuración de Java, Spark y Hadoop en Windows
Instalar Java JDK 17
Descargar desde:
https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
Instalar en:
C:\Program Files\Java\jdk-17
Configurar variables de entorno:
JAVA_HOME → C:\Program Files\Java\jdk-17
Agregar a Path:
%JAVA_HOME%\binInstalar Apache Spark
Descargar desde:
https://spark.apache.org/downloads.html
Versión: Spark 3.5.0
Package: Pre-built for Apache Hadoop 3
Descomprimir en:
C:\spark\spark-3.5.0-bin-hadoop3
Configurar variables de entorno:
SPARK_HOME → C:\spark\spark-3.5.0-bin-hadoop3
Agregar a Path:
%SPARK_HOME%\binInstalar winutils.exe (soporte Hadoop en Windows)
Crear carpeta:
C:\hadoop\bin
Descargar winutils.exe compatible con Hadoop 3.x:
https://github.com/cdarlint/winutils
Copiar winutils.exe en:
C:\hadoop\bin
Configurar variable de entorno:
HADOOP_HOME → C:\hadoop
Agregar a Path:
%HADOOP_HOME%\binUna vez instalado todo esto reiniciar la terminal y acceder desde tu IDE de python preferido a la terminal y ejecutar:
pip install streamlit
pip install pyspark==3.5.0
pip install --upgrade setuptools wheel
pip install plotly
pip install pydeequ
pip install findsparkSeguido instalar los archivos jar de los jdbc necesarios y meterlos en una carpeta llamada "jars" dentro del proyecto, que habrá que crear:
mkdir jars && cd jars
https://github.com/microsoft/mssql-jdbc/releases/download/v12.10.0/mssql-jdbc-12.10.0.jre8.jar
https://jdbc.postgresql.org/download/postgresql-42.6.0.jar
https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/12.2.0.jre8/mssql-jdbc-12.10.0.jre8.jar
https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/3.1.4/mariadb-java-client-3.1.4.jar- Pulsa
Win + Rpara abrir la ventana Ejecutar. - Escribe
regedity presiona Enter para abrir el Editor del Registro.
- En el panel izquierdo, navega a la siguiente ruta:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\
-
Dentro de esta clave encontrarás carpetas con nombres similares a:
MSSQL15.SQLEXPRESSMSSQL16.MSSQLSERVER
-
Identifica cuál corresponde a tu instancia de SQL Server.
- Entra en la ruta:
[Tu instancia]\MSSQLServer\SuperSocketNetLib\Tcp
Ejemplo para la instancia por defecto SQL Server 2022:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp
- Modifica las siguientes entradas:
| Clave | Acción |
|---|---|
Enabled |
Cambiar el valor a 1 (habilitar TCP/IP) |
TcpPort |
Establecer el puerto a 1433 |
TcpDynamicPorts |
Dejar en blanco (vacío) |
- Realiza estos cambios en la sección IPAll, y si existen, también en IP1 o IP2.
- Cierra el editor de registro para guardar los cambios.
-
Pulsa
Win + R, escribeservices.mscy presiona Enter. -
En la ventana Servicios, busca el servicio de SQL Server correspondiente a tu instancia:
- Por ejemplo:
SQL Server (MSSQLSERVER)para la instancia por defecto.
SQL Server (SQLEXPRESS)para una instancia nombrada.
- Por ejemplo:
-
Haz clic derecho sobre el servicio y selecciona Reiniciar.
Para iniciar la aplicación, ejecuta el siguiente comando en el directorio de la herramienta:
streamlit run UI.pyAl ejecutar la herramienta, en la terminal aparecerán dos URLs:
-
Local URL: permite acceder desde el navegador del equipo local, por ejemplo: http://localhost:8501
-
Network URL: Esta URL permite acceder a la aplicación desde otro dispositivo que esté conectado a la misma red local. Por ejemplo: http://192.168.X.X:8501
A continuación se describe el significado y un ejemplo de cada tipo de test de calidad que dispone la herramienta:
Verifica que no haya datos faltantes en una columna determinada.
Ejemplo: Asegura que todas las filas tengan un valor en la columna
ID_Cliente.
Evalúa si una columna contiene valores dentro de los esperados.
Ejemplo: Un código postal solo puede tener 5 cifras o 5 + 4 cifras.
Comprueba si los datos están actualizados en función de un rango de tiempo esperado. Esta actualidad se puede analizar por fecha o fecha y hora.
Ejemplo: Una fecha de última actualización mayor a 12 meses.
Asegura que las relaciones entre tablas o entidades estén completas y sean coherentes.
Ejemplo: Un
ID_Productoen la tabla de ventas debe existir en la tabla de productos.
Valida que los datos cumplan con el formato o patrón esperado.
Ejemplo: Correos electrónicos deben seguir el patrón
nombre@dominio.com.
Evalúa si los valores son lógicos y tienen sentido en su contexto.
Ejemplo: El tipo de envío puede ser de un particular o de un profesional.
Verifica el nivel de detalle o granularidad de los datos.
Ejemplo: El peso de un envío debe tener al menos 2 decimales.


