Hightouch lets you send data from your warehouse into your Google BigQuery.
Connecting Hightouch to BigQuery requires some setup in both platforms. It's recommended to set up a service account with the correct permissions in BigQuery before configuring the connection in Hightouch.
Find the location of your BigQuery dataset or sets. You can find this by querying the INFORMATION_SCHEMA.SCHEMATA view or by visiting the Google Cloud web console and clicking on a BigQuery dataset in the Explorer panel. You need both Project ID and Data location when connecting Hightouch to BigQuery.
Make sure billing is
enabled on
your project, otherwise Hightouch can't write into the cluster.
Your GCP service account will need permission to read and write data to BigQuery.
You can set up your service account to have full access to your project using a predefined role.
Otherwise, you can create a custom role and provide limited access according to a user-specified list of permissions.
You can grant full access by assigning the bigquery.user, bigquery.dataViewer, and bigquery.dataEditor roles to your service account.
You can do this in the Google Cloud web console or by running these snippets in the Cloud Shell.
Grant permission to read metadata and list tables:
If you don't want to grant full access to your BigQuery service account, you can opt to grant limited access instead.
You can do this by assigning the bigquery.dataViewer and bigquery.dataEditor roles only to the specific datasets, tables, or views you want to use in Hightouch.
Since you are assigning these roles only to specific resources, you need to assign the bigquery.user role and grant the bigquery.tables.get permission at the project level.
For this, you can create a custom role in the Google Cloud web console based on an existing predefined role (bigquery.user), which you can name custom.bigquery.user.
When setting up the custom role, click Add permissions to add the bigquery.tables.get permission to this custom role.
Then assign this role to your service account at the project level.
You can do this in the Google Cloud web console or by running this snippet in the Cloud Shell:
If this custom.bigquery.user role still isn't limited enough, you can try assigning the bigquery.jobUser role and granting the bigquery.dataset.get, bigquery.tables.get, and bigquery.tables.list permissions at the project level.
Hightouch needs to be able to list the schemas and tables in your BigQuery
project when setting up your sync configuration.
Once you've set up your Google BigQuery 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 Google BigQuery destination you want to sync to.
To match rows from your model to rows in BigQuery when upserting, Hightouch requires you to select a unique identifier in the table you are syncing to.
This statement will fail if there are duplicate identifier values in your table.
Hightouch provides complete visibility into the API calls made during each of your sync runs. We recommend reading our article on debugging tips and tricks to learn more.