Install & Compatibility
Where this runs
tested against v1.12.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.95 runs
build_error
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 19.8s · import 5.010s · 211MB
203MB installed
● package 203MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
SnowflakeAdapter
✓ from dbt.adapters.snowflake.impl import SnowflakeAdapter
Most end-users interact with dbt-snowflake via the dbt CLI; direct imports are typically for extending dbt's core functionality or advanced programmatic use cases.
SnowflakeConnectionManager
✓ from dbt.adapters.snowflake.connections import SnowflakeConnectionManager
Primarily for extending dbt's connection handling or for custom tooling. Not for typical dbt project usage.
This Python script generates a minimal `profiles.yml` file in your `~/.dbt/` directory, configured for Snowflake using environment variables for credentials. After running this script, follow the printed instructions to initialize a dbt project, link it to the generated profile, and run `dbt debug` to verify your Snowflake connection. Remember to set the required Snowflake environment variables (e.g., `SNOWFLAKE_ACCOUNT`, `SNOWFLAKE_USER`, `SNOWFLAKE_PASSWORD`) or replace placeholders.
import os
from pathlib import Path
# Define minimal profiles.yml content using environment variables.
# Make sure to set SNOWFLAKE_ACCOUNT, SNOWFLAKE_USER, SNOWFLAKE_PASSWORD,
# SNOWFLAKE_ROLE, SNOWFLAKE_WAREHOUSE, SNOWFLAKE_DATABASE, SNOWFLAKE_SCHEMA
# in your environment before running this, or replace the placeholders directly.
profiles_yml_content = f"""
dbt_snowflake_example:
target: dev
outputs:
dev:
type: snowflake
account: {os.environ.get('SNOWFLAKE_ACCOUNT', 'your_account.snowflakecomputing.com')}
user: {os.environ.get('SNOWFLAKE_USER', 'your_snowflake_user')}
password: {os.environ.get('SNOWFLAKE_PASSWORD', 'your_snowflake_password')}
role: {os.environ.get('SNOWFLAKE_ROLE', 'SYSADMIN')}
warehouse: {os.environ.get('SNOWFLAKE_WAREHOUSE', 'COMPUTE_WH')}
database: {os.environ.get('SNOWFLAKE_DATABASE', 'DBT_DEV_DB')}
schema: {os.environ.get('SNOWFLAKE_SCHEMA', 'PUBLIC')}
threads: 1
client_session_keep_alive: false
"""
# Ensure ~/.dbt directory exists and write profiles.yml
dbt_dir = Path.home() / ".dbt"
dbt_dir.mkdir(parents=True, exist_ok=True)
profiles_yml_path = dbt_dir / "profiles.yml"
with open(profiles_yml_path, "w") as f:
f.write(profiles_yml_content)
print(f"Generated a sample profiles.yml at: {profiles_yml_path}")
print("\nNext steps:")
print("1. Create a dbt project: `dbt init my_snowflake_project`")
print("2. Update `my_snowflake_project/dbt_project.yml` to use `profile: dbt_snowflake_example`")
print("3. Navigate into your project directory: `cd my_snowflake_project`")
print("4. Verify your connection: `dbt debug`")
print(" Ensure you have configured environment variables or replaced placeholders.")
# Uncomment the following to directly run dbt debug if you have dbt-core installed
# import subprocess
# try:
# print("\nAttempting to run 'dbt debug' to verify connection...")
# # This assumes you have created 'my_snowflake_project' and updated its profile
# # For a full quickstart, this requires more setup than a single snippet can provide.
# # subprocess.run(["dbt", "debug", "--profile", "dbt_snowflake_example"], check=True)
# # print("dbt debug completed successfully.")
# except FileNotFoundError:
# print("Error: 'dbt' command not found. Install dbt-core via `pip install dbt-core`.")
# except subprocess.CalledProcessError as e:
# print(f"Error during 'dbt debug': {e}")
# print("Check your profiles.yml and Snowflake credentials.")
dbt --version
Debug
Known issues
breakingBreaking changes in `dbt-core`'s adapter interface frequently require corresponding updates in `dbt-snowflake`. Ensure your `dbt-snowflake` version is compatible with your `dbt-core` version (e.g., dbt-core 1.x requires dbt-snowflake 1.x).fixAlways check the dbt-core release notes and upgrade `dbt-snowflake` in tandem with `dbt-core` using `pip install --upgrade dbt-core dbt-snowflake`.
affects: All versions when upgrading dbt-core major/minor versions (e.g., 0.x to 1.x, 1.0 to 1.1).
gotchaIncorrect or incomplete Snowflake profile configuration in `profiles.yml` is the most common issue. Pay close attention to `account`, `user`, `password` (or key pair), `role`, `warehouse`, `database`, and `schema`.fixRun `dbt debug` within your dbt project to diagnose connection issues. Verify all Snowflake connection parameters and ensure environment variables (if used) are correctly set.
affects: All versions
gotchaPython version compatibility. `dbt-core` and its adapters specify minimum Python versions. Using an unsupported Python version (e.g., a pre-release like 3.13) will often lead to installation or runtime errors. If no pre-built wheels are available for your Python version and operating system (especially on minimal environments like Alpine), installation may fail during source compilation if required build tools (like `g++`) are missing.fixEnsure your Python environment meets the `requires_python` specification for both `dbt-core` and `dbt-snowflake`. If installing on a minimal OS (e.g., Alpine Linux) or with a very new Python version for which pre-built wheels are not available, you may need to install development packages (e.g., `build-base` on Alpine or `python3-dev gcc` on Debian-based systems) or use a more stable Python version/OS combination.
affects: All versions, specifically when upgrading dbt-core/dbt-snowflake or using pre-release Python versions.
gotchaNetwork connectivity issues (firewalls, proxy settings, private link configurations) can prevent dbt-snowflake from connecting to Snowflake, even with correct credentials.fixConsult your IT team and Snowflake documentation for network requirements. Test connectivity outside dbt (e.g., using `snowsql` CLI or a simple Python `snowflake-connector-python` script).
affects: All versions
Errors
Common errors & fixes
Failed to connect to DB: <account_identifier>.snowflakecomputing.com:443. Incorrect username or password was specified.
This error indicates that dbt-snowflake could not establish a connection to your Snowflake account because the provided credentials (username or password) in your `profiles.yml` file are incorrect, the account identifier is wrong, or an OAuth token has expired.
fixDouble-check your `profiles.yml` for typos in `account`, `user`, and `password`. Ensure the Snowflake user's password has not changed or the OAuth connection has not expired; if using OAuth, reconnect your Snowflake account via dbt Cloud profile settings. Running `dbt debug` can help pinpoint connection issues.
SQL compilation error: Object '<object_name>' does not exist or not authorized.
This error occurs when dbt attempts to execute SQL against a Snowflake object (database, schema, table, view, etc.) that either does not exist, or the Snowflake user/role configured in `profiles.yml` does not have the necessary permissions to access it.
fixVerify that the specified object (`<object_name>`) exists in Snowflake. Grant the appropriate `USAGE` and `SELECT` (or `CREATE`/`INSERT` for transformations) permissions to the Snowflake role used by dbt on the database, schema, and table/view. Check the compiled SQL in `target/compiled/` to see the exact query dbt is trying to run and ensure correct quoting of identifiers if they are case-sensitive.
Database Error 000606 (57P03): No active warehouse selected in the current session. Select an active warehouse with the 'use warehouse' command.
The Snowflake connection defined in your `profiles.yml` or the default role assigned to the user does not have a valid or accessible warehouse specified, or the `warehouse` parameter is missing or incorrect in your dbt profile, which is particularly common for `dbt seed` operations.
fixEnsure that the `warehouse` parameter is correctly defined in your `profiles.yml` under the Snowflake target. Confirm that the Snowflake user/role specified in your profile has `USAGE` privilege on the specified warehouse, or manually set a default warehouse for the user in Snowflake via `ALTER USER <user_name> SET DEFAULT_WAREHOUSE = '<existing_warehouse_name>';`.
'NoneType' object has no attribute 'replace'
This Python error typically happens when a Jinja expression or Python logic within a dbt macro or model expects a string (or an object with a `.replace()` method) but receives a `None` value instead. This can occur if a variable is not initialized, a `ref()` or `source()` call returns no object, or a function doesn't return a value as expected.
fixReview the Jinja or Python code where the error occurs and identify the variable or function call that is unexpectedly returning `None`. Ensure all variables are properly initialized, that `ref()` and `source()` calls point to existing, accessible models/sources, and that Python models correctly generate their output dataframe. For Jinja, add `{% if variable_name is not none %}` checks or use `default('')` to provide a fallback string. Cannot perform CREATE TABLE. This session does not have a current schema. Call 'USE SCHEMA', or use a qualified name.
This Snowflake error indicates that a DDL operation (like `CREATE TABLE`) was attempted without an active schema in the session context, and the object name was not fully qualified with a database and schema. dbt sometimes encounters this when the default schema context is not correctly propagated or implicitly available, especially with dynamic tables or specific materialization strategies.
fixEnsure your `profiles.yml` explicitly defines a `schema` parameter for your target. Review the model's configuration and the generated SQL (in `target/run/`) to confirm fully qualified names are being used where necessary. For dynamic tables, ensure the `snowflake_initialization_warehouse` parameter is correctly configured if applicable, and that the database and schema are explicit.
Upgrade
Version history
1.12.0latest on PyPI · released Jul 16, 2026
Audit
Dependencies
dbt-corerequireddbt-snowflake is an adapter plugin for dbt-core and requires it for all functionality.