Skip to main content
In this guide, you’ll learn how to connect your Snowflake database to Omni.

Requirements

To follow the steps in this guide, you’ll need:
  • Organization Admin permissions in Omni
  • Permissions in Snowflake that allow you to:
    • Create database users and grant permissions
    • Allowlist IP addresses
    • Set up key-pair authentication

Setup

1

Create a database user for Omni

  1. Sign in to your Snowflake account.
  2. Create a new worksheet.
  3. Run the following to create a role and user for Omni, and grant privileges:
    Create Omni role & user and grant privileges
    use role ACCOUNTADMIN;
    create role if not exists omni_role;
    create user if not exists omni_user;
    grant role omni_role to user omni_user;
    alter user omni_user set default_role = omni_role;
    alter user omni_user set type = service;
    set default_warehouse = '<warehouse>';
    
    -- grant read only database access - repeat for all database/schemas:
    grant usage, monitor on database <database> to role omni_role;
    grant usage, monitor on schema <database>.<schema> to role omni_role;
    grant usage, monitor on warehouse <warehouse> to role omni_role;
    
    -- alternatively, grant read only database access across all schemas:
    grant usage, monitor on database <database> to role omni_role;
    grant usage, monitor on all schemas IN DATABASE <database> to role omni_role;
    grant usage, monitor on future schemas IN DATABASE <database> to role omni_role;
    grant usage, monitor on warehouse <warehouse> to role omni_role;
    
    -- grant access to all tables in the schema to omni_role:
    grant select on all tables in schema <database>.<schema> to role omni_role;
    grant select on future tables in schema <database>.<schema> to role omni_role;
    
    -- grant access to all views in the schema to omni_role:
    grant select on all views in schema <database>.<schema> to role omni_role;
    grant select on future views in schema <database>.<schema> to role omni_role;
    
    -- grant ownership of omni_role to omni_user:
    grant role omni_role to user omni_user;
    
2

Set up a table upload schema

import UploadSchemaCallout from “/snippets/connect-data/upload-schema-callout.mdx”;In this step, you’ll create a dedicated schema to use for table uploads. This schema can’t be used for other modeled tables.
  1. Create the schema in Snowflake. This can be in its own database or the same database as other schemas to be used in modeling.
  2. Run the following commands to grant the Omni user the required privileges:
    Grant Omni user permissions to upload schema
    grant usage on database <upload_database> to role omni_role;
    grant usage, create table on schema <upload_database>.<csv_schema> to role omni_role;
    
3

Allowlist Omni's IP addresses

If access to the Snowflake database is limited by IP address, you’ll need to add Omni’s IPs to the allowlist before you create the database connection.Omni’s IP addresses can be found on an individual connection’s page, accessed by navigating to Settings > Connections and clicking a connection.
4

Retrieve your Snowflake account identifier

  1. In Snowflake, click your user icon in the bottom left corner of the page and then hover over Account.
  2. In the account selector, click the View account details link under the account: Account identifier
  3. In the Account Details dialog, locate and copy the Account Identifier.
Refer to the Snowflake documentation for information about Snowflake account identifiers.
5

Create the connection in Omni

Snowflake connection parameters can be case sensitive and are often capitalized. If you see errors on connection, confirm your connection parameters match your Snowflake environment exactly.
  1. In Omni, click Settings > Connections.
  2. Click the Snowflake option.
  3. On the connection setup page, fill in the connection details:
    NameRequired?Description
    Display Name YesA user-friendly name for the connection, which will be used throughout Omni
    Account Identifier YesYour Snowflake account identifier
    Warehouse YesThe Snowflake warehouse to use for queries
    Database YesThe database to connect to
    Include Other Databases NoA comma-separated list of other databases to include
    Offloaded Schemas NoA comma-separated list of schemas to include in the connection, which will only load on demand. This setting is good for very large schemas or dbt dev schemas.
    Schema for Table Uploads NoThe name of the schema to use for table (CSV) uploads. If left blank, you can upload tables but they won’t be pushed to the database or be available for use in joins.
    Database Timezone YesThe timezone used by the database
    Query Timezone YesThe timezone to use for Omni queries. If a timezone is specified, data will be converted from the Database timezone to the selected timezone.
    Allow User-Specific Timezones NoWhen enabled, users can override the connection timezone with their own when querying
    Query Timeout NoMaximum time in seconds before a query times out
    Authentication Type YesThe type of authentication to use
  4. Select an Authentication Type:
    Password authentication uses a username and password to authenticate to Snowflake.Note: Snowflake will deprecate this type of authentication in November 2025, so we don’t recommend using it.
    To use this authentication type, you’ll need to specify a Username and set up a key-pair:
    • Username - This is the Omni database user you created in step 1.
    • Key-pair configuration - Click the link to set up keys for the connection. Refer to step 6 for more information.
  5. When finished, click Create connection.
6

Set up Snowflake key-pair authentication

If you have multiple Snowflake connections, each connection must use a different key-pair. We recommend using a different Snowflake user for each connection, but these users can use the same Snowflake role to simplify permissions administration.
If you selected Keypair authentication as the Authentication type, you’ll need to configure keys before you can save the connection.Omni can generate the keypair for you, or you can provide an existing private key.
  1. In the Keypairs tab, click Generate key-pair.
  2. Click Copy next to the public key.
  3. Navigate back to your Snowflake account and run the following:
    alter user omni_user set RSA_PUBLIC_KEY='COPIED_PUBLIC_KEY';
    
  4. In the Keypair tab in Omni, click the toggle in the Active column to enable the keypair.
Omni only supports RSA private keys without passphrases.
  1. In the Keypairs tab, click Add existing key.
  2. Paste the private key into the dialog. For example:
    -----BEGIN PRIVATE KEY-----
    MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCXHK07oaqx8fnY
    r3UbfUS6HRXQFRvQ0J8qqzgq+UH4ZqtgxV44ciSOwzL65E2aZrixXxB+s7Kbbw1q
    ...
    ...
    fAPCZRg8vdG8Hp26PwXxybZ/M9u7NaKJ0BT4AwKKtZTUxZVxz/kPhdHT+MpoQqJf
    JuzuwXVAAcl1GME2OiqkZhww
    -----END PRIVATE KEY-----
    
    Note: Omni will automatically add -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY----- if the key doesn’t have them.
  3. Click Add keypair. Omni will automatically generate the public key and redirect you back to the Keypairs tab.
  4. Click Copy next to the newly-generated public key.
  5. Navigate back to your Snowflake account and run the following:
    Set key for the Omni user
    alter user omni_user set RSA_PUBLIC_KEY='COPIED_PUBLIC_KEY';
    
  6. In the Keypair tab in Omni, click the toggle in the Active column to enable the keypair.

What’s next?

Now that your Snowflake is set up, you can: