dbtective is a Rust-powered 'detective' for `dbt metadata` best practices.
Project description
🕵️ dbtective
dbtective is a Rust-powered 'detective' for dbt metadata best practices. As your dbt project grows, keeping metadata consistent and high-quality can become a real challenge.
Explore the full documentation or the possible checks.
[!WARNING] dbtective is currently in very early stages. Issues and commits are welcome, but don't rely on us yet!
dbtective makes it easy to spot and fix common issues, examples:
- Missing descriptions: Does every model and seed have a description?
- Column types: Are all columns explicitly typed?
- Ownership: Do all sources have an owner?
- Naming conventions: Are all marts following your team's naming standards?
We detect and enforce these rules in your cli, prek/pre-commit and CI/CD pipeline, so fast you will barely notice🕵️.
Installation
Pip (pypi)
pip install dbtective
uv
Install as a dev dependency:
uv add dbtective --dev
Homebrew
brew install feliblo/tap/dbtective
GitHub Actions
Run dbtective as part of your CI/CD pipeline. See the GitHub Actions documentation for more details.
- uses: feliblo/dbtective@v0.1.21
with:
config-file: "dbtective.yml"
entry-point: "."
only-manifest: "true"
verbose: "false"
prek/pre-commit
Prerequisite: dbtective is installed via one of the methods above.
We (currently) recommend using the --only-manifest flag with prek/pre-commit to avoid issues caused by catalog.json mismatches. For more details, see the explanation in the checks documentation.
Add the following to your .pre-commit-config.yaml.
repos:
- repo: https://github.com/feliblo/dbtective
rev: v0.1.21
hooks:
- id: dbtective-run
args: [--only-manifest]
And run
prek install
prek run --all-files
# or with pre-commit
pre-commit install
pre-commit run --all-files
Shell installer (macOS/Linux)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/feliblo/dbtective/releases/latest/download/dbtective-installer.sh | sh
PowerShell installer (Windows)
irm https://github.com/feliblo/dbtective/releases/latest/download/dbtective-installer.ps1 | iex
Binary download
Pre-built binaries for Linux, macOS, and Windows are available on the releases page.
Quickstart
All possible checks can be found in the checks documentation. Information about customizing dbtective is shown at the config documentation
- Create a
dbtective.ymlconfig file in the root of your dbt project by running:
More about the init (it also supports pyproject.toml or dbtective.toml) command is available in the init documentation.
dbtective init
Inspect the contents of the generated dbtective.yml file and modify it to fit your project's needs.
- (Optional) Generate the dbt manifest and catalog files if you haven't done so already. Most dbt commands automatically generate the
manifest.json, but if you want to ensure both files are up to date, run:
dbt compile
dbt docs generate
- Run
dbtectivein the root of your current directory or specify an entry point if your dbt_project is not located in the root/current drectory.
dbtective run
dbtective run --entry-point "my_dbt_project"
-
Review the output and fix any issues found.
-
(Optional) Integrate
dbtectiveinto your CI/CD pipeline or pre-commit hooks to automate checks on every commit and/or pull request.
Contributing
We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation, your help makes dbtective better for everyone.
For detailed contributing guidelines, development setup, and coding standards, please see the contributing documentation.
Acknowledgements
This project is heavily inspired dbt dbt-bouncer. It tries to improve certain aspects of the amazing work by pgoslatara, while giving me an opportunity to improve my Rust. More about the aspects we try to improve is available in our FAQ.
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 Distributions
Built Distributions
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 dbtective-0.1.26-py3-none-win_amd64.whl.
File metadata
- Download URL: dbtective-0.1.26-py3-none-win_amd64.whl
- Upload date:
- Size: 1.8 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
854dbfded87e09aaf0225d610cee7cb69f540b93cbad0e24573ec87c0fb1bc64
|
|
| MD5 |
d98a2b02664cd024f961c9a4ef4a955f
|
|
| BLAKE2b-256 |
83e26c585df811efac2a59529021b408f3bab87a54526da21b1bd79204738b19
|
File details
Details for the file dbtective-0.1.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dbtective-0.1.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.1 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fac90e422846151857454fc9964d850ec8fd9d321b68e7fadb7bc08a7669be2
|
|
| MD5 |
c3c200d8b6bfeeb204138bf5f668db18
|
|
| BLAKE2b-256 |
298465f70ee3c587a9f0c4319d3d7e373692f039174c323b5723464b9912ed8c
|
File details
Details for the file dbtective-0.1.26-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: dbtective-0.1.26-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 2.0 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97033e2f3040c069b368d3e4fe00f544bab9a67653fb51bb9ce52e2373076435
|
|
| MD5 |
03c4d8dc899ab709a00ebf588258d243
|
|
| BLAKE2b-256 |
7f6dc37305af1e7d0081c25955597e76b8dd32464d0011e467620aca79297f7b
|
File details
Details for the file dbtective-0.1.26-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: dbtective-0.1.26-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.9 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20a21cc8808830e4853a3ac3c52ea1a0a28b9097f1cb646bf248804233936e0c
|
|
| MD5 |
2e194fe849315a5c43852a8909a2e2fc
|
|
| BLAKE2b-256 |
37f63a9abeaf0a986b10e5a57dcdcb20f2a1d2c079bb0abf02bdef84c503aac9
|
File details
Details for the file dbtective-0.1.26-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: dbtective-0.1.26-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b85473c42249c150d2d8e63182b8adce4a03f36963dd4fd9f9b85d6b96e6d46
|
|
| MD5 |
5992ac8ca8203283d3c0d52c61c5b7ce
|
|
| BLAKE2b-256 |
19ec21a9cd3ba828652a29a1fb7473bd51ef5244b685ec9210ecc925d0f37652
|