Snowflake's cloud data warehouse. Two distinguishing features: every query runs against a specific warehouse (which determines compute cost), and identifiers are uppercase by convention.
| Field | Required | Sensitive | Default |
|---|---|---|---|
| Account | Yes | Yes | — |
| Username | Yes | Yes | — |
| Password | Yes | Yes | — |
| Warehouse | Yes | No | — |
| Database | Yes | No | — |
| Schema | No | No | PUBLIC |
| Role | No | No | (empty) |
The account identifier follows Snowflake's format — <account>.<region>
(e.g. xy12345.us-east-1). The warehouse determines how compute is billed; the role
can be used to run as a different Snowflake role for permission scoping.
Open the Snowflake web UI and run the following in a worksheet as ACCOUNTADMIN (or
another role with the privileges to create roles and users).
USE ROLE ACCOUNTADMIN;
-- Create a role for DagFlux
CREATE ROLE dagflux_role;
-- Create a user with that role as default
CREATE USER dagflux
PASSWORD = 'Choose-A-Strong-Password!'
DEFAULT_ROLE = dagflux_role
DEFAULT_WAREHOUSE = COMPUTE_WH
MUST_CHANGE_PASSWORD = FALSE;
-- Assign the role to the user
GRANT ROLE dagflux_role TO USER dagflux;
-- Allow the role to use the compute warehouse
GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE dagflux_role;
-- Allow accessing the database and one schema
GRANT USAGE ON DATABASE MYDB TO ROLE dagflux_role;
GRANT USAGE ON SCHEMA MYDB.PUBLIC TO ROLE dagflux_role;
-- Read + write on existing tables
GRANT SELECT, INSERT, UPDATE, DELETE
ON ALL TABLES IN SCHEMA MYDB.PUBLIC TO ROLE dagflux_role;
-- Same permissions on tables created in the future
GRANT SELECT, INSERT, UPDATE, DELETE
ON FUTURE TABLES IN SCHEMA MYDB.PUBLIC TO ROLE dagflux_role;
-- Allow creating new tables (needed for new-table transformations and joins)
GRANT CREATE TABLE ON SCHEMA MYDB.PUBLIC TO ROLE dagflux_role;
If you'll only use the connection for sources:
GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE dagflux_role;
GRANT USAGE ON DATABASE MYDB TO ROLE dagflux_role;
GRANT USAGE ON SCHEMA MYDB.PUBLIC TO ROLE dagflux_role;
GRANT SELECT ON ALL TABLES IN SCHEMA MYDB.PUBLIC TO ROLE dagflux_role;
GRANT SELECT ON FUTURE TABLES IN SCHEMA MYDB.PUBLIC TO ROLE dagflux_role;
Your account identifier is in the Snowflake URL: https://<account>.snowflakecomputing.com
— copy the part before .snowflakecomputing.com. For some regions Snowflake includes
the region (e.g. xy12345.us-east-1).
COMPUTE_WH).PUBLIC).dagflux_role. Leave empty to use the user's default role.PUBLIC (uppercase, as Snowflake stores them).