Manage dbt projects in Snowflake (list, rename, drop, describe, add version)
Main skill routes here for: "list", "show", "rename", "drop", "delete", "describe", "add version", "new version", "update version"
-- Add a new version from staged files (most common)
ALTER DBT PROJECT <db>.<schema>.<project> ADD VERSION [<alias>] FROM '@<db>.<schema>.<stage>/path';
-- List projects
SHOW DBT PROJECTS IN SCHEMA <db>.<schema>;
-- Describe project
DESCRIBE DBT PROJECT <db>.<schema>.<project>;
-- Show versions
SHOW VERSIONS IN DBT PROJECT <db>.<schema>.<project>;
-- Rename (use fully qualified names for BOTH)
ALTER DBT PROJECT <db>.<schema>.<old> RENAME TO <db>.<schema>.<new>;
-- Drop
DROP DBT PROJECT [IF EXISTS] <db>.<schema>.<project>;
Goal: View deployed dbt projects
# List in a database
snow dbt list --in database my_db
# List in a schema (use --database separately; defaults to connection's database if omitted)
snow dbt list --in schema my_schema --database my_db
# Filter by pattern
snow dbt list --like "my_%"
SQL alternative (supports db.schema notation directly):
SHOW DBT PROJECTS IN SCHEMA my_db.my_schema;
Goal: View project details
DESCRIBE DBT PROJECT my_db.my_schema.my_project;
Goal: Rename an existing dbt project
⚠️ MANDATORY CHECKPOINT: Confirm new name with user before executing.
CRITICAL: Use fully qualified names for BOTH old and new names to keep project in same schema:
ALTER DBT PROJECT my_db.my_schema.old_name RENAME TO my_db.my_schema.new_name;
Why fully qualified? Unqualified new name moves project to session's current schema context.
Goal: Add a new version to an existing dbt project from updated source files
dbt projects are versioned (VERSION$1, VERSION$2, etc.). Each version is immutable. To update a project, add a new version.
Syntax:
ALTER DBT PROJECT <db>.<schema>.<project_name>
ADD VERSION [<version_alias>]
FROM '<source_location>';
Version aliases are optional human-readable names (e.g., v2_release, hotfix_20240115). The version identifier (VERSION$2, VERSION$3, etc.) is auto-incremented.
Examples:
-- Add version from a stage (most common)
ALTER DBT PROJECT my_db.my_schema.my_project
ADD VERSION v2_release
FROM '@my_db.my_schema.dbt_stage/updated_project';
-- Add version without alias (just gets VERSION$N)
ALTER DBT PROJECT my_db.my_schema.my_project
ADD VERSION
FROM '@my_db.my_schema.dbt_stage/updated_project';
Source location formats:
'@db.schema.stage/path''snow://dbt/db.schema.project/versions/last''snow://workspace/user$.public."workspace"/versions/live'Verify versions after adding:
SHOW VERSIONS IN DBT PROJECT <db>.<schema>.<project>;
Goal: Delete a dbt project
⚠️ MANDATORY CHECKPOINT: Confirm deletion with user before executing.
DROP DBT PROJECT [IF EXISTS] my_db.my_schema.my_project;
Note: This removes the project definition. Tables/views created by the project remain.
Goal: Modify project configuration (comment, default target, external access)
No CLI support - Use SQL directly.
-- Set comment
ALTER DBT PROJECT my_db.my_schema.my_project SET COMMENT = 'My description';
-- Set default target
ALTER DBT PROJECT my_db.my_schema.my_project SET DEFAULT_TARGET = 'prod';
-- Set external access integrations
ALTER DBT PROJECT my_db.my_schema.my_project SET EXTERNAL_ACCESS_INTEGRATIONS = (my_integration);
-- Unset properties
ALTER DBT PROJECT my_db.my_schema.my_project UNSET COMMENT;
ALTER DBT PROJECT my_db.my_schema.my_project UNSET DEFAULT_TARGET;
ALTER DBT PROJECT my_db.my_schema.my_project UNSET EXTERNAL_ACCESS_INTEGRATIONS;
| Operation | SQL |
|---|---|
| List | SHOW DBT PROJECTS IN SCHEMA db.schema; |
| Describe | DESCRIBE DBT PROJECT db.schema.project; |
| Rename | ALTER DBT PROJECT db.schema.old RENAME TO db.schema.new; |
| Drop | DROP DBT PROJECT [IF EXISTS] db.schema.project; |
| Add Version | ALTER DBT PROJECT db.schema.project ADD VERSION [alias] FROM '<source>'; |
snow dbt list [--database <db>] [--in database <db>] [--in schema <schema>] [--like <pattern>]
| Parameter | Description | Default |
|---|---|---|
--database | Database context | Connection default |
--in database | List projects in database | — |
--in schema | List projects in schema (single name, not db.schema) | All schemas |
--like | SQL LIKE pattern filter | — |