Pointblank adopte une approche différente pour la qualité des données. Cela ne doit pas être une tâche technique fastidieuse. Au contraire, cela peut devenir un processus axé sur une communication claire entre les membres de l'équipe. Alors que d'autres bibliothèques de validation se concentrent uniquement sur la détection d'erreurs, Pointblank excelle à la fois dans la détection des problèmes et le partage d'insights. Nos rapports personnalisables et magnifiques transforment les résultats de validation en conversations avec les parties prenantes, rendant les problèmes de qualité des données immédiatement compréhensibles et actionnables pour toute votre équipe.
Commencez en quelques minutes, pas en heures. La fonctionnalité DraftValidation alimentée par IA de Pointblank analyse vos données et suggère automatiquement des règles de validation intelligentes. Ainsi, plus besoin de fixer un script de validation vide en se demandant par où commencer. Pointblank peut lancer votre parcours de qualité des données pour que vous puissiez vous concentrer sur ce qui compte le plus.
Que vous soyez un data scientist qui doit rapidement communiquer les résultats de qualité des données, un ingénieur de données construisant des pipelines robustes, ou un analyste présentant les résultats de qualité des données aux parties prenantes business, Pointblank vous aide à faire de la qualité des données un avantage concurrentiel plutôt qu'une réflexion après coup.
La classe DraftValidation utilise des LLM pour analyser vos données et générer un plan de validation complet avec des suggestions intelligentes. Cela vous aide à commencer rapidement avec la validation de données ou à démarrer un nouveau projet.
import pointblank as pb
# Chargez vos données
data = pb.load_dataset("game_revenue") # Un jeu de données d'exemple
# Utilisez DraftValidation pour générer un plan de validation
pb.DraftValidation(data=data, model="anthropic:claude-opus-4-6")La sortie est un plan de validation complet avec des suggestions intelligentes basées sur vos données :
import pointblank as pb
# Le plan de validation
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()
)
validationCopiez, collez et personnalisez le plan de validation généré selon vos besoins.
L'API enchaînable de Pointblank rend la validation simple et lisible. Le même modèle s'applique toujours : (1) commencer avec Validate, (2) ajouter des étapes de validation, et (3) finir avec interrogate().
import pointblank as pb
validation = (
pb.Validate(data=pb.load_dataset(dataset="small_table"))
.col_vals_gt(columns="d", value=100) # Valider les valeurs > 100
.col_vals_le(columns="c", value=5) # Valider les valeurs <= 5
.col_exists(columns=["date", "date_time"]) # Vérifier l'existence des colonnes
.interrogate() # Exécuter et collecter les résultats
)
# Obtenez le rapport de validation depuis le REPL avec:
validation.get_tabular_report().show()
# Depuis un cahier (notebook), utilisez simplement:
validationUne fois que vous avez un objet validation interrogé, vous pouvez exploiter une variété de méthodes pour extraire des insights comme :
- obtenir des rapports détaillés pour des étapes individuelles pour voir ce qui a mal tourné
- filtrer des tables basées sur les résultats de validation
- extraire les données problématiques pour le débogage
- Fonctionne avec votre stack actuelle : S'intègre parfaitement avec Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake, et ben plus encore!
- Rapports interactifs ben beaux : Résultats de validation clairs qui mettent en évidence les problèmes et aident à communiquer la qualité des données
- Pipeline de validation modulaire : Enchaînez les étapes de validation dans un flux de travail complet de qualité de données
- Alertes basées sur des seuils : Définissez des seuils 'avertissement', 'erreur' et 'critique' avec des actions personnalisées
- Sorties pratiques : Utilisez les résultats pour filtrer les tables, extraire les données problématiques ou déclencher d'autres processus
import pointblank as pb
import polars as pl
# Charger vos données
sales_data = pl.read_csv("sales_data.csv")
# Créer une validation complète
validation = (
pb.Validate(
data=sales_data,
tbl_name="sales_data", # Nom de la table pour les rapports
label="Exemple concret", # Étiquette pour la validation, apparaît dans les rapports
thresholds=(0.01, 0.02, 0.05), # Définir des seuils pour les avertissements, erreurs et problèmes critiques
actions=pb.Actions( # Définir des actions pour tout dépassement de seuil
critical="Problème majeur de qualité des données trouvé à l'étape {step} ({time})."
),
final_actions=pb.FinalActions( # Définir des actions finales pour l'ensemble de la validation
pb.send_slack_notification(
webhook_url="https://hooks.slack.com/services/your/webhook/url"
)
),
brief=True, # Ajouter des résumés générés automatiquement pour chaque étape
lang="fr",
)
.col_vals_between( # Vérifier les plages numériques avec précision
columns=["price", "quantity"],
left=0, right=1000
)
.col_vals_not_null( # S'assurer que les colonnes qui finissent par '_id' n'ont pas de valeurs nulles
columns=pb.ends_with("_id")
)
.col_vals_regex( # Valider les patrons avec regex
columns="email",
pattern="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
)
.col_vals_in_set( # Vérifier les valeurs catégorielles
columns="status",
set=["pending", "shipped", "delivered", "returned"]
)
.conjointly( # Combiner plusieurs conditions
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()
)Problème majeur de qualité des données trouvé à l'étape 7 (2025-04-16 15:03:04.685612+00:00).# Obtenir un rapport HTML que vous pouvez partager avec votre équipe
validation.get_tabular_report().show("browser")# Obtenir un rapport des enregistrements défaillants d'une étape spécifique
validation.get_step_report(i=3).show("browser") # Obtenir les enregistrements défaillants de l'étape 3Pour les équipes qui ont besoin de flux de travail de validation portables et contrôlés par version, Pointblank prend en charge les fichiers de configuration YAML. Cela facilite le partage de la logique de validation entre différents environnements et membres d'équipe, en s'assurant que tout le monde soit sur la même page.
validation.yaml
validate:
data: small_table
tbl_name: "small_table"
label: "Validation de démarrage"
steps:
- col_vals_gt:
columns: "d"
value: 100
- col_vals_le:
columns: "c"
value: 5
- col_exists:
columns: ["date", "date_time"]Exécuter la validation YAML
import pointblank as pb
# Exécuter la validation depuis la configuration YAML
validation = pb.yaml_interrogate("validation.yaml")
# Obtenir les résultats comme n'importe quelle autre validation
validation.get_tabular_report().show()Cette approche est parfaite pour :
- Pipelines CI/CD : Stockez les règles de validation avec votre code
- Collaboration d'équipe : Partagez la logique de validation dans un format lisible
- Cohérence d'environnement : Utilisez la même validation en développement, staging et production
- Documentation : Les fichiers YAML servent de documentation vivante de vos exigences de qualité des données
Pointblank inclut un utilitaire CLI puissant appelé pb qui vous permet d'exécuter des workflows de validation de données directement depuis la ligne de commande. Parfait pour les pipelines CI/CD, les vérifications de qualité des données programmées, ou les tâches de validation rapides.
Explorez vos données
# Obtenez un aperçu rapide de vos données
pb preview small_table
# Aperçu des données depuis des URLs GitHub
pb preview "https://github.com/user/repo/blob/main/data.csv"
# Vérifiez les valeurs manquantes dans les fichiers Parquet
pb missing data.parquet
# Générez des résumés de colonnes depuis des connexions de base de données
pb scan "duckdb:///data/sales.ddb::customers"Exécutez des validations essentielles
# Exécuter la validation depuis un fichier de configuration YAML
pb run validation.yaml
# Exécuter la validation depuis un fichier Python
pb run validation.py
# Vérifiez les lignes dupliquées
pb validate small_table --check rows-distinct
# Validez les données directement depuis GitHub
pb validate "https://github.com/user/repo/blob/main/sales.csv" --check col-vals-not-null --column customer_id
# Vérifiez l'absence de valeurs nulles dans les jeux de données Parquet
pb validate "data/*.parquet" --check col-vals-not-null --column a
# Extrayez les données défaillantes pour le débogage
pb validate small_table --check col-vals-gt --column a --value 5 --show-extractIntégrez avec CI/CD
# Utilisez les codes de sortie pour l'automatisation dans les validations en une ligne (0 = réussite, 1 = échec)
pb validate small_table --check rows-distinct --exit-code
# Exécuter les flux de travail de validation avec des codes de sortie
pb run validation.yaml --exit-code
pb run validation.py --exit-codeBesoin de données de test pour vos workflows de validation ? La fonction generate_dataset() crée des données synthétiques réalistes et adaptées à la locale, basées sur des définitions de schéma. C'est très utile pour développer des pipelines sans données de production, exécuter des tests CI/CD avec des scénarios reproductibles, ou prototyper des workflows avant que les données de production ne soient disponibles.
import pointblank as pb
# Définir un schéma avec des contraintes de champs
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"]),
)
# Générer 10 lignes de données de test réalistes
data = pb.generate_dataset(schema, n=10, seed=23)
pb.preview(data)Le générateur prend en charge une génération de données sophistiquée avec ces capacités :
- Données réalistes avec presets : Utilisez des presets intégrés comme
"name","email","address","phone", etc. - Chaînes user agent : Générez des chaînes user agent de navigateur très variées et réalistes à partir de 17 catégories de navigateurs avec plus de 42 000 combinaisons uniques
- Support de 100 pays : Générez des données spécifiques à la locale (par ex.,
country="DE"pour des adresses allemandes) - Contraintes de champs : Contrôlez les plages, patterns, unicité et valeurs autorisées
- Formats de sortie multiples : Retourne des DataFrames Polars par défaut, mais supporte aussi Pandas (
output="pandas") ou dictionnaires (output="dict")
- Flux de travail de validation complet : De l'accès aux données à la validation jusqu'au reporting dans un seul pipeline
- Conçu pour la collaboration : Partagez les résultats avec vos collègues grâce à des rapports interactifs ben stylés
- Sorties pratiques : Obtenez exactement ce que vous avez besoin: comptages, extraits, résumés ou rapports complets
- Déploiement flexible : Utilisez-le dans des notebooks, des scripts ou des pipelines de données
- Génération de données synthétiques : Créez des données de test réalistes avec plus de 30 presets, chaînes user agent, formatage adapté aux locales, et support de 100 pays
- Personnalisable : Adaptez les étapes de validation et les rapports selon vos besoins spécifiques
- Internationalisation : Les rapports peuvent être générés dans 40 langues, incluant l'anglais, l'espagnol, le français et l'allemand
Visitez notre site de documentation pour:
On aimerait avoir de vos nouvelles! Connectez-vous avec nous:
- GitHub Issues pour les bogues et les demandes de fonctionnalités
- Serveur Discord pour jaser et obtenir de l'aide
- Directives de contribution si vous souhaitez aider à améliorer Pointblank
Vous pouvez installer Pointblank en utilisant pip:
pip install pointblankVous pouvez également l'installer depuis Conda-Forge en utilisant:
conda install conda-forge::pointblankSi vous n'avez pas Polars ou Pandas d'installé, vous devrez en installer un pour utiliser Pointblank.
pip install "pointblank[pl]" # Installer Pointblank avec Polars
pip install "pointblank[pd]" # Installer Pointblank avec PandasPour utiliser Pointblank avec DuckDB, MySQL, PostgreSQL ou SQLite, installez Ibis avec le backend approprié:
pip install "pointblank[duckdb]" # Installer Pointblank avec Ibis + DuckDB
pip install "pointblank[mysql]" # Installer Pointblank avec Ibis + MySQL
pip install "pointblank[postgres]" # Installer Pointblank avec Ibis + PostgreSQL
pip install "pointblank[sqlite]" # Installer Pointblank avec Ibis + SQLitePointblank utilise Narwhals pour travailler avec les DataFrames Polars et Pandas, et s'intègre avec Ibis pour la prise en charge des bases de données et des formats de fichiers. Cette architecture fournit une API cohérente pour valider les données tabulaires de diverses sources.
Il y a plusieurs façons de contribuer au développement continu de Pointblank. Certaines contributions peuvent être simples (comme corriger des coquilles, améliorer la documentation, signaler des problèmes pour des demandes de fonctionnalités, etc.) et d'autres peuvent demander plus de temps (comme répondre aux questions et soumettre des PRs avec des changements de code). Sachez juste que toute aide que vous pouvez apporter serait vraiment appréciée!
S'il vous plaît, jetez un coup d'œil aux directives de contribution pour des informations sur comment commencer.
On travaille activement à l'amélioration de Pointblank avec:
- Des méthodes de validation supplémentaires pour des vérifications complètes de la qualité des données
- Des capacités avancées de journalisation (logging)
- Des actions de messagerie (Slack, courriel) pour les dépassements de seuil
- Des suggestions de validation alimentées par LLM et génération de dictionnaire de données
- Configuration JSON/YAML pour la portabilité des pipelines
- Utilitaire CLI pour la validation depuis la ligne de commande
- Support et certification élargis des backends
- Documentation et exemples de haute qualité
Si vous avez des idées de fonctionnalités ou d'améliorations, gênez-vous pas pour les partager avec nous! On cherche toujours des façons d'améliorer Pointblank.
Veuillez noter que le projet Pointblank est publié avec un code de conduite pour les contributeurs.
En participant à ce projet, vous acceptez d'en respecter les termes.
Pointblank est sous licence MIT.
© Posit Software, PBC.
Ce projet est principalement maintenu par Rich Iannone. D'autres auteurs peuvent occasionnellement aider avec certaines de ces tâches.





