Skip to main content

dbt-dqm

dbt tests tell you when data is wrong. When the same test runs again, it can be hard to tell which records are still affected, which ones returned, and what someone has already done about them. dbt-dqm turns selected failed rows into persistent, reviewable issues.

Choose the columns that identify a record, such as customer_id. dbt-dqm uses them to recognize the same issue across runs, even when other values change. It keeps the captured row, tracks when the issue appears, passes, or recurs, and preserves owner assignments and review notes. A local browser app lets reviewers triage the resulting backlog; CSV and Excel exports let you share it.

Use it for dbt data tests whose failures need follow-up at the record level. Your regular dbt workflow stays separate: the dedicated dbt-dqm run command enables and runs the tests you mark for DQM, captures their results, and updates the issue history.

Get started

Start with an existing dbt project, a configured profile, and a supported warehouse adapter. dbt-dqm has two installations: the dbt package supplies warehouse models and macros; the Python package supplies the dbt-dqm command and local review app. Use matching 0.2.1 versions.

  1. Add the dbt package to your project's packages.yml, then install it:

    packages:
      - git: "https://github.com/a-adamovich/dbt-dqm.git"
        revision: v0.2.1
    
    dbt deps
    

    dbt Hub registration is pending. Use the Git revision above until the Hub listing and installation are verified.

  2. In the Python environment that runs your dbt project, install the command with the adapter you use:

    python -m pip install 'dbt-dqm[bigquery]==0.2.1'
    # or: python -m pip install 'dbt-dqm[postgres]==0.2.1'
    

    The Python command supports Python 3.11–3.14; the dbt package supports dbt Core 1.11–1.12. See installation and compatibility for adapter-specific requirements.

  3. Add a singular test such as tests/customers_missing_email.sql. Each returned row is a failure. granularity names the columns that identify the issue; the other columns are captured as values that can change over time.

    {{ config(
        enabled=var('dqm_enabled', false),
        store_failures=true,
        limit=100,
        meta={'dbt_dqm': {
            'granularity': ['customer_id'],
            'owner': 'customer_data'
        }}
    ) }}
    
    select customer_id, email
    from {{ ref('customers') }}
    where email is null
    

    Set retention periods for the captured execution and event history in dbt_project.yml:

    vars:
      dbt_dqm_retention_days: 30
      dbt_dqm_event_retention_days: 90
    

    The test is disabled during ordinary dbt commands. dbt-dqm run enables metadata-marked DQM tests for its own workflow. You can also configure generic tests and assign owners from a failure-row column; see test configuration.

  4. Build the upstream models as you normally would, then run the DQM workflow:

    dbt-dqm run
    

    The first run creates the tracking relations. Later runs update existing issues, archive issues whose tests conclusively pass, and recognize recurrences. A failing dbt test can make this command exit 1 after its failure evidence has been captured and reconciled. The completion line reports test outcomes, captured issues, and collections that reached their limit. Add --summary to see changes and active issues by owner. See running DQM for selection, deferral, summaries, and limit behavior.

Review the results

Run dbt-dqm app to open the local browser app. Sync the saved issues, assign owners, record a review verdict or notes, and use Apply and sync to submit edits. You can stage bulk changes and export filtered saved issues across pages as CSV or Excel. The app uses the same dbt project, profile, target, and naming variables as the command. See the review app guide for its controls and limits.

More guidance

dbt-dqm is Apache-2.0 open source. See the roadmap and license.

Metadata

Release files for dbt-dqm 0.2.1

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

Source distribution (sdist)

Source distribution for dbt-dqm 0.2.1
File Size Uploaded
dbt_dqm-0.2.1.tar.gz 522.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dbt-dqm 0.2.1
File Interpreter ABI Platform
dbt_dqm-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 603.5 kB

Release files / dbt_dqm-0.2.1.tar.gz

Download URL dbt_dqm-0.2.1.tar.gz
Size 522.4 kB
Tags Source
SHA-256 checksum
How to use checksums
98cbfed1ec309715a37d35aafb4f167ed6e8664772497d932a94f1f9102b88e6
BLAKE2b-256 checksum
How to use checksums
3bc4761b96541ef92de89a9fb76dbc4350e35ffd12409afb5245665ee74816ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.2 {"installer":{"name":"uv","version":"0.13.2","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}

Release files / dbt_dqm-0.2.1-py3-none-any.whl

Download URL dbt_dqm-0.2.1-py3-none-any.whl
Size 81.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4b3dc71677939af9c20e73cbea76499119595409b80de62fc5684f0040bbd5f
BLAKE2b-256 checksum
How to use checksums
399d7dcff5716b923a06bfb7af8946396d0684c988c661eb5b676c264cb0b39f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.2 {"installer":{"name":"uv","version":"0.13.2","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}
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