Pointblank adopta un enfoque diferente para la calidad de datos. No tiene que ser una tarea técnica tediosa. Más bien, puede convertirse en un proceso enfocado en la comunicación clara entre los miembros del equipo. Mientras que otras librerías de validación se enfocan únicamente en detectar errores, Pointblank sobresale tanto en encontrar problemas como en compartir insights. Nuestros hermosos informes personalizables convierten los resultados de validación en conversaciones con los stakeholders, haciendo que los problemas de calidad de datos sean inmediatamente comprensibles y procesables para todo tu equipo.
Comienza en minutos, no en horas. La función DraftValidation potenciada por IA de Pointblank analiza tus datos y sugiere reglas de validación inteligentes automáticamente. Así que no hay necesidad de quedarse mirando un script de validación vacío preguntándose por dónde empezar. Pointblank puede impulsar tu viaje de calidad de datos para que puedas enfocarte en lo que más importa.
Ya seas un científico de datos que necesita comunicar rápidamente los hallazgos de calidad de datos, un ingeniero de datos construyendo pipelines robustos, o un analista presentando resultados de calidad de datos a stakeholders del negocio, Pointblank te ayuda a convertir la calidad de datos de una idea tardía en una ventaja competitiva.
La clase DraftValidation utiliza LLMs para analizar tus datos y generar un plan de validación completo con sugerencias inteligentes. Esto te ayuda a comenzar rápidamente con la validación de datos o iniciar un nuevo proyecto.
import pointblank as pb
# Carga tus datos
data = pb.load_dataset("game_revenue") # Un conjunto de datos de ejemplo
# Usa DraftValidation para generar un plan de validación
pb.DraftValidation(data=data, model="anthropic:claude-opus-4-6")La salida es un plan de validación completo con sugerencias inteligentes basadas en tus datos:
import pointblank as pb
# El plan de validación
validation = (
pb.Validate(
data=data,
label="Draft Validation",
thresholds=pb.Thresholds(warning=0.10, error=0.25, critical=0.35)
)
.col_vals_in_set(columns="item_type", set=["iap", "ad"])
.col_vals_gt(columns="item_revenue", value=0)
.col_vals_between(columns="session_duration", left=3.2, right=41.0)
.col_count_match(count=11)
.row_count_match(count=2000)
.rows_distinct()
.interrogate()
)
validationCopia, pega y personaliza el plan de validación generado según tus necesidades.
La API encadenable de Pointblank hace que la validación sea simple y legible. El mismo patrón siempre se aplica: (1) comienza con Validate, (2) agrega pasos de validación, y (3) termina con interrogate().
import pointblank as pb
validation = (
pb.Validate(data=pb.load_dataset(dataset="small_table"))
.col_vals_gt(columns="d", value=100) # Validar valores > 100
.col_vals_le(columns="c", value=5) # Validar valores <= 5
.col_exists(columns=["date", "date_time"]) # Comprobar que existen columnas
.interrogate() # Ejecutar y recopilar resultados
)
# Obtén el informe de validación desde REPL con:
validation.get_tabular_report().show()
# Desde un notebook simplemente usa:
validationUna vez que tengas un objeto validation interrogado, puedes aprovechar una variedad de métodos para extraer insights como:
- obtener informes detallados para pasos individuales para ver qué salió mal
- filtrar tablas basándose en resultados de validación
- extraer datos problemáticos para depuración
- Funciona con tu stack existente: Se integra perfectamente con Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake, ¡y más!
- Informes interactivos hermosos: Resultados de validación claros que destacan problemas y ayudan a comunicar la calidad de los datos
- Pipeline de validación componible: Encadena pasos de validación en un flujo de trabajo completo de calidad de datos
- Alertas basadas en umbrales: Establece umbrales de 'advertencia', 'error' y 'crítico' con acciones personalizadas
- Salidas prácticas: Utiliza resultados de validación para filtrar tablas, extraer datos problemáticos o activar procesos posteriores
import pointblank as pb
import polars as pl
# Carga tus datos
sales_data = pl.read_csv("sales_data.csv")
# Crea una validación completa
validation = (
pb.Validate(
data=sales_data,
tbl_name="sales_data", # Nombre de la tabla para informes
label="Ejemplo del mundo real", # Etiqueta para la validación, aparece en informes
thresholds=(0.01, 0.02, 0.05), # Establece umbrales para advertencias, errores y problemas críticos
actions=pb.Actions( # Define acciones para cualquier exceso de umbral
critical="Se encontró un problema importante de calidad de datos en el paso {step} ({time})."
),
final_actions=pb.FinalActions( # Define acciones finales para toda la validación
pb.send_slack_notification(
webhook_url="https://hooks.slack.com/services/your/webhook/url"
)
),
brief=True, # Añade resúmenes generados automáticamente para cada paso
lang="es"
)
.col_vals_between( # Comprueba rangos numéricos con precisión
columns=["price", "quantity"],
left=0, right=1000
)
.col_vals_not_null( # Asegura que las columnas que terminan con '_id' no tengan valores nulos
columns=pb.ends_with("_id")
)
.col_vals_regex( # Valida patrones con regex
columns="email",
pattern="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
)
.col_vals_in_set( # Comprueba valores categóricos
columns="status",
set=["pending", "shipped", "delivered", "returned"]
)
.conjointly( # Combina múltiples condiciones
lambda df: pb.expr_col("revenue") == pb.expr_col("price") * pb.expr_col("quantity"),
lambda df: pb.expr_col("tax") >= pb.expr_col("revenue") * 0.05
)
.interrogate()
)Se encontró un problema importante de calidad de datos en el paso 7 (2025-04-16 15:03:04.685612+00:00).# Obtén un informe HTML que puedes compartir con tu equipo
validation.get_tabular_report().show("browser")# Obtén un informe de registros fallidos de un paso específico
validation.get_step_report(i=3).show("browser") # Obtén los registros fallidos del paso 3Para equipos que necesitan flujos de trabajo de validación portátiles y controlados por versión, Pointblank soporta archivos de configuración YAML. Esto facilita compartir la lógica de validación entre diferentes entornos y miembros del equipo, asegurando que todos estén en la misma página.
validation.yaml
validate:
data: small_table
tbl_name: "small_table"
label: "Validación de inicio"
steps:
- col_vals_gt:
columns: "d"
value: 100
- col_vals_le:
columns: "c"
value: 5
- col_exists:
columns: ["date", "date_time"]Ejecutar la validación YAML
import pointblank as pb
# Ejecutar validación desde configuración YAML
validation = pb.yaml_interrogate("validation.yaml")
# Obtener los resultados como cualquier otra validación
validation.get_tabular_report().show()Este enfoque es perfecto para:
- Pipelines CI/CD: Almacena reglas de validación junto con tu código
- Colaboración en equipo: Comparte lógica de validación en formato legible
- Consistencia de entorno: Usa la misma validación en desarrollo, staging y producción
- Documentación: Los archivos YAML sirven como documentación viva de tus requisitos de calidad de datos
Pointblank incluye una potente herramienta CLI llamada pb que te permite ejecutar flujos de trabajo de validación de datos directamente desde la línea de comandos. Perfecto para pipelines CI/CD, verificaciones programadas de calidad de datos, o tareas de validación rápidas.
Explora tus datos
# Obtén una vista previa rápida de tus datos
pb preview small_table
# Vista previa de datos desde URLs de GitHub
pb preview "https://github.com/user/repo/blob/main/data.csv"
# Verifica valores faltantes en archivos Parquet
pb missing data.parquet
# Genera resúmenes de columnas desde conexiones de base de datos
pb scan "duckdb:///data/sales.ddb::customers"Ejecuta validaciones esenciales
# Ejecutar validación desde archivo de configuración YAML
pb run validation.yaml
# Ejecutar validación desde archivo Python
pb run validation.py
# Verifica filas duplicadas
pb validate small_table --check rows-distinct
# Valida datos directamente desde GitHub
pb validate "https://github.com/user/repo/blob/main/sales.csv" --check col-vals-not-null --column customer_id
# Verifica que no haya valores nulos en conjuntos de datos Parquet
pb validate "data/*.parquet" --check col-vals-not-null --column a
# Extrae datos fallidos para depuración
pb validate small_table --check col-vals-gt --column a --value 5 --show-extractIntegra con CI/CD
# Usa códigos de salida para automatización en validaciones de una línea (0 = éxito, 1 = fallo)
pb validate small_table --check rows-distinct --exit-code
# Ejecutar flujos de trabajo de validación con códigos de salida
pb run validation.yaml --exit-code
pb run validation.py --exit-code¿Necesitas datos de prueba para tus flujos de trabajo de validación? La función generate_dataset() crea datos sintéticos realistas y adaptados a la localización, basados en definiciones de esquema. Es muy útil para desarrollar pipelines sin datos de producción, ejecutar pruebas CI/CD con escenarios reproducibles, o crear prototipos de flujos de trabajo antes de que los datos de producción estén disponibles.
import pointblank as pb
# Definir un esquema con restricciones de campos
schema = pb.Schema(
user_id=pb.int_field(min_val=1, unique=True),
name=pb.string_field(preset="name"),
email=pb.string_field(preset="email"),
age=pb.int_field(min_val=18, max_val=100),
status=pb.string_field(allowed=["active", "pending", "inactive"]),
)
# Generar 10 filas de datos de prueba realistas
data = pb.generate_dataset(schema, n=10, seed=23)
pb.preview(data)El generador soporta generación de datos sofisticada con estas capacidades:
- Datos realistas con presets: Usa presets integrados como
"name","email","address","phone", etc. - Cadenas de user agent: Genera cadenas de user agent de navegador altamente variadas y realistas de 17 categorías de navegadores con más de 42.000 combinaciones únicas
- Soporte de 100 países: Genera datos específicos de localización (ej.,
country="DE"para direcciones alemanas) - Restricciones de campos: Controla rangos, patrones, unicidad y valores permitidos
- Múltiples formatos de salida: Devuelve DataFrames de Polars por defecto, pero también soporta Pandas (
output="pandas") o diccionarios (output="dict")
- Flujo de trabajo de validación completo: Desde el acceso a los datos hasta la validación y los informes en un solo pipeline
- Construido para la colaboración: Comparte resultados con colegas a través de hermosos informes interactivos
- Salidas prácticas: Obtén exactamente lo que necesitas: recuentos, extractos, resúmenes o informes completos
- Implementación flexible: Úsalo en notebooks, scripts o pipelines de datos
- Generación de datos sintéticos: Crea datos de prueba realistas con más de 30 presets, cadenas de user agent, formateo adaptado al locale y soporte de 100 países
- Personalizable: Adapta los pasos de validación e informes a tus necesidades específicas
- Internacionalización: Los informes pueden generarse en 40 idiomas, incluidos inglés, español, francés y alemán
Visita nuestro sitio de documentación para:
¡Nos encantaría saber de ti! Conéctate con nosotros:
- GitHub Issues para reportes de errores y solicitudes de funciones
- Servidor de Discord para discusiones y ayuda
- Guías para contribuir si te gustaría ayudar a mejorar Pointblank
Puedes instalar Pointblank usando pip:
pip install pointblankTambién puedes instalar Pointblank desde Conda-Forge usando:
conda install conda-forge::pointblankSi no tienes Polars o Pandas instalado, necesitarás instalar uno de ellos para usar Pointblank.
pip install "pointblank[pl]" # Install Pointblank with Polars
pip install "pointblank[pd]" # Install Pointblank with PandasPara usar Pointblank con DuckDB, MySQL, PostgreSQL o SQLite, instala Ibis con el backend apropiado:
pip install "pointblank[duckdb]" # Install Pointblank with Ibis + DuckDB
pip install "pointblank[mysql]" # Install Pointblank with Ibis + MySQL
pip install "pointblank[postgres]" # Install Pointblank with Ibis + PostgreSQL
pip install "pointblank[sqlite]" # Install Pointblank with Ibis + SQLitePointblank usa Narwhals para trabajar con DataFrames de Polars y Pandas, y se integra con Ibis para soporte de bases de datos y formatos de archivo. Esta arquitectura proporciona una API consistente para validar datos tabulares de diversas fuentes.
Hay muchas formas de contribuir al desarrollo continuo de Pointblank. Algunas contribuciones pueden ser simples (como corregir errores tipográficos, mejorar la documentación, presentar problemas para solicitar funciones o reportar problemas, etc.) y otras pueden requerir más tiempo y cuidado (como responder preguntas y enviar PR con cambios de código). ¡Solo debes saber que cualquier cosa que puedas hacer para ayudar será muy apreciada!
Por favor, lee las directrices de contribución para obtener información sobre cómo comenzar.
Estamos trabajando activamente en mejorar Pointblank con:
- Métodos de validación adicionales para comprobaciones exhaustivas de calidad de datos
- Capacidades avanzadas de registro
- Acciones de mensajería (Slack, correo electrónico) para excesos de umbral
- Sugerencias de validación impulsidas por LLM y generación de diccionario de datos
- Configuración JSON/YAML para portabilidad de pipelines
- Utilidad CLI para validación desde la línea de comandos
- Soporte ampliado de backend y certificación
- Documentación y ejemplos de alta calidad
Si tienes alguna idea para características o mejoras, ¡no dudes en compartirlas con nosotros! Siempre estamos buscando maneras de hacer que Pointblank sea mejor.
Por favor, ten en cuenta que el proyecto Pointblank se publica con un código de conducta para colaboradores.
Al participar en este proyecto, aceptas cumplir sus términos.
Pointblank está licenciado bajo la licencia MIT.
© Posit Software, PBC.
Este proyecto es mantenido principalmente por Rich Iannone. Otros autores pueden ocasionalmente ayudar con algunas de estas tareas.





