Skip to main content

Feature catalog for dbt projects, built for ML teams.

Project description

dbt-features logo

dbt-features

Feature catalog for dbt projects, built for ML teams.

tests demo python coverage license

Live demo · Docs

Catalog index showing feature groups grouped by entity, with faceted filters for type, lifecycle, freshness, and owner


Install

pip install dbt-features

For warehouse enrichment (freshness, row counts, null %), install the extra for your warehouse:

pip install 'dbt-features[duckdb]'       # local / dbt-duckdb
pip install 'dbt-features[postgres]'     # Postgres
pip install 'dbt-features[redshift]'     # Redshift
pip install 'dbt-features[snowflake]'    # Snowflake
pip install 'dbt-features[bigquery]'     # BigQuery

Requires Python 3.10+. The base install does not depend on dbt-core.

Quickstart

Try it with no setup - bundled sample data, served on a free port:

dbt-features demo

On your dbt project:

dbt parse
dbt-features build --connection my_profile --output ./catalog
dbt-features serve --output ./catalog

In CI, gate on the metadata with the linter:

dbt-features lint --strict                       # fail on errors and warnings
dbt-features lint --entity-catalog entities.yml  # also enforce entity names

For production (with type inference and correct schemas):

dbt docs generate                              # populates catalog.json with column types
dbt-features build \
    --manifest target/manifest.json \
    --catalog target/catalog.json \
    --connection my_profile --target prod \
    --output ./catalog

See Production setup for details.

What it does

  • Reads your dbt manifest and finds models marked is_feature_table: true.
  • Renders a static HTML site: feature groups, features, lineage, ML model consumers.
  • With --connection, pulls freshness, row counts, null %, and cardinality from the warehouse.

Read-only. No backend, no database.

Python API

Downstream tools can build on the parsed catalog instead of re-reading manifest.json:

from dbt_features import parse_project

catalog = parse_project("path/to/dbt/project")
for group in catalog.feature_groups:
    for feature in group.features:
        print(feature.name, feature.consumers_derived, feature.consumers_declared)

Stability: parse_project, Catalog, FeatureGroup, Feature, ExposureInfo, and LineageRef (all re-exported from dbt_features) are the public, provisional surface. They are intended to be stable but are not yet semver-locked — the resolved data model is still settling as the linter (v0.5) and column-level lineage (v0.6) land, so expect only additive changes, called out in the changelog, until it freezes at v0.6. Anything prefixed _, the renderer/enrichment internals, and the HTML layout are internal and may change at any time. Feature.used_by is deprecated in favour of consumers_derived / consumers_declared and will be removed in v0.6.

Docs

Development

git clone https://github.com/gauthierpiarrette/dbt-features
cd dbt-features
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest

License

Apache 2.0. Not affiliated with dbt Labs.

Project details


Download files

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

Source Distribution

dbt_features-0.5.2.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

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

dbt_features-0.5.2-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file dbt_features-0.5.2.tar.gz.

File metadata

  • Download URL: dbt_features-0.5.2.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dbt_features-0.5.2.tar.gz
Algorithm Hash digest
SHA256 d8a56b52d6b79ec6592c549fdaffd9b911f3d34adece45f2b38ae4915d6b4ba7
MD5 f37a645d109dce911ddff75a0c529d87
BLAKE2b-256 bc5b154275807baecb6f03c2c494532036867752ead23ddd44d876630c1648f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbt_features-0.5.2.tar.gz:

Publisher: release.yml on gauthierpiarrette/dbt-features

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dbt_features-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: dbt_features-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dbt_features-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 247ec0f46dec50b1274d57258b7e0f71a13e914177bedc9227e890a9d1704e51
MD5 8b4f499cc76ae3225606985524b842af
BLAKE2b-256 64d3c5fa0291a02e5f8246c11653dd96c329669508f3ab849173f129625c6ace

See more details on using hashes here.

Provenance

The following attestation bundles were made for dbt_features-0.5.2-py3-none-any.whl:

Publisher: release.yml on gauthierpiarrette/dbt-features

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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