BigQuery: How to move a GA4 dataset to another GCP project

Sometimes you need to move historical data from a Google Analytics 4 export to a different BigQuery project – for example, when changing your project structure, switching to a new billing account, or consolidating data. In this article, we’ll show how to copy GA4 datasets using BigQuery Data Transfer Service (there are other methods as well).
Why move a GA4 dataset to another GCP project?
GA4 lets you export analytics data to BigQuery, which opens the door to in-depth analysis and long-term storage. However, if you need to move the data to a different project- say, for access management, cost allocation, or a new GCP account - simply reconnecting GA4 to the new project isn’t enough. You also have to transfer the historical data that remains in the original dataset. Below, I walk through how to do that step by step.
1) Changing the BigQuery link in GA4
First, you need to update the connection in GA4 itself:
1. In the GA4 Admin interface, open Product Links -> BigQuery Links.
2. Remove the existing link to the current BigQuery project.

3. Create a new link and connect GA4 to the new (or second) BigQuery project. Make sure to choose the same Data location!

This will automatically create a new dataset in the new project (with the same name as the original one). New data from GA4 will start flowing into this new dataset, but your historical data will still remain in the original project.
2) Copy the dataset using BigQuery Data Transfer Service
The next step is to move the historical data from the old project to the new one. Here’s how to do it using BigQuery Data Transfer Service.
Follow these steps:
1. In the new project, open Data Transfers.
2. Click + Create Transfer.

3. In the Source field, select Dataset Copy.
4. Fill in the following parameters:
- Display name: Name your data transfer, for example ga4_dataset_copy
- Repeats: Select On-demand (we’ll run the copy manually, just once).
- Destination dataset: Enter the ID of the dataset created in the new project.
- Source dataset: Enter the name of the dataset you want to copy. (For GA4 exports, the dataset name should be the same as the destination dataset - GA4 automatically creates the dataset based on the schema analytics_<ID GA4 property>)
- Source project: the ID of the original project.
5. You can leave all other options as they are.
6. Make sure not to check Overwrite destination table - you don’t want to overwrite the data that’s currently being collected!
Then click Run transfer now → Run one-time transfer.

The copying process starts immediately, and you can monitor its progress directly in the Details section.
Pricing
Within the same location (e.g., europe-west3), copying should be free of charge.
However, regular storage costs still apply - so it’s a good idea to delete the original dataset once the transfer is complete.
When to change the GA4 link?
I recommend changing the BigQuery link in GA4 after the data transfer from the events_intraday_ table to the events_ table in the original project has finished. This ensures you’ll have a full day of data in BigQuery and won’t end up with “broken” daily reports.
On the day you switch the link, GA4 will start writing new data to the events_intraday_ table in the new project, while the old project will still contain an unfinished intraday table for the same day. This is the only complication — and if needed, you can work around it a bit 😊.
Here’s the link to Google’s official documentation: 👉 https://cloud.google.com/bigquery/docs/managing-datasets#copy-datasets

















