BigQuery Destination
BigQuery is a data destination for Profiles Sync. Instead of pushing to an ad platform, BPP writes your exported user attributes into a table inside a dataset in your own Google Cloud project — ready for your CRM, BI tools, or downstream pipelines to read.
What you can do
- Profiles Sync — write a one-row-per-user table of keys and attributes into a BigQuery dataset you choose.
Prerequisites
- A BigQuery connection to your Google Cloud project, with BPP granted access (the same access model used to read your data — see GCP Permissions).
- An existing dataset in that project to write into. BPP writes the destination table into this dataset; the dataset itself must already exist.
- Write access for BPP on that dataset. Creating and replacing the destination table requires the BigQuery Data Editor role (
roles/bigquery.dataEditor) — the same role already granted for BPP's internal datasets.
How it works
Each run, BPP:
- Applies your sync's filters to find the users to include.
- Reads the selected keys and attributes for those users.
- Combines them into one row per user, using the destination column names you configured.
- Writes the result into the table you named, in the dataset you chose.
Each run is a full replacement — the table is overwritten with the current export every time. The table name stays stable, so downstream systems can always point at it and read the latest data.
Destination configuration
You configure the BigQuery destination directly on the Profiles Sync (under Destination):
| Setting | What it means |
|---|---|
| Connection | The BigQuery connection to your Google Cloud project. |
| Dataset | The existing dataset the table is written into. |
| Table name | The name of the table BPP creates and replaces on each run. |
The column names in the output table come from the destination names you set on each key and attribute under Keys & Attributes. See Create a Profiles Sync.
Using the exported table
- Point your CRM, CDP, BI tool, or pipeline at the fully-qualified table (
project.dataset.table). - Read it after each scheduled run — the table always holds the latest export.
- Do not write to this table from other processes. BPP replaces it entirely on every run, so any external writes are lost.
- If you need historical snapshots, copy or partition the table into your own history table downstream. Profiles Sync keeps only the latest export.
Supported export types
| Export type | Used with | Notes |
|---|---|---|
| User attribute table | Profiles Sync | One-row-per-user table, fully replaced each run. |
Troubleshooting
Dataset not found
The dataset named in the destination does not exist in the project, or BPP's service account cannot see it. Create the dataset and confirm the connection has roles/bigquery.resourceViewer and roles/bigquery.dataEditor.
Permission denied on write
BPP could not create or replace the table. Grant the BigQuery Data Editor role on the project (or dataset) to the account BPP uses. See GCP Permissions.
Sync completed but the table is empty
The filters matched no users, so there was nothing to write. This is a successful run, not an error — review your filter conditions if you expected rows.
Connection in Error state
If the connection's credentials or access have changed, the sync enters Error state. Restore access on the Google Cloud project and the next scheduled run will retry automatically, or trigger Run Sync manually.