OVM-ERD — Generate ER diagrams from dbt Data Vault projects
OVM-ERD generates Entity-Relationship Diagrams, SQL queries and metadata validation reports from dbt repositories.
[UPDATE 2026-10] OVM-ERD is no longer maintained.
OVM-ERD is a Python package for visualising and validating Data Vault-structured databases using metadata from dbt repositories. It can generate Entity-Relationship Diagrams (ERDs), SQL queries and metadata validation reports.
Features
- Automated ER diagrams: Graphviz (PNG), Mermaid (Markdown) and Draw.io (
.drawio.xmland PNG). - SQL generation: Build SQL queries from repository metadata.
- Metadata validation: Generate HTML reports to validate Data Vault entities and relationships.
- Command-line interface: Automate common operations from the terminal.
Installation
OVM-ERD requires a local installation of Graphviz. Install the Python package with:
pip install ovm-erd
Usage
Generate ER diagrams:
ovm-erd generate [graphviz|mermaid|drawio]
Generate Graphviz diagrams in a specific output folder:
ovm-erd generate graphviz --path /your/output/path
Generate diagrams separately for each ensemble or tag:
ovm-erd generate drawio --distinct
Generate SQL for a specific ensemble:
ovm-erd sql --ensemble your_ensemble_name
Validate metadata and generate an HTML report:
ovm-erd validate
Specify a custom validation report path:
ovm-erd validate --path /your/report/path
Python API
The functionality can also be called from Python:
from ovm_erd.repository_reader import build_metadata_dict
from ovm_erd.erd_graphviz import generate_graphviz
repository_path = "your/dbt/repo"
output_path = "output/graphviz"
metadata = build_metadata_dict(repository_path=repository_path)
generate_graphviz(metadata, output_dir=output_path)
Paths can also be set dynamically:
custom_repo_path = "/path/to/dbt/repository"
custom_output_path = "/path/to/output"
metadata = build_metadata_dict(repository_path=custom_repo_path)
generate_graphviz(metadata, output_dir=custom_output_path)
ERD colour coding
| Entity | Colour |
|---|---|
| Hub | Light blue (#D6EAF8) |
| Satellite | Light yellow (#FFFACD) |
| Link | Light red (#F5B7B1) |
Tests
pytest tests/
License
GPL © Ferry Ouwerkerk / Data-Project BV.