Do ref-able resource names need to be unique?
Within one project: yes! To build dependencies between resources (such as models, seeds, and snapshots), you need to use the ref
function, and pass in the resource name as an argument. dbt uses that resource name to uniquely resolve the ref
to a specific resource. As a result, these resource names need to be unique, even if they are in distinct folders.
A resource in one project can have the same name as a resource in another project (installed as a dependency). dbt uses the project name to uniquely identify each resource. We call this "namespacing." If you ref
a resource with a duplicated name, it will resolve to the resource within the same namespace (package or project), or raise an error because of an ambiguous reference. Use two-argument ref
to disambiguate references by specifying the namespace.
Those resource will still need to land in distinct locations in the data warehouse. Read the docs on custom aliases and custom schemas for details on how to achieve this.