A package implement a basic data quelity check
Project description
Business Rules Validator
Este proyecto implementa un validador de reglas de negocio en Python utilizando pandas y una base de datos MSSQL.
📌 Características
- Validación de reglas de negocio almacenadas en la base de datos.
- Soporte para múltiples tipos de reglas como valores únicos, rangos, expresiones regulares y más.
- Capacidad para definir funciones personalizadas como validadores.
- Integración con MSSQL mediante
dataquality.
📦 Instalación
Asegúrate de tener Python 3.8+ instalado y ejecuta:
pip install dataquality
🚀 Uso
1. Inicialización del validador
from business_rules_validator import BusinessRulesValidator
validator = BusinessRulesValidator()
2. Cargar reglas de negocio desde la base de datos
reglas = validator.cargar_reglas_negocio()
3. Aplicar reglas a un DataFrame
import pandas as pd
df = pd.DataFrame({
'edad': [20, 17],
'salario': [45000, 60000],
'email': ['test@example.com', 'invalid-email'],
'codigo': ['A123', 'B456'],
'anio': ['2025-02-15', '2025-04-10']
})
errores = validator.aplicar_reglas(df, reglas)
if errores:
print("Errores encontrados:", errores)
else:
print("Todos los datos son válidos.")
📖 Tipos de Reglas
Las reglas de validación se almacenan en la base de datos con los siguientes tipos:
| Tipo de Regla | Descripción |
|---|---|
| NO_NULO | El campo no puede ser nulo. |
| UNICO | El campo debe tener valores únicos. |
| EXPRESION_REGULAR | El campo debe coincidir con una expresión regular. |
| MINIMO | El valor mínimo permitido. |
| MAXIMO | El valor máximo permitido. |
| CANTIDAD_REGISTROS | Debe haber exactamente X registros. |
| PROMEDIO | El promedio del campo debe ser un valor específico. |
| DESVIACION_ESTANDAR | La desviación estándar debe ser un valor específico. |
| RANGO | El valor debe estar dentro de un rango. |
| RANGO_VALOR | Si el primer campo está en un rango, el segundo debe cumplir un valor específico. |
| RANGO_RANGO | Si el primer campo está en un rango, el segundo debe estar en un subrango. |
| FUNCION_PERSONALIZADA | Se ejecuta una función definida por el usuario. |
| HISTORICA_MAYOR | El valor debe ser mayor a un histórico de la base de datos. |
| HISTORICA_MENOR | El valor debe ser menor a un histórico de la base de datos. |
| COLUMNAS | Valida que ciertas columnas existan en el DataFrame. |
📂 Ejemplo de Reglas en la Base de Datos
| nombre_columna | tipo_regla | valor_regla | mensaje_error |
|---|---|---|---|
| edad | MINIMO | 18 | La edad debe ser al menos 18 años |
| salario | MAXIMO | 50000 | El salario no puede exceder los 50,000 |
| EXPRESION_REGULAR | ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$ |
El email no es válido | |
| codigo | UNICO | NULL | El código debe ser único |
| codigo | FUNCION_PERSONALIZADA | def validar_codigo(valor): return valor.startswith("A") |
Código no válido |
| anio | RANGO | 2025-01-01,2025-03-01 |
El rango de valores debe ser entre 2025-01-01 y 2025-03-01 |
| edad | RANGO | 18,45 |
El rango de valores debe ser entre 18 y 45 |
| anio,salario | RANGO_VALOR | 2025-01-01,2025-02-28,40000 |
En el rango de valores entre 2025-01-01 y 2025-02-28 debe tener valor de 40000 |
| salario | HISTORICA_MAYOR | SELECT 39000 total |
El salario debe ser mayor a 39000 |
🔧 Extensión y Personalización
Si necesitas agregar nuevas reglas, puedes extender la clase BusinessRulesValidator y definir nuevas funciones de validación.
class CustomValidator(BusinessRulesValidator):
def nueva_regla(self, valor):
return valor in ["A", "B", "C"]
🛠 Mantenimiento y Contribución
- Clona este repositorio.
- Instala dependencias.
- Realiza cambios y envía un Pull Request.
© 2025 - Business Rules Validator By: Alan Medina & Camila Vanegas ⚙️
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simpledataquality-1.0.0.tar.gz.
File metadata
- Download URL: simpledataquality-1.0.0.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc30e012d3f1eca160284177b46f9b6399935c310db8e5f2a9abfe1e5716df73
|
|
| MD5 |
ad254c1957037bdb3bfd628f7acf78a9
|
|
| BLAKE2b-256 |
1d42e91e2d05ea6a6a7b9f55395f6ddadb072a4e0fa9b0783ea7fcc008916eaf
|
File details
Details for the file simpledataquality-1.0.0-py3-none-any.whl.
File metadata
- Download URL: simpledataquality-1.0.0-py3-none-any.whl
- Upload date:
- Size: 4.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cfc077e106aa96a950c92cc9112c3b3ffb39467fd6c72f5a4255ef90af4a6fe
|
|
| MD5 |
dbd23b5bf98e4966d847c6ac0e61c1b5
|
|
| BLAKE2b-256 |
aaf7eb53702aa93c3d8bd20ccdd99461333345b3c4dec17811c1517cdd1ac5c9
|