Allowing ETL access to my Snowflake account


To allow ETL access to Snowflake

In order to allow ETL access to your Snowflake account, login to your Snowflake account using your favorite SQL client and execute the following commands to create a user with proper permissions for ETL:

USE ROLE accountadmin; -- use this role to be able to grant permissions
CREATE ROLE integrate_io; -- create a role to assign to the integrate_io user
CREATE USER integrate_io PASSWORD='<password>' DEFAULT_ROLE = integrate_io; -- create a user with a password
GRANT ROLE integrate_io TO USER integrate_io; -- assign user to role

-- run the following statements for each database you'd like ETL to access:

GRANT USAGE ON DATABASE "<database_name>" TO ROLE integrate_io; -- grant database access to integrate_io
GRANT CREATE SCHEMA ON DATABASE "<database_name>" TO ROLE integrate_io; -- grant schema creation privilege to integrate_io
GRANT ALL ON SCHEMA "<schema_name>" TO ROLE integrate_io; -- grant integrate_io privileges to do anything within the defined schema
GRANT ALL ON SCHEMA public TO ROLE integrate_io;
GRANT ALL ON ALL TABLES IN SCHEMA "<database_name>"."<schema_name>" TO ROLE integrate_io; -- grant integrate_io privileges to all tables in the schema
-- run the following statements for each warehouse you'd like ETL to use: GRANT ALL ON WAREHOUSE "<warehouse_name>" TO integrate_io; -- allow integrate_io to use a warehouse

To create a Snowflake connection in ETL

    1. Click the Connections icon (lightning bolt) on the top left menu.
    2. Click New connection. thumbnail image
    3. Choose Snowflake.
    4. Type a name for the connection.
    5. Enter your account name (e.g. ETL if you login to
    6. Enter the user name and password you created for ETL to use.
    7. Enter the default database to use.
    8. Enter the default warehouse to use.
    9. Set the region to your Snowflake's account's region.
    10. Click Test Connection. If the credentials are correct, a message that the connection test was successful appears. 
    11. Create Connection. thumbnail image

Identifier names ETL uses quoted identifiers which means that by default, all identifiers (table and column names for instance) are case sensitive - as opposed to non-quoted identifiers which are case insensitive (and are stored in upper case). You may want to change the behavior by changing the QUOTED_IDENTIFIERS_IGNORE_CASE setting for ETL's user or for your entire account. Note that tables and columns that were created with case sensitive names remain case sensitive, so it's important to make this change before you create any tables. If you want to switch a case sensitive identifier name to a case insensitive identifier name after it's been created use the ALTER ... RENAME clauses in Snowflake. Read more on Snowflake identifiers for more information.