dbt environment runner with Snowflake zero-copy clone sandboxes
Project description
dbts
dbt environment runner with Snowflake zero-copy clone sandboxes.
dbts lets you run dbt against a private, per-developer Snowflake clone of your staging or live database — without managing a separate set of credentials, profile files, or CLIs. It also acts as a single front for running dbt against your shared dev, staging, and live targets.
Install
uv tool install dbts
# or run ad hoc:
uvx dbts ...
Quick start
-
Add a
sandbox:target to~/.dbt/profiles.yml(alongside your existingdev,staging,live):tardis_snowflake: outputs: sandbox: type: snowflake account: <same as the other targets> user: <same as the other targets> role: <same as the other targets> authenticator: externalbrowser database: scm_analytics_sandbox_<your_username> warehouse: <same as the other targets> schema: raw_data_vault
-
Create your clone:
dbts up --from staging
-
Run dbt against it:
dbts build my_model dbts test +my_model+
-
Refresh or drop when done:
dbts refresh --from staging dbts drop
Commands
dbts up --from staging|live create the clone
dbts refresh --from staging|live drop and re-create the clone
dbts status show clone DB, source, age
dbts drop drop the clone
dbts build|run|test|compile|... pass through to dbt (default --target sandbox)
--target sandbox|staging|live|dev choose target
dbts version print installed version
Global flags: -v / --verbose (debug logging, including DDL), -q / --quiet (warnings only). -h is a shorthand for --help.
Selectors
Bare positional model selectors work the same as in dbt:
dbts build my_model+ # forwarded as `--select my_model+`
dbts test +my_model+ # ancestors and descendants
dbts run a b c+ # multi-selector union
dbts build my_model+ --exclude experiments
dbts build --select a b # `--select` + bare positional are merged
Internally, bare positional args on run / build / test / compile / seed / snapshot / ls / show are promoted to a --select value before being forwarded to dbt. Other subcommands (debug, deps, docs, parse, clean, source) pass arguments through verbatim.
Project-side coupling
dbts assumes the dbt project's generate_database_name macro recognises ENV=sandbox and routes models into a _SANDBOX_<USER> suffixed database. See the dbt project's README for the macro snippet.
Profile resolution
dbts resolves the dbt profile name in this order:
$DBTS_PROFILEif set.- The
profile:field indbt_project.ymlat the project root.
Jinja {{ env_var('NAME', 'default') }} calls in the profile: field are rendered against the current environment, so projects whose profile name is templated (e.g. tardis_{{ env_var('warehouse', 'snowflake') }}) work out of the box.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dbts-0.2.0.tar.gz.
File metadata
- Download URL: dbts-0.2.0.tar.gz
- Upload date:
- Size: 50.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04e049e5f43dae4793fd69e551ca4688b7bfdbf1e147c7db584b6d1905dcc098
|
|
| MD5 |
3791fd91dac755d0f6e6f5af11afa7ae
|
|
| BLAKE2b-256 |
2326709d4c9fa2fdba930e9036a080e8a95167c5656ab14b5c3270580604b2f8
|
Provenance
The following attestation bundles were made for dbts-0.2.0.tar.gz:
Publisher:
publish.yml on luiul/dbts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dbts-0.2.0.tar.gz -
Subject digest:
04e049e5f43dae4793fd69e551ca4688b7bfdbf1e147c7db584b6d1905dcc098 - Sigstore transparency entry: 1474723993
- Sigstore integration time:
-
Permalink:
luiul/dbts@03c6c6f7b9c86e3883cdedbfbd974b490919a497 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/luiul
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@03c6c6f7b9c86e3883cdedbfbd974b490919a497 -
Trigger Event:
release
-
Statement type:
File details
Details for the file dbts-0.2.0-py3-none-any.whl.
File metadata
- Download URL: dbts-0.2.0-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d87d952fe0d4989cbc7318ba59e79262690b9fa2942b6a58333366d26dc2539
|
|
| MD5 |
88d9166b2efe1c59e723b2a57453fe86
|
|
| BLAKE2b-256 |
ea102b93e62a6785b98fb1e3612d6ad9fadcc134d21fdba5cfc53684fb92a081
|
Provenance
The following attestation bundles were made for dbts-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on luiul/dbts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dbts-0.2.0-py3-none-any.whl -
Subject digest:
1d87d952fe0d4989cbc7318ba59e79262690b9fa2942b6a58333366d26dc2539 - Sigstore transparency entry: 1474724025
- Sigstore integration time:
-
Permalink:
luiul/dbts@03c6c6f7b9c86e3883cdedbfbd974b490919a497 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/luiul
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@03c6c6f7b9c86e3883cdedbfbd974b490919a497 -
Trigger Event:
release
-
Statement type: