dbt entities are typed join keys that link semantic models
Entities | dbt Developer Hub
dbt docs define entities as business concepts used as join keys—primary, unique, foreign, or natural—in the Semantic Layer.
Based on
Entities are business concepts—customers, transactions, campaigns—and in Semantic Layer models they serve as join keys. In the semantic graph (v1.12+), name and type are required; name may match a key column or alias via expr, and must not collide with a simple metric or dimension in the same model. Types: primary (one record per row, all records), unique (one per row, nulls allowed, may be a subset), foreign (links to another table’s row), and natural (real-world identifying attributes). Entities may also be used as dimensions for aggregation grain.
Modeling teams need explicit join-key types so MetricFlow joins semantic models without ambiguous keys or duplicated names.
Typed entities are the shared identity vocabulary across models: the same named keys carry meaning from warehouse tables into governed metric graphs.
Put this to work on CoreModels
Related connectors and recipes
See all connectors →Take the next step
Try CoreModels, talk with our team, or explore more resources.