Connect Snowflake
The following fields are required when creating a Snowflake connection
Field | Description | Examples |
---|---|---|
Account | The Snowflake account to connect to. Take a look here to determine what the account field should look like based on your region. | |
Role | A mandatory field indicating what role should be assumed after connecting to Snowflake | transformer |
Database | The logical database to connect to and run queries against. | analytics |
Warehouse | The virtual warehouse to use for running queries. | transforming |
Note: A crucial part of working with dbt atop Snowflake is ensuring that users (in development environments) and/or service accounts (in deployment to production environments) have the correct permissions to take actions on Snowflake! Here is documentation of some example permissions to configure Snowflake access.
Username / Password
Available in: Development environments, Deployment environments
The Username / Password
auth method is the simplest way to authenticate
Development or Deployment credentials in a dbt project. Simply enter your Snowflake
username (specifically, the login_name
) and the corresponding user's Snowflake password
to authenticate dbt Cloud to run queries against Snowflake on behalf of a Snowflake user.
Note: The schema field in the Developer Credentials section is a required field.
Snowflake username/password authenticationKey Pair
Available in: Development environments, Deployment environments
The Keypair
auth method uses Snowflake's Key Pair Authentication to authenticate Development or Deployment credentials for a dbt Cloud project.
- After generating an encrypted key pair, be sure to set the
rsa_public_key
for the Snowflake user to authenticate in dbt Cloud:
alter user jsmith set rsa_public_key='MIIBIjANBgkqh...';
- Finally, set the Private Key and Private Key Passphrase fields in the Credentials page to finish configuring dbt Cloud to authenticate with Snowflake using a key pair.
Note: Unencrypted private keys are permitted. Use a passphrase only if needed.
As of dbt version 1.5.0, you can use a private_key
string in place of private_key_path
. This private_key
string can be either Base64-encoded DER format for the key bytes or plain-text PEM format. For more details on key generation, refer to the Snowflake documentation.
- To successfully fill in the Private Key field, you must include commented lines. If you receive a
Could not deserialize key data
orJWT token
error, refer to Troubleshooting for more info.
Example:
-----BEGIN ENCRYPTED PRIVATE KEY-----
< encrypted private key contents here - line 1 >
< encrypted private key contents here - line 2 >
< ... >
-----END ENCRYPTED PRIVATE KEY-----
Snowflake OAuth
Available in: Development environments, Enterprise plans only
The OAuth auth method permits dbt Cloud to run development queries on behalf of a Snowflake user without the configuration of Snowflake password in dbt Cloud. For more information on configuring a Snowflake OAuth connection in dbt Cloud, please see the docs on setting up Snowflake OAuth.
Configuring Snowflake OAuth connectionConfiguration
To learn how to optimize performance with data platform-specific configurations in dbt Cloud, refer to Snowflake-specific configuration.
Troubleshooting
If you're receiving a Could not deserialize key data
or JWT token
error, refer to the following causes and solutions:
Error: Could not deserialize key data
- Possible cause
- This could be because of mistakes like not copying correctly, missing dashes, or leaving out commented lines.
- Solution
- You can copy the key from its source and paste it into a text editor to verify it before using it in dbt Cloud.
Error: JWT token
- Possible causes
- This could be a transient issue between Snowflake and dbt Cloud. When connecting to Snowflake, dbt gets a JWT token valid for only 60 seconds. If there's no response from Snowflake within this time, you might see a
JWT token is invalid
error in dbt Cloud. - The public key was not entered correctly in Snowflake.
- This could be a transient issue between Snowflake and dbt Cloud. When connecting to Snowflake, dbt gets a JWT token valid for only 60 seconds. If there's no response from Snowflake within this time, you might see a
- Solutions
- dbt needs to retry connections to Snowflake.
- Confirm and enter Snowflake's public key correctly. Additionally, you can reach out to Snowflake for help or refer to this Snowflake doc for more info: Key-Based Authentication Failed with JWT token is invalid Error.