Selector Methods
Last updated
Was this helpful?
Last updated
Was this helpful?
Selector methods in dbt allow you to filter resources based on specific properties using the method:value
syntax. This gives you the power to target exactly what you need during your data transformations.
Most selector methods support Unix-style wildcards, which can help you target a broader set of resources:
*
: Matches any number of characters (including none)
?
: Matches any single character
[abc]
: Matches one character listed in the bracket
[a-z]
: Matches one character from the specified range in the bracket
For example:
dbt list --select "*.folder_name.*"
dbt list --select "model_[a-z].sql"
Use tag:
to select models with a specific tag.
dbt run --select "tag:hourly"
Use source:
to select models that reference a specified source.
dbt run --select "source:fivetran+"
Use resource_type:
to select nodes of a specific type (e.g., model, test, exposure).
dbt run --select "resource_type:exposure"
dbt list --select "resource_type:test"
Use path:
to select models/sources defined at or under a specific path.
dbt run --select "path:models/marts"
dbt run --select "path:models/marts/customers.sql"
Use file:
to select a model by filename.
dbt run --select "file:model_name.sql"
Use fqn:
to select nodes based on their fully qualified name.
dbt run --select "fqn:example_model"
dbt run --select "fqn:project_name.example_path.example_model"
Use package:
to select models defined within the root project or an installed dbt package.
dbt run --select "package:fivetran"
Use config:
to select models that match a specified node config.
dbt run --select "config.materialized:table"
dbt run --select "config.cluster_by:zip_code"
Use test_type:
to select tests based on type (generic, singular, unit, data).
dbt test --select "test_type:generic"
dbt test --select "test_type:singular"
Use test_name:
to select tests based on the name of the test defined.
dbt test --select "test_name:not_null"
Use state:
to select nodes by comparing them against a previous version of the project.
dbt test --select "state:new" --state path/to/artifacts
dbt run --select "state:modified" --state path/to/artifacts
Use exposure:
to select the parent resources of an exposure.
dbt test --select "exposure:monthly_reports"
dbt run --select "+exposure:*"
Use metric:
to select parent resources of a metric.
dbt run --select "+metric:monthly_qualified_leads"
Use result:
to select resources based on their results status from a previous execution.
dbt run --select "result:success" --state path/to/project/artifacts
dbt test --select "result:warn" --state /path/to/project/artifacts
Use source_status:
to select based on the freshness of sources.
dbt source freshness
dbt build --select "source_status:fresher+" --state path/to/prod/artifacts
Use group:
to select models defined within a specified group.
dbt run --select "group:marketing"
Use access:
to select models based on their access property.
dbt list --select "access:public"
Use version:
to select versioned models.
dbt list --select "version:old"
dbt list --select "version:latest"
Use semantic_model:
to select semantic models.
dbt ls --select "semantic_model:sales"
Use saved_query:
to select saved queries.
dbt list --select "saved_query:*"
Use unit_test:
to select dbt unit tests.
dbt list --select "unit_test:*"
Combine selectors for laser-focused selection:
dbt run --select "tag:nightly,config.materialized:table"
Use graph operators like +
and @
for complex selections:
dbt run --select "source:raw_data+,@tag:critical"
Exclude models using the --exclude
flag:
dbt run --select "path:models/mart" --exclude "tag:deprecated"
If you omit the method, dbt will default to one of path
, file
, or fqn
.
Remember, the more targeted your selector methods, the more precisely you can execute your dbt transformations.