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.
Choose an authentication method
Section titled “Choose an authentication method”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.
What you’ll need
Section titled “What you’ll need”| 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 |
Find your account identifier
Section titled “Find your account identifier”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:
- Preferred: copy the exact account identifier from Snowsight (account menu → account details), or use
<org>-<account_name>in lowercase
Example: if org isMYORGand account name isANALYTICS, entermyorg-analytics - Alternative: the exact
account_locatorvalue returned byCURRENT_ACCOUNT()— do not invent or compose locator values by hand
If one format fails to connect, try the other.
Other ways to find it
Section titled “Other ways to find it”- 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
Step 1: Create a read-only user
Section titled “Step 1: Create a read-only user”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 dataGRANT 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 onNeed more than one schema? Copy the four GRANT … ON SCHEMA / SELECT lines and change <your_schema> for each extra schema.
Step 2a: Set up key-pair authentication (recommended)
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.
1. Generate a key pair on your computer
Section titled “1. Generate a key pair on your computer”openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocryptopenssl rsa -in rsa_key.p8 -pubout -out rsa_key.pubThis creates:
rsa_key.p8— private key (keep secret; upload this in Resplendent)rsa_key.pub— public key (register this in Snowflake)
2. Register the public key in Snowflake
Section titled “2. Register the public key 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>';3. Use it in Resplendent
Section titled “3. Use it in Resplendent”- In Resplendent, go to Settings → Integrations
- Find Snowflake and click Connect
- Leave Key pair selected
- Upload or paste the private key from
rsa_key.p8(enter the passphrase too if the key is encrypted) - 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.
Prerequisites for service users
Section titled “Prerequisites for service users”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.
Token expiry
Section titled “Token expiry”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';Longer expiry (up to the account maximum)
Section titled “Longer expiry (up to the account maximum)”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;Rotate a token later
Section titled “Rotate a token later”- Create a new token (use a new token name if the old name still exists).
- Update the access token in Resplendent.
- Remove the old one:
ALTER USER RESPLENDENT_SYNC REMOVE PROGRAMMATIC ACCESS TOKEN resplendent;Use it in Resplendent
Section titled “Use it in Resplendent”- In Resplendent, go to Settings → Integrations
- Find Snowflake and click Connect
- Choose Access token
- Paste the token into the Programmatic access token field
- Fill in the remaining connection fields (see Step 3), then save and test
Step 3: Connect in Resplendent
Section titled “Step 3: Connect in Resplendent”If you have not already opened the form:
- Go to Settings → Integrations
- 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.
For better sync performance
Section titled “For better sync performance”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.