Skip to main content

DQBench

The standard benchmark for data quality and validation tools.

PyPI Python 3.11+ Tests License: MIT

The ImageNet of data quality — standardized benchmarks for validation tools.

Why DQBench?

Every data validation tool claims to be the best. But there's no standard way to compare them. DQBench fixes that with:

  • Three difficulty tiers — basics, realistic, and adversarial
  • Ground truth — every planted issue is documented with affected rows
  • Fair scoring — recall AND precision matter (no gaming by flagging everything)
  • One number — DQBench Score (0-100) for easy comparison
  • 20-line integration — implement one method to benchmark any tool

Install

pip install dqbench

Quick Start

# Run with built-in GoldenCheck adapter
pip install goldencheck
dqbench run goldencheck

# Run with a custom adapter
dqbench run --adapter my_adapter.py

Tiers

Tier Rows Columns Domain Difficulty
1 — Basics 5,000 20 Customer DB Obvious errors, baseline
2 — Realistic 50,000 30 E-commerce Subtle issues + false positive traps
3 — Adversarial 100,000 50 Healthcare Encoding traps, semantic errors, cross-column logic

Each tier has columns WITH planted issues and columns WITHOUT (false positive traps). Tools that flag clean columns lose precision points.

Scoring

Metric Description
Recall % of planted-issue columns detected
Precision % of flagged columns that actually have issues
F1 Harmonic mean of recall and precision
FPR Clean columns incorrectly flagged (WARNING/ERROR only)
DQBench Score Tier1_F1 × 20% + Tier2_F1 × 40% + Tier3_F1 × 40%

Write Your Own Adapter

Implement one class to benchmark any tool:

from dqbench.adapters.base import DQBenchAdapter
from dqbench.models import DQBenchFinding
from pathlib import Path

class MyToolAdapter(DQBenchAdapter):
    @property
    def name(self) -> str:
        return "MyTool"

    @property
    def version(self) -> str:
        return "1.0.0"

    def validate(self, csv_path: Path) -> list[DQBenchFinding]:
        # Run your tool on the CSV
        # Return a list of DQBenchFinding objects
        return [
            DQBenchFinding(
                column="email",
                severity="error",      # "error", "warning", or "info"
                check="format",         # what kind of issue
                message="Invalid email format",
                confidence=0.9,         # optional, 0.0-1.0
            )
        ]

Then run:

dqbench run --adapter my_adapter.py

CLI Reference

Command Description
dqbench run <adapter> Run benchmark
dqbench run --adapter <path> Run with custom adapter file
dqbench run <adapter> --tier 2 Run specific tier only
dqbench run <adapter> --json JSON output
dqbench generate Generate/cache datasets
dqbench generate --force Regenerate datasets

Built-in Adapters

Adapter Tool Install
goldencheck GoldenCheck pip install goldencheck

Want to add your tool? See CONTRIBUTING.md.

Reproducibility

  • Datasets are generated deterministically (random.seed(42), stdlib only)
  • Canonical datasets committed as release artifacts
  • Version-locked: published benchmark versions are immutable

License

MIT


From the maker of GoldenCheck and GoldenMatch.

Release files for dqbench 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dqbench 1.0.0
File Size Uploaded
dqbench-1.0.0.tar.gz 47.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dqbench 1.0.0
File Interpreter ABI Platform
dqbench-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 82.0 kB

Release files / dqbench-1.0.0.tar.gz

Download URL dqbench-1.0.0.tar.gz
Size 47.2 kB
Tags Source
SHA-256 checksum
How to use checksums
57a51d21c1ea337b38737385b14462108b57d46adf541d9947283c4f1586f04d
BLAKE2b-256 checksum
How to use checksums
d667a4408bb4e5a3370f4ec7684065fb5a5bd40969f15b9e4ce6c8c3907f213a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release files / dqbench-1.0.0-py3-none-any.whl

Download URL dqbench-1.0.0-py3-none-any.whl
Size 34.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5e2a86b06c8802e207a37179f05db79380899e1a56e4643b8eda3dc900ae7ebd
BLAKE2b-256 checksum
How to use checksums
93281a98a98c28594f88e38beb5cf431a7f650ce6bc62db294ae4983e4bca20c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page