Overview
- Snowflake
- BigQuery
- Redshift
- Postgres
- Databricks
Granting Required Warehouse Permissions
hightouch_planner
. The user that Hightouch uses to connect to
your warehouse must have permissions to create this schema, and create tables
within it.Snowflake
GRANT CREATE SCHEMA ON DATABASE <your_database> TO <hightouch_role>
BigQuery
bigquery.datasets.create
permission to the Hightouch user.Redshift / Postgres
GRANT CREATE ON DATABASE <your_database> TO <hightouch_user>
Precreating the Warehouse Schema
hightouch_audit
schema. This is used for Warehouse Sync Logs, and when
checking the permission Hightouch will check whether hightouch_audit
exists too. If warehouse sync history is not enabled, Hightouch will not write anything to hightouch_audit
schema.BigQuery
-
Create the schema by running the following SQL
CREATE SCHEMA hightouch_planner CREATE SCHEMA hightouch_audit
-
Give your GCP service account access to run jobs and list the schema by granting it the following roles:
roles/bigquery.jobUser
roles/bigquery.metadataViewer
-
Give your GCP service account access to manage tables within the
hightouch_planner
schema by running the following SQLGRANT `roles/bigquery.dataViewer`, `roles/bigquery.dataEditor` ON SCHEMA hightouch_planner TO "serviceAccount:$USER@$PROJECT.iam.gserviceaccount.com" GRANT `roles/bigquery.dataViewer`, `roles/bigquery.dataEditor` ON SCHEMA hightouch_audit TO "serviceAccount:$USER@$PROJECT.iam.gserviceaccount.com"
Snowflake
-
Create the schema by running the following SQL
CREATE SCHEMA hightouch_planner CREATE SCHEMA hightouch_audit
-
Grant Hightouch user access to planner and audit schema
GRANT OWNERSHIP ON SCHEMA hightouch_planner TO hightouch_user GRANT OWNERSHIP ON SCHEMA hightouch_audit TO hightouch_user
Enabling Warehouse Planning For Your Syncs

Migrating from remote diffing
- Be aware that Warehouse Planning requires your primary key to be unique. This is a requirement for syncs to work well in general, but it is only strictly enforced in Warehouse Planning. If you're unsure if your primary key is unique, you may want to check that it's unique before migrating.
- If you have a large number of syncs that will be migrated, please reach out so that we can help you migrate incrementally.
- If you hit any errors, they will likely be fixed with a full resync if your sync is idempotent and there aren't any removes that need to be executed.
Common Errors
Primary Key Is Not Unique
ROW_NUMBER()
function. This generally looks like:WITH your_data_model AS (
// copy/paste your model here
)
WITH your_data_model_with_rank AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY your_primary_key) as rank FROM your_data_model
)
SELECT * FROM your_data_model_with_rank WHERE rank=1
ORDER BY
or WHERE
to filter and select the data you want from duplicates.- Connection issues with your data warehouse?
- Confusing API responses from destination systems?
- Unsupported destination objects or modes?
- Help with complex SQL queries?
Need help?
Our team is relentlessly focused on your success. We're ready to jump on a call to help unblock you.
or
Feature Requests?
If you see something that's missing from our app, let us know and we'll work with you to build it!
We want to hear your suggestions for new sources, destinations, and other features that would help you activate your data.