DQBench
The standard benchmark for data quality and validation tools.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| dqbench-1.0.0.tar.gz | 47.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|