Skip to main content
Skip table of contents

Snowflake

Snowflake setup

You need the following information to set up the Snowflake connector in Cyclr:

Create a security integration

You need to create a security integration in Snowflake to get the client ID and client secret. For more information., see Snowflake's guide on how to create a security integration in the Snowflake console. The following example creates a security integration called cyclr_oauth that issues a refresh token once every 90 days:

CODE
create or replace security integration
    cyclr_oauth
    TYPE = OAUTH
    ENABLED = TRUE
    OAUTH_CLIENT = CUSTOM
    OAUTH_CLIENT_TYPE = CONFIDENTIAL
    OAUTH_REDIRECT_URI = 'https://example.cyclr.com/connector/callback'
    OAUTH_ISSUE_REFRESH_TOKENS = TRUE
    OAUTH_REFRESH_TOKEN_VALIDITY = 7776000;

Warning: Snowflake does not allow you to refresh tokens with the API. The user needs to log in again once the refresh token expires. To extend the duration of the refresh token, you can contact your Snowflake account administrator. For more information, see Snowflakes documentation on OAuth.

Note: The OAUTH_REDIRECT_URI field needs to point to the OAuth redirect URL of your Cyclr account. The URL has the format: https://{Your Cyclr service domain e.g. app-h.cyclr.com}/connector/callback.

Get the client ID and client secret

You need a client ID and client secret to authenticate the Snowflake connector in Cyclr. Before you can get these credentials, you need to create a security integration. For more information on how to get the client ID and client secret, see the Snowflake documentation. The following example gets the client ID and client secret for the security integration created in the previous section:

CODE
select system$show_oauth_client_secrets('CYCLR_OAUTH');

Note: The integration name cyclr_oauth is converted to upper case and you need to enter CYCLR_OAUTH instead for this request.

Getting the account identifier

You need your account identifier to authenticate the Snowflake connector in Cyclr. Your account identifier is the subdomain in your Snowflake account URL provided on account creation. This is the same URL that you use to log in to Snowflake. For example, the account URL https://AB12345.europe-west1.gcp.snowflakecomputing.com has the account identifier AB12345.europe-west1.gcp.

Cyclr setup

To set up your Snowflake connector within your Cyclr console:

  1. Go to your Cyclr Console.

  2. Select Connectors > Application Connector Library at the top of the page.

  3. Use the search box to find the Snowflake connector.

  4. Select the Setup Required icon.

  5. Enter the below values, omitting this step will allow you to use different settings for each account on installation:ValueDescriptionClient IDThe client ID of your Snowflake account.Client SecretThe client secret of your Snowflake account.

  6. Select Save Changes.

Account setup

Cyclr asks for the following values when you install the Snowflake connector within an account:

Value

Description

Client ID

The client ID of your Snowflake account, if you did not enter this in step 5 above.

Client Secret

The client secret of your Snowflake account, if you did not enter this in step 5 above.

Account Identifier

The account identifier of your Snowflake account.

Warehouse

The Snowflake warehouse to process queries with.

Database

The Snowflake database to access data in.

Schema

The Snowflake schema to access data in.

Note: You can install the connector without providing a warehouse, database, and schema and use methods in the Utilities category to list accessible warehouses, databases, and schemas.

Create custom Table Rows objects

You can create custom Table Rows objects to have methods specific to a Snowflake table. These objects can automatically populate request and response fields for methods within the custom object. To create a custom object:

  1. Go to the Edit Connector page for the Snowflake connector.

  2. Under the Methods & Fields heading, locate the Table Rows category and select it to expand.

  3. Select the red Copy this Category to create a Custom Object Category icon.

  4. Use the dropdown menu to select the Snowflake table name.

  5. Select Copy.

Use last successful run date in a Table Rows > List Rows inline merge field

The Where parameter can normally include the {{LastSuccessfulRunDate}} inline merge field to include the last successful run date:

CODE
CREATED_AT > '{{LastSuccessfulRunDate}}'

Due to how the Snowflake API paginates data, you can't use the {{LastSuccessfulRunDate}} inline merge field in this way. To work around this, you can use the Table Rows > List Rows method in a cycle:

  1. Select Step setup.

  2. Set Skip Pre-POST Request? to True.

  3. Set Where to Ignore.

  4. Enter the following script:

    CODE
    function before_action() {
        prePostRequest();
        return true;
    }
    
    function prePostRequest() {
        if (!prePostRequestCalledTrue()) {
            setRole();
            method_request_headers.where = `CREATED_AT > '${last_successful_run_date}'`;
            handlePrePostRequest();
            setIndex();
            action_data.prePostRequestCalled = true;
        }
    }
    
    function prePostRequestCalledTrue() {
        return action_data != null && action_data.prePostRequestCalled != null && action_data.prePostRequestCalled === true;
    }
  5. Update line 9 of the script with the appropriate where clause. last_successful_run_date can be used to include the last successful run date.

  6. Start the cycle.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.