Supported syncing
Snowflake credential setup
To allow Hightouch access to Snowflake, it’s best to create a user specifically provisioned with access to the required tables and schemas. You can also use a personal Snowflake login for your credentials, as long as it has the correct permissions, specifically:- Add, update, and delete (if applicable) rows in your sync’s table.
- View the
INFORMATION_SCHEMA.COLUMNStable which is used for gathering metadata to set up the sync
Service account setup
You can use the following SQL template to create a service account with the necessary roles and permissions with some considerations:- This snippet provides an example of creating a service account; you may need to alter it depending on your Snowflake implementation details.
- RSA key pair authentication setup is detailed in the Connect to Snowflake section.
- If you want Hightouch to access multiple databases, run the snippet multiple times, changing
ht_databaseeach time.
Connect to Snowflake
Go to the Destinations overview page and click the Add destination button. Select Snowflake and click Continue. If you’re not using a tunnel, you can then authenticate Hightouch to Snowflake by entering the following fields:- Account identifier - You can find this identifier at the beginning of your Snowflake URL, for example, (
https://ACCOUNT_IDENTIFIER.snowflakecomputing.com). - Warehouse - This specifies the warehouse to use when Hightouch executes queries in Snowflake.
- Database - This specifies the database to use when Hightouch executes queries in Snowflake.
- Username - This can be your personal Snowflake login or a dedicated user for Hightouch. Note: Use the “Login name”, which may differ from the Snowflake username.
- Role (optional) - Use this field to specify the role Hightouch should use when executing queries in Snowflake. If left blank, Hightouch uses the user’s default role.
Account identifier format may differ based on Snowflake account age. For example, older Snowflake accounts often have identifiers that look like
ACCOUNT_LOCATOR.CLOUD_REGION_ID.CLOUD, whereas newer Snowflake accounts have identifiers that look like ORGNAME-ACCOUNT_NAME.
For more details, visit Snowflake’s account identifier docs.- RSA key pair (recommended)
- Password
Snowflake is deprecating password authentication in favor of RSA key pair authentication or multi-factor authentication. Hightouch connections configured with password authentication continue to work only if Snowflake permits it. For details, see Snowflake’s MFA rollout guide. Check your Snowflake account for the rollout timeline.
SELECT query.
RSA authentication
Generate a private key and public key by running the following commands in your terminal:ALTER USER command to assign the public key to your Hightouch Snowflake user:
SSH tunneling
Hightouch can connect directly to Snowflake over the public internet or via an SSH tunnel. Since data is encrypted in transit via TLS, a direct connection is suitable for most use cases. You may need to set up a tunnel if your Snowflake instance is on a private network or virtual private cloud (VPC). Hightouch supports both standard and reverse SSH tunnels. To learn more about SSH tunneling, refer to Hightouch’s tunneling documentation.Sync configuration
Once you’ve set up your Snowflake destination and have a model to pull data from, you can set up your sync configuration to begin syncing data. Go to the Syncs overview page and click the Add sync button to begin. Then, select the relevant model and the Snowflake destination you want to sync to.Sync mode
Hightouch supports Upsert mode using theMERGE INTO statement, with the option to delete removed rows, Insert mode using the COPY INTOstatement, and Mirror mode which will TRUNCATE the table and then use the COPY INTOstatement to insert all rows from the model.
In all three modes, Hightouch uploads your mapped data to your Snowflake’s staging table using the PUT file statement. When the operation is complete, Hightouch removes the staging file(s).
Insert and mirror modes create a CSV file that is required for the COPY INTO statement. When the operation is complete, Hightouch removes the file.
Record matching
To match rows from your model to rows in Snowflake, Hightouch requires you to select a unique identifier in the table you are syncing to. The Snowflake column you select must be set as aUNIQUE, PRIMARY KEY column within Snowflake.
You can see columns that fit this criteria as available options in records matching section.
If there are no fields in the dropdown, you must add a unique type column to your Snowflake table. Then, click the refresh icon to access the newly created column.