Skip to content

Snowflake Integration

Use this integration when your data already lives in Snowflake and you want to sync tables or views into Resplendent for dashboards and reporting.

Resplendent connects with a read-only Snowflake user. It does not modify your warehouse data.


Resplendent supports two ways to authenticate. Pick one:

Method Best for Notes
Key pair (recommended) Most production setups Does not expire like an access token. Default option in the connect form.
Access token Quick setup Snowflake calls this a programmatic access token. Easier to create, but it must expire (usually up to 365 days).

Both methods use the same read-only service user from Step 1.


Item Where to find it
Account identifier See Find your account identifier below
Warehouse An existing warehouse Resplendent can use to run queries (for example COMPUTE_WH)
Database The database that holds the tables/views you want to sync
Schema Usually PUBLIC, or whichever schema contains your tables

Your account identifier is not your email or username. Do not include .snowflakecomputing.com.

Easiest: run this in a Snowflake worksheet

Section titled “Easiest: run this in a Snowflake worksheet”
SELECT CURRENT_ORGANIZATION_NAME() AS org,
CURRENT_ACCOUNT_NAME() AS account_name,
CURRENT_ACCOUNT() AS account_locator;

Then use one of these formats in Resplendent:

  1. Preferred: copy the exact account identifier from Snowsight (account menu → account details), or use <org>-<account_name> in lowercase
    Example: if org is MYORG and account name is ANALYTICS, enter myorg-analytics
  2. Alternative: the exact account_locator value returned by CURRENT_ACCOUNT() — do not invent or compose locator values by hand

If one format fails to connect, try the other.

  • In Snowsight, open the account menu (bottom-left) and copy the account identifier from account details
  • Look at the browser URL after app.snowflake.com/ — it often includes your org and account name

In Snowsight, open a SQL worksheet and run the script below as an admin (ACCOUNTADMIN or similar).

Before you run it, replace every <…> placeholder with names from your Snowflake account:

Placeholder Replace with
<your_warehouse> Your warehouse name (for example COMPUTE_WH)
<your_database> Your database name
<your_schema> Your schema name (for example PUBLIC)
-- Replace <your_warehouse>, <your_database>, and <your_schema> before running.
CREATE ROLE IF NOT EXISTS RESPLENDENT_SYNC_ROLE;
-- Allow the role to use your warehouse and read your data
GRANT USAGE ON WAREHOUSE <your_warehouse> TO ROLE RESPLENDENT_SYNC_ROLE;
GRANT USAGE ON DATABASE <your_database> TO ROLE RESPLENDENT_SYNC_ROLE;
GRANT USAGE ON SCHEMA <your_database>.<your_schema> TO ROLE RESPLENDENT_SYNC_ROLE;
GRANT SELECT ON ALL TABLES IN SCHEMA <your_database>.<your_schema> TO ROLE RESPLENDENT_SYNC_ROLE;
GRANT SELECT ON ALL VIEWS IN SCHEMA <your_database>.<your_schema> TO ROLE RESPLENDENT_SYNC_ROLE;
GRANT SELECT ON FUTURE TABLES IN SCHEMA <your_database>.<your_schema> TO ROLE RESPLENDENT_SYNC_ROLE;
GRANT SELECT ON FUTURE VIEWS IN SCHEMA <your_database>.<your_schema> TO ROLE RESPLENDENT_SYNC_ROLE;
-- Read-only service user for Resplendent (not a human login)
CREATE USER IF NOT EXISTS RESPLENDENT_SYNC
TYPE = SERVICE
DEFAULT_ROLE = RESPLENDENT_SYNC_ROLE
DEFAULT_WAREHOUSE = <your_warehouse>;
GRANT ROLE RESPLENDENT_SYNC_ROLE TO USER RESPLENDENT_SYNC;

Example with real names filled in:

GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE RESPLENDENT_SYNC_ROLE;
GRANT USAGE ON DATABASE SALES TO ROLE RESPLENDENT_SYNC_ROLE;
GRANT USAGE ON SCHEMA SALES.PUBLIC TO ROLE RESPLENDENT_SYNC_ROLE;
-- ...and so on

Need more than one schema? Copy the four GRANT … ON SCHEMA / SELECT lines and change <your_schema> for each extra schema.


Section titled “Step 2a: Set up key-pair authentication (recommended)”

This is the default option in Resplendent and the best choice for most production accounts.

Terminal window
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub

This creates:

  • rsa_key.p8private key (keep secret; upload this in Resplendent)
  • rsa_key.pubpublic key (register this in Snowflake)

Open rsa_key.pub, copy the key body without the -----BEGIN PUBLIC KEY----- and -----END PUBLIC KEY----- lines, then run:

ALTER USER RESPLENDENT_SYNC SET RSA_PUBLIC_KEY='<paste_public_key_body_here>';
  1. In Resplendent, go to Settings → Integrations
  2. Find Snowflake and click Connect
  3. Leave Key pair selected
  4. Upload or paste the private key from rsa_key.p8 (enter the passphrase too if the key is encrypted)
  5. Fill in the remaining connection fields (see Step 3), then save and test

Step 2b: Set up access token authentication (alternative)

Section titled “Step 2b: Set up access token authentication (alternative)”

Use this if you prefer an API-style token instead of key files. Snowflake calls this a programmatic access token.

For TYPE = SERVICE users, Snowflake normally requires a network policy on the user (or account) before you can create or use programmatic access tokens. An authentication policy can change that requirement. Confirm your account’s network/auth policy setup before relying on tokens.

Snowflake does not allow tokens that never expire. If you omit DAYS_TO_EXPIRY, Snowflake typically defaults to 15 days. The maximum allowed expiry is usually 365 days (subject to your authentication policy). Prefer the shortest expiry your operational rotation process can support.

ALTER USER RESPLENDENT_SYNC ADD PROGRAMMATIC ACCESS TOKEN resplendent
ROLE_RESTRICTION = 'RESPLENDENT_SYNC_ROLE'
DAYS_TO_EXPIRY = 90
COMMENT = 'Resplendent Data sync';

If you need less frequent rotation and your authentication policy allows it, you can raise DAYS_TO_EXPIRY up to the maximum (often 365):

ALTER USER RESPLENDENT_SYNC ADD PROGRAMMATIC ACCESS TOKEN resplendent
ROLE_RESTRICTION = 'RESPLENDENT_SYNC_ROLE'
DAYS_TO_EXPIRY = 365;
  1. Create a new token (use a new token name if the old name still exists).
  2. Update the access token in Resplendent.
  3. Remove the old one:
ALTER USER RESPLENDENT_SYNC REMOVE PROGRAMMATIC ACCESS TOKEN resplendent;
  1. In Resplendent, go to Settings → Integrations
  2. Find Snowflake and click Connect
  3. Choose Access token
  4. Paste the token into the Programmatic access token field
  5. Fill in the remaining connection fields (see Step 3), then save and test

If you have not already opened the form:

  1. Go to Settings → Integrations
  2. Find Snowflake and click Connect

Then fill in:

Field What to enter
Account identifier From Find your account identifier
Username RESPLENDENT_SYNC
Warehouse The same <your_warehouse> from Step 1
Database The same <your_database> from Step 1
Schema Optional. Same as <your_schema>, or leave blank to list schemas you can access
Role RESPLENDENT_SYNC_ROLE
Auth Key pair (recommended) or Access token — see Step 2a or 2b

Save and test the connection, then choose the tables/views to sync.

When you set up each dataset:

  • Primary key — unique ID for each row
  • Updated column — a timestamp such as UPDATED_AT

Without both, Resplendent does a full refresh instead of incremental sync.


Network policies (if your company uses them)

Section titled “Network policies (if your company uses them)”

If Snowflake restricts access by IP, ask your admin to allowlist Resplendent’s sync servers. Contact support@resplendentdata.com for the current IP list.