Skip to main content
Selectors let you scope commands to specific subsets of your project. They work with plan, build, test, audit, seed, clone, and diff.

Basic usage

sqb build --select daily_revenue
sqb build --select daily_revenue customer_status_snapshot
sqb build --exclude stg_customers
--select (or -s for short) accepts one or more names. Multiple values are unioned. Space-separated names within one --select are also unioned. --exclude subtracts from the selected set. When no --select is provided, all models are selected.

Selector types

Name

Select a single model by name:
sqb build --select fact_orders

Tag

Select all models with a specific tag:
sqb build --select tag:staging
sqb build --select tag:acceptance

Path

Select all models under a directory path:
sqb build --select path:marts
sqb build --select /marts
sqb build --select marts/
sqb build --select path:intermediate
Any name containing / is treated as a path selector. path:marts, /marts, and marts/ all work the same way. Nested paths work too: staging/orders. The models/ prefix is stripped automatically, so use path:marts not path:models/marts.

Seed and source

sqb build --select seed:waffle_types
sqb build --select source:raw__orders

Graph expansion

Upstream

Select a model plus all its upstream dependencies:
sqb build --select +daily_activity_rollup

Downstream

Select a model plus all its downstream dependents:
sqb build --select fact_orders+

Bidirectional

sqb build --select +fact_orders+
Graph expansion works with all selector types:
sqb build --select +tag:marts
sqb build --select path:staging+

Path-between selectors

Select all models on the shortest path between two nodes:
sqb build --select fact_orders~daily_activity_rollup
With endpoint expansion:
sqb build --select +fact_orders~daily_activity_rollup+
This selects:
  • All upstreams of fact_orders
  • Every model on the path between fact_orders and daily_activity_rollup
  • All downstreams of daily_activity_rollup
This is useful for rebuilding a specific slice of the DAG without manually listing every model in between.

Intersection

Use commas to intersect selector results:
sqb build --select "tag:staging,path:finance"
This selects only models that match both conditions - in this case, models tagged staging that are also under the finance directory.

Combining select and exclude

# Build all marts except daily_revenue
sqb build --select path:marts --exclude daily_revenue

# Build everything upstream of fact_orders, excluding staging models
sqb build --select +fact_orders --exclude tag:staging

Error handling

Unknown model names, empty paths, and malformed selectors produce clear error messages:
Unknown selector name 'nonexistent_model'
No models found under path 'nonexistent'.
No models found with tag 'nonexistent_tag'
Path selector 'fact_orders~' requires names on both sides of '~'
If a path selector accidentally includes the models/ prefix, SQLBuild suggests the correct form:
No models found under path 'models/marts'. (the 'models/' prefix is stripped automatically — try 'path:marts')