Skip to main content

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🕵️.

Installationcheck

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.18
  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.18
    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 configuring dbtective is shown at the config documentation

Example

  1. Create a dbtective.yml config file in the root of your dbt project. For example:
manifest_tests:
  - name: "models_must_have_description"
    type: "has_description"
    severity: "error"
    applies_to: ["models", "sources"]
    description: " models and sources must have a description."

  - name: "naming_convention"
    type: "name_convention"
    description: "Everything must follow the naming convention."
    pattern: "snake_case"

 - name: "all_marts_must_be_tagged"
    type: "has_tags"
    severity: "warning"
    applies_to: ["models"]
    tags:
      - "mart"
    description: "All marts must be tagged with 'mart'"
  1. Run dbtective in 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"

Contributing

We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation, your help makes dbtective better for everyone.

Quick start: Install just command line runner & take a look at the commands in the justfile.

To build and run on the example project (./dbt_project using config ./dbt_project/dbtective.yml) use:

just run
just run-verbose

For detailed contributing guidelines, development setup, and coding standards, please see CONTRIBUTING.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dbtective-0.1.18-py3-none-win_amd64.whl (1.7 MB view details)

Uploaded Python 3Windows x86-64

dbtective-0.1.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

dbtective-0.1.18-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

dbtective-0.1.18-py3-none-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

dbtective-0.1.18-py3-none-macosx_10_12_x86_64.whl (1.9 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file dbtective-0.1.18-py3-none-win_amd64.whl.

File metadata

  • Download URL: dbtective-0.1.18-py3-none-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","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

Hashes for dbtective-0.1.18-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b4072b120ce0d94e8b91137b55cedbfbe52d9a359cd4e1bab36e48d81ef641c4
MD5 bb80156473af2e5aa2973d5a9764e80d
BLAKE2b-256 b12c42bab5311369e982b9c7fa15c4fc9fca6d8ea991cb6f59550c9da17454fd

See more details on using hashes here.

File details

Details for the file dbtective-0.1.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: dbtective-0.1.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","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

Hashes for dbtective-0.1.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f2a2e2f3027d72f8f82a951d61e9a6dd255ba72879f368fc0e461a0848f122b
MD5 58848e1f5e15e2564e5f07e1bda0d8ca
BLAKE2b-256 3f75ecb54999234d247015c13655700ab3ba3b73cb919b67390539f7b6cb309a

See more details on using hashes here.

File details

Details for the file dbtective-0.1.18-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: dbtective-0.1.18-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.16 {"installer":{"name":"uv","version":"0.9.16","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

Hashes for dbtective-0.1.18-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b24ee1f90679aef7a9b866a8c464dc2f1e2bfa86d2a9df2a02b278c45a4f5c4f
MD5 a9ba28d786cf12b8ca741c43dd375b6f
BLAKE2b-256 1cf963fc5187897a121fe8057073b001cb671251c955022befba45ce81d97ad9

See more details on using hashes here.

File details

Details for the file dbtective-0.1.18-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: dbtective-0.1.18-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","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

Hashes for dbtective-0.1.18-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de2d3a8d86d29e73aac60fe3c84134f6c71d97f774da787edf26d53f09d49d33
MD5 67ae062412efdbc39fd2ab7f07fbbdce
BLAKE2b-256 75c6ecc22e28b3b23fc544931b89c12c05491715ed8dfe6a12f0febe7170d4fd

See more details on using hashes here.

File details

Details for the file dbtective-0.1.18-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: dbtective-0.1.18-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","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

Hashes for dbtective-0.1.18-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 01b35bc5b89b70c10a07dc8401075aeda9ec66083dc3a843443ddd51ff141eb6
MD5 dd2752864630ad214cf4eab25c0fe713
BLAKE2b-256 5a67ddacc0561ea4c9381e2ec58fb42fd4c61ff0ae8e04abd7f61c28c4755396

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page