dbt-snowflake

The official dbt adapter for running transformations on Snowflake.

SDK
PyPI
v1.12.0
232stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
88/100Excellent
Development Activity96
Maintenance96
Community80
Maturity52
Momentum28

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
79/100Good
Architecture84
Code Quality84
Innovation72
Learning Curve74

dbt-snowflake is the official dbt adapter that connects dbt Core to the Snowflake data platform. It implements the connection management, SQL dialect, and materialization logic dbt needs to compile and run models, tests, snapshots, and seeds directly against a Snowflake warehouse.

Maintained by dbt Labs as part of the dbt-adapters monorepo, it translates dbt’s cross-database transformation workflow into Snowflake-specific SQL and account authentication. Installing dbt-snowflake alongside dbt Core is all that is required to point an analytics-engineering project at a Snowflake account.

What You Get

  • A dbt adapter that targets Snowflake as the execution engine for dbt models
  • Snowflake connection and authentication handling, including key-pair and secure local storage
  • Snowflake-specific materializations such as tables, views, and incremental models
  • Relation and column configuration mapped to Snowflake features
  • Integration with the standard dbt Core CLI workflow (run, test, build, snapshot)

Common Use Cases

  • Running a dbt analytics-engineering project against a Snowflake warehouse
  • Building incremental and materialized transformations in Snowflake with dbt
  • Managing Snowflake credentials and warehouse targets through dbt profiles

Under The Hood

Architecture - The adapter lives under dbt-snowflake/src/dbt/adapters/snowflake/. connections.py manages the Snowflake connector session and query execution, impl.py implements the SnowflakeAdapter that dbt Core calls into, and relation.py, column.py, and the relation_configs/ and catalogs/ packages describe how dbt relations map to Snowflake objects. Jinja SQL macros in src/dbt/include/snowflake/ define the actual materialization and DDL logic that dbt renders and runs.

Tech Stack - Python packaged with Hatch (hatch.toml, pyproject.toml). It builds on dbt-common and dbt-adapters as the plugin contract and depends on snowflake-connector-python for the wire connection, plus agate and dbt-core for backwards-compatible installs.

Code Quality - The package ships a substantial tests/ tree with unit and functional tests, uses black and mypy (advertised via README badges), and maintains a detailed CHANGELOG. As part of the actively maintained dbt-adapters monorepo, it benefits from shared CI and the reusable dbt-tests-adapter suite.

API Design - Developers rarely touch the Python directly; the ergonomics come through dbt’s YAML profiles and SQL models. Configuring a Snowflake target is a matter of a profile block, and the adapter follows the same contract as every other dbt adapter, so knowledge transfers directly across warehouses.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search