Socket
Book a DemoInstallSign in
Socket

dbterd

Package Overview
Dependencies
Maintainers
1
Versions
66
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dbterd

Generate the ERD-as-a-code from dbt artifacts

pipPyPI
Version
1.23.0
Maintainers
1

dbterd

Generate ERD-as-a-code from your dbt projects

dbterd logo

Transform your dbt artifact files or metadata into stunning Entity Relationship Diagrams using multiple formats: DBML, Mermaid, PlantUML, GraphViz, D2, and DrawDB

docs PyPI version python-cli License: MIT python codecov

dbterd stars

🎯 Entity Relationship Detection

dbterd intelligently detects entity relationships through:

  • 🧪 Test Relationships (default method)
  • 🏛️ Semantic Entities (use -a option)

For detailed configuration options, see our CLI References.

🎨 Supported Output Formats

FormatDescriptionUse Case
DBMLDatabase Markup LanguageInteractive web diagrams
MermaidMarkdown-friendly diagramsDocumentation, GitHub
PlantUMLText-based UMLTechnical documentation
GraphVizDOT graph descriptionComplex relationship visualization
D2Modern diagram scriptingBeautiful, customizable diagrams
DrawDBWeb-based database designerInteractive database design

🎯 Try the Quick Demo with DBML format!

🚀 Installation

pip install dbterd --upgrade

Verify Installation:

dbterd --version

[!TIP] For dbt-core users: It's highly recommended to keep dbt-artifacts-parser updated to the latest version to support newer dbt-core versions and their manifest/catalog json schemas:

pip install dbt-artifacts-parser --upgrade

Note: dbterd now automatically bypasses Pydantic validation errors by default, which helps with compatibility when using newer dbt artifact schemas.

⚙️ Configuration Files

Tired of typing the same CLI arguments repeatedly? dbterd supports configuration files to streamline your workflow!

# Initialize a configuration file
dbterd init

# Now just run with your saved settings
dbterd run

Supported formats:

  • .dbterd.yml - YAML configuration (recommended)
  • pyproject.toml - Add [tool.dbterd] section to your existing Python project config

Learn more in the Configuration Files Guide.

💡 Examples

CLI Examples

🖱️ Click to explore CLI examples
# 📊 Select all models in dbt_resto
dbterd run -ad samples/dbtresto

# 🎯 Select multiple dbt resources (models + sources)
dbterd run -ad samples/dbtresto -rt model -rt source

# 🔍 Select models excluding staging
dbterd run -ad samples/dbtresto -s model.dbt_resto -ns model.dbt_resto.staging

# 📋 Select by schema name
dbterd run -ad samples/dbtresto -s schema:mart -ns model.dbt_resto.staging

# 🏷️ Select by full schema name
dbterd run -ad samples/dbtresto -s schema:dbt.mart -ns model.dbt_resto.staging

# 🌟 Other sample projects
dbterd run -ad samples/fivetranlog -rt model -rt source
dbterd run -ad samples/facebookad -rt model -rt source
dbterd run -ad samples/shopify -s wildcard:*shopify.shopify__*

# 🔗 Custom relationship detection
dbterd run -ad samples/dbt-constraints -a "test_relationship:(name:foreign_key|c_from:fk_column_name|c_to:pk_column_name)"

# 💻 Your local project
dbterd run -ad samples/local -rt model -rt source

Python API Examples

Generate Complete ERD

from dbterd.api import DbtErd

# Generate DBML format
erd = DbtErd().get_erd()
print("ERD (DBML):", erd)

# Generate Mermaid format
erd = DbtErd(target="mermaid").get_erd()
print("ERD (Mermaid):", erd)

Generate Single Model ERD

from dbterd.api import DbtErd

# Get ERD for specific model
dim_prize_erd = DbtErd(target="mermaid").get_model_erd(
    node_unique_id="model.dbt_resto.dim_prize"
)
print("ERD of dim_prize (Mermaid):", dim_prize_erd)

Sample Output:

erDiagram
  "MODEL.DBT_RESTO.DIM_PRIZE" {
    varchar prize_key
    nvarchar prize_name
    int prize_order
  }
  "MODEL.DBT_RESTO.FACT_RESULT" {
    varchar fact_result_key
    varchar box_key
    varchar prize_key
    date date_key
    int no_of_won
    float prize_value
    float prize_paid
    int is_prize_taken
  }
  "MODEL.DBT_RESTO.FACT_RESULT" }|--|| "MODEL.DBT_RESTO.DIM_PRIZE": prize_key

🤝 Contributing

We welcome contributions! 🎉

Ways to contribute: 🐛 Report bugs | 💡 Suggest features | 📝 Improve documentation | 🔧 Submit pull requests

See our Contributing Guide for detailed information.

Show your support:

  • ⭐ Star this repository
  • 📢 Share on social media
  • ✍️ Write a blog post
  • Buy me a coffee

buy me a coffee

👥 Contributors

A huge thanks to our amazing contributors! 🙏

📧 Support

Need help? We're here for you! Check 📖 Documentation, 🐛 Report Issues and 💬 Discussions

Made with ❤️ by the dbterd community

Sponsored by GitAds

Sponsored by GitAds

Keywords

dbt

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts