Add a Snowflake connection

Prerequisites

Before you add a Snowflake connection, ensure the default role of the account being used has been granted usage on the database and the schema, and select on the tables that will be added to the connection.

Example:

  • Grant usage on database <databasename> to role <rolename>

  • Grant usage on schema <databasename>.<schemaname> to role <rolename>

  • Grant select on all tables in schema <databasename>.<schemaname> to role <rolename>

Connecting to Snowflake

To connect to Snowflake:

  1. Click Data in the top navigation bar.

  2. Click the Connections tab in the left navigation bar, and select the Snowflake tile. Alternatively, select + Create new in the left navigation bar, select Connection, and select the Snowflake tile.

  3. Create a name for your connection and a description (optional), then click Continue.

    Add a Snowflake connection
  4. Enter the connection details for your Snowflake data source using either OAuth, Microsoft Azure AD OAuth, or Service Account authentication:

    The Use OAuth option uses Snowflake OAuth authentication.

    Before selecting Use OAuth authentication, you must configure OAuth in Snowflake. For details, see Configure OAuth for a Snowflake connection.

    Before selecting Use External OAuth authentication, you must configure either Azure AD or Okta external OAuth. For details, see Configure Azure AD external OAuth for a Snowflake connection or see Configure Okta external OAuth for a Snowflake connection.

    • For OAuth authentication, do the following:

      1. Select Use OAuth.

      2. Enter Account name or your Snowflake URL, OAuth Client ID, OAuth Client Secret, Database (optional), Role (optional), and Warehouse (optional). Enter connection details

      3. If you wish to provide the optional additional key-value pairs for your Snowflake connection, complete the procedure in step 5, and then click Continue. If not, click Continue.

      4. When the Snowflake login screen appears, enter your Snowflake User Name and Password and click Log In, or use the Single-Sign-On option.

      5. In the next Snowflake screen, allow ThoughtSpot to access your Snowflake account by clicking Allow, and then go to step 7 to select tables for your connection.

        Using security passthrough may have implications for your Row Level Security. See About row level security (RLS) for more information.

    • For Microsoft Azure AD or Okta OAuth authentication, do the following:

      1. Select Use External OAuth.

      2. Enter Account name or Snowflake URL, OAuth Client ID, OAuth Client Secret, Scope, Auth URL, Access token URL, and (optional) Database. Enter connection details

      3. If you wish to provide the optional additional key-value pairs for your Snowflake connection, complete the procedure in step 5, and then click Continue. If not, click Continue.

      4. When the Microsoft sign-in screen appears, sign in to your account using the email and password of your Microsoft account associated with Azure.

      5. On the Stay-signed-in screen, click Yes.

    • For Use Service Account authentication, do the following:

      1. Select Use Service Account.

      2. Enter Account name, User, Password, Role, Warehouse, and (optional) Database. Enter connection details

    Refer to the Snowflake connection reference for more information on each of the specific attributes you must enter for your connection.

  5. (Optional) Configure proxy for your Snowflake connection by doing the following:

    1. Click the Advanced Config menu to reveal the Key and Value fields.

    2. For Key, enter useProxy, and for Value, enter true.

    3. Click the plus sign (+) to add additional Key and Value fields.

    4. For Key, enter proxyHost, and for Value, enter the URL of your proxy server.

    5. Click the plus sign (+) to add additional Key and Value fields.

    6. For Key, enter proxyPort, and for Value, enter your proxy port number.

      Snowflake Shared proxy limitation

      Snowflake uses proxy settings from the first connection, and reuses the proxy configuration across all connections.

      When setting up a proxy with Snowflake ensure that:

      • There are no other connections which use a different proxy or are without a proxy.

      • Ensure each new connection has the same proxy details. If there was an unsuccessful attempt to fetch metadata without proxy, adding a proxy later might not work because the Snowflake driver might assume no proxy.

  6. (Optional) Provide additional key-value pairs that you need to set up your connection to Snowflake or customize additional JDBC parameters supported by Snowflake, by doing the following:

    1. Click the Advanced Config menu to reveal the Key and Value fields.

    2. Enter your key and value information. For example, if you want to access multiple Snowflake databases in a single connection, but do not want the connection to access all your Snowflake databases, you can specify that here. For each specific database you would like to access, set database as the key, and the database name as the value. Refer to the Snowflake JDBC documentation.

    3. To add more keys and values, click the plus sign (+), and enter them.

    Any key-value pairs that you enter must be defined in your Snowflake data source. Key-value pairs are case-sensitive.
  7. Click Continue.

  8. Select tables (on the left) and the columns from each table (on the right), and then click Create connection.

    Select tables and columns for your connection

    The Create connection message appears, telling you the number of tables and columns that will be added to your connection.

  9. Click Create.

After you add the connection, you can search your Snowflake database using the Search field.

Your new connection appears on the Data > Connections page. You can click the name of your connection to view the tables and columns in your connection.

The connection you just created is a link to the external data source. If there are any joins in the selected tables of the external data source, those are imported into ThoughtSpot.

You can now perform a live query on the selected tables and columns of your connection. Because the selected tables and columns in your connection are linked, it may take a while to initially render the search results. This is because ThoughtSpot does not cache linked data. With linked data, ThoughtSpot queries the external database directly, which is slower than querying data that is stored in ThoughtSpot’s database.

You can modify a Snowflake connection in the following ways:

See the Connection reference for details of connection parameters.

We also recommend that you review Best Practices for Snowflake connections.