Selector Methods

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.

Wildcard Magic

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"

The Selectors

Tag Selector

Use tag: to select models with a specific tag.

dbt run --select "tag:hourly"

Source Selector

Use source: to select models that reference a specified source.

dbt run --select "source:fivetran+"

Resource Type Selector

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"

Path Selector

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"

File Selector

Use file: to select a model by filename.

dbt run --select "file:model_name.sql"

FQN (Fully Qualified Name) Selector

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"

Package Selector

Use package: to select models defined within the root project or an installed dbt package.

dbt run --select "package:fivetran"

Config Selector

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"

Test Type Selector

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"

Test Name Selector

Use test_name: to select tests based on the name of the test defined.

dbt test --select "test_name:not_null"

State Selector

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

Exposure Selector

Use exposure: to select the parent resources of an exposure.

dbt test --select "exposure:monthly_reports"
dbt run --select "+exposure:*"

Metric Selector

Use metric: to select parent resources of a metric.

dbt run --select "+metric:monthly_qualified_leads"

Results Selector

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

Source Status Selector

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

Group Selector

Use group: to select models defined within a specified group.

dbt run --select "group:marketing"

Access Selector

Use access: to select models based on their access property.

dbt list --select "access:public"

Version Selector

Use version: to select versioned models.

dbt list --select "version:old"
dbt list --select "version:latest"

Semantic Model Selector

Use semantic_model: to select semantic models.

dbt ls --select "semantic_model:sales"

Saved Query Selector

Use saved_query: to select saved queries.

dbt list --select "saved_query:*"

Unit Test Selector

Use unit_test: to select dbt unit tests.

dbt list --select "unit_test:*"

Pro Tips

  • 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.

Last updated

Was this helpful?