Skip to main content
The Snowflake direct connector lets Evidence run queries live against your Snowflake account.

Connecting

You’ll create a dedicated user in Snowflake, grant it access to the warehouse and data you want Evidence to read, then enter the credentials in Evidence.

Prerequisites

  • A Snowflake account with a warehouse and at least one database you want Evidence to query.
  • A user with SECURITYADMIN and SYSADMIN (or ACCOUNTADMIN) to run the setup SQL.

1. Create a role and user for Evidence

If you already have a read-only user suitable for BI workloads, skip to step 2. Otherwise, run the following, replacing <warehouse>, <database>, <schema>, and <strong-password> with your own values:
For key-pair authentication, replace the PASSWORD = '<strong-password>' line with RSA_PUBLIC_KEY = '<your-public-key>'. See the Snowflake docs on key-pair authentication for how to generate the key.

2. Configure the connector in Evidence

1

Open the connectors page

Go to Connectors in the sidebar. In the Warehouse card at the top, select Snowflake.
2

Enter connection details

Fill in the form with the credentials of the user you created.
3

Test and save

Click Test Connection. Once it passes, click Save.

Configuration reference

Credentials

string
required
Snowflake account identifier, e.g. xy12345.us-east-1.
string
required
Snowflake login name.
string
Password for password auth.
string
PEM-encoded RSA private key for key-pair auth.
string
Passphrase for the private key, if it is encrypted.
string
required
Compute warehouse to use for queries.
string
required
Default database.
string
Role applied per session.

Visibility

{ production: string; devSchemas: string[] }
Production schema, plus optional developer schemas that act as preview environments.

Row-level security

{ snowflakeVariable: string; evidenceVariable: `user.email` | `user.id` | `user.name` | `organization.id` }[]
Evidence identity → Snowflake session variable, ALTERed per query for RLS. Default: [].

Row-Level Security

Documentation for RLS is not yet available for Snowflake. Please contact support to set up RLS with the Snowflake direct connector.

Embedded viewers

For embedded analytics, every entry in the embed request’s attributes array becomes a Snowflake session variable for that viewer’s queries. Evidence runs SET before each query and clears the variables afterwards, so one viewer’s values never carry over to another viewer.
Read them in a row access policy with GETVARIABLE. An attribute that wasn’t sent returns NULL, so the policy fails closed:
  • Keys must contain only letters, digits, and underscores, and can’t be a Snowflake reserved keyword. Snowflake upper-cases unquoted names, so tenant_id is read as GETVARIABLE('TENANT_ID').
  • Arrays arrive as a JSON string, e.g. ARRAY_CONTAINS(region::VARIANT, PARSE_JSON(GETVARIABLE('REGIONS'))).
  • Values are limited to 256 bytes by Snowflake.
  • Attributes that break these rules are skipped, and the policy sees them as unset.
  • A configured session variable mapping with the same name takes precedence over an attribute.