Skip to content

Latest commit

 

History

History
435 lines (319 loc) · 20.2 KB

File metadata and controls

435 lines (319 loc) · 20.2 KB

Boîte à outils de validation de données pour évaluer et surveiller la qualité des données

Python Versions PyPI PyPI Downloads Conda Version License

CI Build Codecov branch Repo Status Documentation

Contributors Discord Contributor Covenant

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.

Commencer avec la Validation Alimentée par IA

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()
)

validation

Copiez, collez et personnalisez le plan de validation généré selon vos besoins.

API de Validation Enchaînable

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:
validation

Une 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

Pourquoi choisir Pointblank?

  • 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

Exemple concret

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 3

Configuration YAML

Pour 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

Interface en Ligne de Commande (CLI)

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-extract

Inté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-code

Générer des Données de Test Réalistes

Besoin 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")

Caractéristiques qui distinguent Pointblank

  • 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

Documentation et exemples

Visitez notre site de documentation pour:

Rejoignez la communauté

On aimerait avoir de vos nouvelles! Connectez-vous avec nous:

Installation

Vous pouvez installer Pointblank en utilisant pip:

pip install pointblank

Vous pouvez également l'installer depuis Conda-Forge en utilisant:

conda install conda-forge::pointblank

Si 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 Pandas

Pour 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 + SQLite

Détails techniques

Pointblank 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.

Contribuer à Pointblank

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.

Feuille de route

On travaille activement à l'amélioration de Pointblank avec:

  1. Des méthodes de validation supplémentaires pour des vérifications complètes de la qualité des données
  2. Des capacités avancées de journalisation (logging)
  3. Des actions de messagerie (Slack, courriel) pour les dépassements de seuil
  4. Des suggestions de validation alimentées par LLM et génération de dictionnaire de données
  5. Configuration JSON/YAML pour la portabilité des pipelines
  6. Utilitaire CLI pour la validation depuis la ligne de commande
  7. Support et certification élargis des backends
  8. 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.

Code de conduite

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.

📄 Licence

Pointblank est sous licence MIT.

© Posit Software, PBC.

🏛️ Gouvernance

Ce projet est principalement maintenu par Rich Iannone. D'autres auteurs peuvent occasionnellement aider avec certaines de ces tâches.