A lightweight data quality CLI tool
Project description
🛡️ Qualidator
A modern CLI for managing SQL-based data quality checks — now with connector setup.
📌 Overview
Qualidator is a command-line tool that helps you define, manage, and store SQL-based data quality validations.
It can set up a connector to your data source and organize validation queries in a .qualidations folder for easy reuse and version control.
With Qualidator, you can:
- 📂 Initialize a validations project
- 🔌 Configure a connector (Databricks, Snowflake, Postgres, or None)
- ➕ Add a variety of built-in validation checks
- 🗑 Remove one or all validations
- 📊 View project status and existing validations
- 💥 Destroy the project
🚀 Installation
pip install qualidator
⚡ Usage
Run qualidator --help to see available commands:
qualidator --help
| Command | Description |
|---|---|
init |
Initialize .qualidations and optionally set up a data connector |
destroy |
Delete the .qualidations folder (use --force for full removal) |
add |
Add a validation |
remove |
Remove a validation or all validations |
status |
Show project status and validations |
run |
Execute validations and show results |
🛠 Examples
1️⃣ Initialize and set up connector
qualidator init
📦 Creates .qualidations, then asks for a data provider:
- Databricks
- Snowflake
- Postgres
- None
If you pick one of the first three, it prompts for credentials and saves them in:
.qualidations/config.json
2️⃣ Add validations
qualidator add --name is_not_null
Please enter the column name to check for NOT NULL: customer_id
✔ Will check that column "customer_id" is not null.
Supported validations:
| Validation | Description |
|---|---|
is_not_null |
Checks that column values are NOT NULL |
has_no_duplicates |
Checks that the column has no duplicate values |
column_values_are_unique |
Checks that all values in the column are unique |
column_unique_value_count_is_between |
Checks that the number of unique values in the column is between given bounds |
column_value_frequency_is_between |
Checks that the frequency of each distinct value in the column is within given min and max |
no_empty_strings |
Checks that the column contains no empty string values |
primary_key_check |
Checks that the column can serve as a primary key (unique and not null) |
distinct_ratio_is_above |
Checks that the ratio of distinct values in the column is at least the given threshold |
column_max_is_between |
Checks that the column's MAX value is between given bounds |
column_min_is_between |
Checks that the column's MIN value is between given bounds |
column_sum_is_between |
Checks that the column's SUM value is between given bounds |
column_mean_is_between |
Checks that the column's MEAN value is between given bounds |
column_standard_deviation_is_between |
Checks that the column's standard deviation is between given bounds |
column_values_are_between |
Checks that all values in the column are between given bounds |
column_has_no_nulls |
Checks that the column contains no NULL values |
column_has_values_greater_than |
Checks that all values in the column are greater than a given threshold |
column_median_is_between |
Checks that the median value of the column is between given bounds |
column_non_negative |
Checks that all values in the column are non-negative |
table_row_count_is_between |
Checks that the table's row count is between given bounds |
table_row_count_equals |
Checks that the table's row count equals a given expected count |
3️⃣ Check status
qualidator status
============================================================
📋 VALIDATIONS IN YOUR PROJECT
------------------------------------------------------------
1. customer_id_is_not_null
2. email_column_values_are_unique
------------------------------------------------------------
✅ Total: 2 validation(s) ready to go!
💡 You can remove with:
qualidator remove --name your_validation_name
============================================================
4️⃣ Remove validations
Remove all:
qualidator remove --all
Remove one:
qualidator remove --name email_column_values_are_unique
5️⃣ Run validations
Run all validations:
qualidator run --all
Run a single validation:
qualidator run --name my_catalog_my_schema_my_table_customer_id_is_not_null
6️⃣ Destroy the project
qualidator destroy --force
This deletes .qualidations entirely (including config and validations).
📂 Project Structure
qualidator/
│
├── connectors/
│ └── databricks.py
├── inspectors/
│ ├── uniq.py
│ ├── numeric.py
├── __init__.py
├── cli.py
├── validations_registry.py
└── README.md
🤝 Contributing
Pull requests and ideas are welcome! Open an issue if you have suggestions for new validation types or integrations.
📜 License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qualidator-0.3.0.tar.gz.
File metadata
- Download URL: qualidator-0.3.0.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e20b625626b6825ef0267cef8aeb24886ca12a410480ce12a0e27eb65e11dcec
|
|
| MD5 |
9b7633a42a077dcc772574b9af22ba77
|
|
| BLAKE2b-256 |
c47adac66f8940f25409bcb67a4ffbe923aea58379d1007a744fbc108c9a2b49
|
File details
Details for the file qualidator-0.3.0-py3-none-any.whl.
File metadata
- Download URL: qualidator-0.3.0-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a450ae880ef22515bbe4ca369379884fc1b9527ad80bcf220725f2cb494146f2
|
|
| MD5 |
0eb2e9160cd2a07561fdcc358a010e16
|
|
| BLAKE2b-256 |
cd131ee27b02a22643e58fb9612922605e65d943980cfad0cbfd07bc542b4b52
|