dbterd¶
CLI to generate Diagram-as-a-code file (DBML, Mermaid, PlantUML, GraphViz, D2, DrawDB) from dbt artifact files.
Entity Relationships are configurably detected by (docs):
- Test Relationships (default)
- Semantic Entities (use
-a
option)
Verify installation:
For dbt-core
users
It's highly recommended to update dbt-artifacts-parser
to the latest version in order to support the newer dbt-core
version which would cause to have the new manifest / catalog json schema:
Quick examine with existing samples¶
- Play with CLIs:
Click me
# select all models in dbt_resto
dbterd run -ad samples/dbtresto
# select all models in dbt_resto, Select multiple dbt resources
dbterd run -ad samples/dbtresto -rt model -rt source
# select only models in dbt_resto excluding staging
dbterd run -ad samples/dbtresto -s model.dbt_resto -ns model.dbt_resto.staging
# select only models in schema name mart excluding staging
dbterd run -ad samples/dbtresto -s schema:mart -ns model.dbt_resto.staging
# select only models in schema full name dbt.mart excluding staging
dbterd run -ad samples/dbtresto -s schema:dbt.mart -ns model.dbt_resto.staging
# other samples
dbterd run -ad samples/fivetranlog
dbterd run -ad samples/fivetranlog -rt model -rt source
dbterd run -ad samples/facebookad
dbterd run -ad samples/facebookad -rt model -rt source
dbterd run -ad samples/shopify -s wildcard:*shopify.shopify__*
dbterd run -ad samples/shopify -rt model -rt source
dbterd run -ad samples/dbt-constraints -a "test_relationship:(name:foreign_key|c_from:fk_column_name|c_to:pk_column_name)"
# your own sample without committing to repo
dbterd run -ad samples/local -rt model -rt source
-
Play with Python API (whole ERD):
-
Play with Python API (1 model's ERD):
from dbterd.api import DbtErd 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)
Here is the 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
πCheck out the Quick Demo with DBML!
Contributing ⨶
If you've ever wanted to contribute to this tool, and a great cause, now is your chance!
See the contributing docs CONTRIBUTING for more information.
If you've found this tool to be very helpful, please consider giving the repository a star, sharing it on social media, or even writing a blog post about it π
Finally, super thanks to our Contributors: