Configuration for Snowflake connection¶
In order to use Snowflake as the data source, we need to get the additional dependencies after installing diqu:
pip install "snowflake-connector-python[pandas]"
pip install "snowflake-connector-python[secure-local-storage]"
diqu will try to reuse dbt profile configuration with supporting 3 authentication methods:
User / Password authentication¶
Snowflake can be configured using basic user/password authentication as shown below.
# ~/.dbt/profiles.yml
diqu:
target: dev
outputs:
dev:
type: snowflake
account: [account id]
# User/password auth
user: [username]
password: [password]
role: [user role]
database: [database name]
warehouse: [warehouse name]
schema: [dbt schema]
Key Pair Authentication¶
To use key pair authentication, omit a password and instead provide a private_key_path and, optionally, a private_key_passphrase in your target.
Also you have the option to use a private_key string instead of a private_key_path. The private_key string should be in either Base64-encoded DER format, representing the key bytes, or a plain-text PEM format. Refer to Snowflake documentation for more info on how they generate the key.
# ~/.dbt/profiles.yml
diqu:
target: dev
outputs:
dev:
type: snowflake
account: [account id]
# Keypair config
private_key_path: [path/to/private.key]
# OR:
# private_key: [value is Base64-encoded DER format (key bytes), or a plain-text PEM format]
private_key_passphrase: [passphrase for the private key, if key is encrypted]
role: [user role]
database: [database name]
warehouse: [warehouse name]
schema: [dbt schema]
SSO Authentication¶
To use SSO authentication for Snowflake, omit a password and instead supply an authenticator config to your target. authenticator should be 'externalbrowser' for now.