Skip to content

Latest commit

 

History

History
437 lines (321 loc) · 18.4 KB

File metadata and controls

437 lines (321 loc) · 18.4 KB

Datavalidatie toolkit voor het beoordelen en monitoren van datakwaliteit

Python Versions PyPI PyPI Downloads Conda Version License

CI Build Codecov branch Repo Status Documentation

Contributors Discord Contributor Covenant

Pointblank hanteert een andere benadering voor datakwaliteit. Het hoeft geen vervelende technische taak te zijn. Het kan juist een proces worden dat gericht is op duidelijke communicatie tussen teamleden. Terwijl andere validatiebibliotheken zich uitsluitend richten op het vangen van fouten, blinkt Pointblank uit in zowel het vinden van problemen als het delen van inzichten. Onze mooie, aanpasbare rapporten maken van validatieresultaten gesprekken met belanghebbenden, waardoor datakwaliteitsproblemen onmiddellijk begrijpelijk en uitvoerbaar worden voor je hele team.

Begin in minuten, niet in uren. Pointblank's AI-aangedreven DraftValidation functie analyseert je data en stelt automatisch intelligente validatieregels voor. Dus je hoeft niet meer naar een leeg validatiescript te staren en je af te vragen waar je moet beginnen. Pointblank kan je datakwaliteitsreis een kickstart geven zodat je je kunt concentreren op wat er het meest toe doet.

Of je nu een data scientist bent die snel datakwaliteitsresultaten moet communiceren, een data engineer die robuuste pipelines bouwt, of een analist die datakwaliteitsresultaten presenteert aan zakelijke belanghebbenden, Pointblank helpt je datakwaliteit te veranderen van een nagedachte in een concurrentievoordeel.

Aan de slag met AI-aangedreven Validatie Ontwerp

De DraftValidation klasse gebruikt LLM's om je data te analyseren en een volledig validatieplan te genereren met intelligente suggesties. Dit helpt je snel te beginnen met datavalidatie of een nieuw project op te starten.

import pointblank as pb

# Laad je data
data = pb.load_dataset("game_revenue")              # Een voorbeeld dataset

# Gebruik DraftValidation om een validatieplan te genereren
pb.DraftValidation(data=data, model="anthropic:claude-opus-4-6")

De uitvoer is een volledig validatieplan met intelligente suggesties gebaseerd op je data:

import pointblank as pb

# Het validatieplan
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

Kopieer, plak en pas het gegenereerde validatieplan aan naar je behoeften.

Aaneenschakelbare Validatie API

Pointblank's aaneenschakelbare API maakt validatie eenvoudig en leesbaar. Hetzelfde patroon geldt altijd: (1) begin met Validate, (2) voeg validatiestappen toe, en (3) eindig met interrogate().

import pointblank as pb

validation = (
   pb.Validate(data=pb.load_dataset(dataset="small_table"))
   .col_vals_gt(columns="d", value=100)             # Valideer waarden > 100
   .col_vals_le(columns="c", value=5)               # Valideer waarden <= 5
   .col_exists(columns=["date", "date_time"])       # Controleer of kolommen bestaan
   .interrogate()                                   # Uitvoeren en resultaten verzamelen
)

# Krijg het validatierapport in de REPL met:
validation.get_tabular_report().show()

# Vanuit een notebook gebruik je simpelweg:
validation

Zodra je een ondervraagd validation object hebt, kun je verschillende methoden gebruiken om inzichten te extraheren zoals:

  • gedetailleerde rapporten krijgen voor individuele stappen om te zien wat er mis ging
  • tabellen filteren gebaseerd op validatieresultaten
  • problematische data extraheren voor debugging

Waarom kiezen voor Pointblank?

  • Werkt met je bestaande stack: Integreert naadloos met Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake en meer!
  • Mooie, interactieve rapporten: Kristalheldere validatieresultaten die problemen markeren en helpen bij het communiceren van datakwaliteit
  • Samenvoegbare validatiepipeline: Schakel validatiestappen aaneen tot een complete datakwaliteitsworkflow
  • Drempelgebaseerde waarschuwingen: Stel 'waarschuwing', 'fout' en 'kritiek' drempels in met aangepaste acties
  • Praktische uitvoer: Gebruik validatieresultaten om tabellen te filteren, problematische data te extraheren of downstream processen te triggeren

Praktijkvoorbeeld

import pointblank as pb
import polars as pl

# Laad je data
sales_data = pl.read_csv("sales_data.csv")

# Maak een uitgebreide validatie
validation = (
   pb.Validate(
      data=sales_data,
      tbl_name="sales_data",           # Naam van de tabel voor rapportage
      label="Praktijkvoorbeeld",       # Label voor de validatie, verschijnt in rapporten
      thresholds=(0.01, 0.02, 0.05),   # Stel drempels in voor waarschuwingen, fouten en kritieke problemen
      actions=pb.Actions(              # Definieer acties voor elke drempeloverschrijding
         critical="Groot datakwaliteitsprobleem gevonden in stap {step} ({time})."
      ),
      final_actions=pb.FinalActions(   # Definieer eindacties voor de gehele validatie
         pb.send_slack_notification(
            webhook_url="https://hooks.slack.com/services/your/webhook/url"
         )
      ),
      brief=True,                      # Voeg automatisch gegenereerde samenvattingen toe voor elke stap
      lang="nl",
   )
   .col_vals_between(            # Controleer numerieke bereiken met precisie
      columns=["price", "quantity"],
      left=0, right=1000
   )
   .col_vals_not_null(           # Zorg dat kolommen die eindigen op '_id' geen null-waarden hebben
      columns=pb.ends_with("_id")
   )
   .col_vals_regex(              # Valideer patronen met regex
      columns="email",
      pattern="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
   )
   .col_vals_in_set(             # Controleer categorische waarden
      columns="status",
      set=["pending", "shipped", "delivered", "returned"]
   )
   .conjointly(                  # Combineer meerdere voorwaarden
      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()
)
Groot datakwaliteitsprobleem gevonden in stap 7 (2025-04-16 15:03:04.685612+00:00).
# Krijg een HTML-rapport dat je kunt delen met je team
validation.get_tabular_report().show("browser")
# Krijg een rapport van falende records van een specifieke stap
validation.get_step_report(i=3).show("browser")  # Krijg falende records van stap 3

YAML-configuratie

Voor teams die draagbare, versiegecontroleerde validatieworkflows nodig hebben, ondersteunt Pointblank YAML-configuratiebestanden. Dit maakt het gemakkelijk om validatielogica te delen tussen verschillende omgevingen en teamleden, zodat iedereen op dezelfde lijn zit.

validation.yaml

validate:
  data: small_table
  tbl_name: "small_table"
  label: "Aan de slag validatie"

steps:
  - col_vals_gt:
      columns: "d"
      value: 100
  - col_vals_le:
      columns: "c"
      value: 5
  - col_exists:
      columns: ["date", "date_time"]

Voer de YAML-validatie uit

import pointblank as pb

# Voer validatie uit vanuit YAML-configuratie
validation = pb.yaml_interrogate("validation.yaml")

# Krijg de resultaten net zoals elke andere validatie
validation.get_tabular_report().show()

Deze benadering is perfect voor:

  • CI/CD-pipelines: Bewaar validatieregels samen met je code
  • Teamsamenwerking: Deel validatielogica in een leesbaar formaat
  • Omgevingsconsistentie: Gebruik dezelfde validatie in ontwikkeling, staging en productie
  • Documentatie: YAML-bestanden dienen als levende documentatie van je datakwaliteitsvereisten

Commandoregelinterface (CLI)

Pointblank bevat een krachtig CLI-hulpprogramma genaamd pb waarmee je datavalidatieworkflows direct vanaf de commandoregel kunt uitvoeren. Perfect voor CI/CD-pipelines, geplande datakwaliteitscontroles of snelle validatietaken.

Verken je data

# Krijg een snelle preview van je data
pb preview small_table

# Preview data van GitHub URLs
pb preview "https://github.com/user/repo/blob/main/data.csv"

# Controleer op ontbrekende waarden in Parquet-bestanden
pb missing data.parquet

# Genereer kolomsamenvattingen van databaseverbindingen
pb scan "duckdb:///data/sales.ddb::customers"

Voer essentiële validaties uit

# Voer validatie uit vanuit YAML-configuratiebestand
pb run validation.yaml

# Voer validatie uit vanuit Python-bestand
pb run validation.py

# Controleer op dubbele rijen
pb validate small_table --check rows-distinct

# Valideer data direct van GitHub
pb validate "https://github.com/user/repo/blob/main/sales.csv" --check col-vals-not-null --column customer_id

# Verifieer geen null-waarden in Parquet-datasets
pb validate "data/*.parquet" --check col-vals-not-null --column a

# Extraheer falende data voor debugging
pb validate small_table --check col-vals-gt --column a --value 5 --show-extract

Integreer met CI/CD

# Gebruik exit-codes voor automatisering in eenregelige validaties (0 = slagen, 1 = falen)
pb validate small_table --check rows-distinct --exit-code

# Voer validatieworkflows uit met exit-codes
pb run validation.yaml --exit-code
pb run validation.py --exit-code

Genereer Realistische Testdata

Testdata nodig voor je validatieworkflows? De functie generate_dataset() creëert realistische, locale-bewuste synthetische data op basis van schemadefinities. Zeer nuttig voor het ontwikkelen van pipelines zonder productiedata, het uitvoeren van CI/CD-tests met reproduceerbare scenario's, of het prototypen van workflows voordat productiedata beschikbaar is.

import pointblank as pb

# Definieer een schema met veldbeperkingen
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"]),
)

# Genereer 10 rijen realistische testdata
data = pb.generate_dataset(schema, n=10, seed=23)

pb.preview(data)

De generator ondersteunt geavanceerde datageneratie met deze mogelijkheden:

  • Realistische data met presets: Gebruik ingebouwde presets zoals "name", "email", "address", "phone", enz.
  • User agent strings: Genereer zeer gevarieerde, realistische browser user agent strings uit 17 browsercategorieën met meer dan 42.000 unieke combinaties
  • Ondersteuning voor 100 landen: Genereer locale-specifieke data (bijv. country="DE" voor Duitse adressen)
  • Veldbeperkingen: Beheer bereiken, patronen, uniciteit en toegestane waarden
  • Meerdere uitvoerformaten: Retourneert standaard Polars DataFrames, maar ondersteunt ook Pandas (output="pandas") of dictionaries (output="dict")

Kenmerken die Pointblank onderscheiden

  • Complete validatieworkflow: Van datatoegang tot validatie tot rapportage in één pipeline
  • Gebouwd voor samenwerking: Deel resultaten met collega's via mooie interactieve rapporten
  • Praktische uitvoer: Krijg precies wat je nodig hebt: aantallen, extracten, samenvattingen of volledige rapporten
  • Flexibele implementatie: Gebruik in notebooks, scripts of datapipelines
  • Synthetische datageneratie: Creëer realistische testdata met meer dan 30 presets, user agent strings, locale-bewuste opmaak en ondersteuning voor 100 landen
  • Aanpasbaar: Stem validatiestappen en rapportage af op jouw specifieke behoeften
  • Internationalisatie: Rapporten kunnen worden gegenereerd in 40 talen, waaronder Engels, Spaans, Frans en Duits

Documentatie en voorbeelden

Bezoek onze documentatiesite voor:

Word lid van de gemeenschap

We horen graag van je! Verbind met ons:

Installatie

Je kunt Pointblank installeren met pip:

pip install pointblank

Je kunt Pointblank ook installeren van Conda-Forge door:

conda install conda-forge::pointblank

Als je Polars of Pandas niet hebt geïnstalleerd, moet je er één installeren om Pointblank te gebruiken.

pip install "pointblank[pl]" # Installeer Pointblank met Polars
pip install "pointblank[pd]" # Installeer Pointblank met Pandas

Om Pointblank te gebruiken met DuckDB, MySQL, PostgreSQL of SQLite, installeer je Ibis met de juiste backend:

pip install "pointblank[duckdb]"   # Installeer Pointblank met Ibis + DuckDB
pip install "pointblank[mysql]"    # Installeer Pointblank met Ibis + MySQL
pip install "pointblank[postgres]" # Installeer Pointblank met Ibis + PostgreSQL
pip install "pointblank[sqlite]"   # Installeer Pointblank met Ibis + SQLite

Technische details

Pointblank gebruikt Narwhals om te werken met Polars en Pandas DataFrames, en integreert met Ibis voor database- en bestandsformaatondersteuning. Deze architectuur biedt een consistente API voor het valideren van tabulaire data uit verschillende bronnen.

Bijdragen aan Pointblank

Er zijn veel manieren om bij te dragen aan de voortdurende ontwikkeling van Pointblank. Sommige bijdragen kunnen eenvoudig zijn (zoals typefouten corrigeren, documentatie verbeteren, problemen melden voor functieverzoeken of bugs, enz.) en andere vereisen mogelijk meer tijd en zorg (zoals vragen beantwoorden en PR's indienen met codewijzigingen). Weet dat alles wat je kunt doen om te helpen zeer gewaardeerd wordt!

Lees de bijdragerichtlijnen voor informatie over hoe je kunt beginnen.

Roadmap

We werken actief aan het verbeteren van Pointblank met:

  1. Aanvullende validatiemethoden voor uitgebreide datakwaliteitscontroles
  2. Geavanceerde logmogelijkheden
  3. Berichten-acties (Slack, e-mail) voor drempeloverschrijdingen
  4. LLM-aangedreven validatiesuggesties en datawoordenboekgeneratie
  5. JSON/YAML-configuratie voor pipelineportabiliteit
  6. CLI-hulpprogramma voor validatie vanaf de commandoregel
  7. Uitgebreide backend-ondersteuning en certificering
  8. Hoogwaardige documentatie en voorbeelden

Als je ideeën hebt voor functies of verbeteringen, aarzel dan niet om ze met ons te delen! We zijn altijd op zoek naar manieren om Pointblank beter te maken.

Gedragscode

Houd er rekening mee dat het Pointblank-project wordt uitgebracht met een gedragscode voor bijdragers.
Door deel te nemen aan dit project ga je ermee akkoord je aan de voorwaarden te houden.

📄 Licentie

Pointblank is gelicentieerd onder de MIT-licentie.

© Posit Software, PBC.

🏛️ Bestuur

Dit project wordt primair onderhouden door Rich Iannone. Andere auteurs helpen soms met enkele van deze taken.