Key takeaways
- BigQuery shows storage per table in INFORMATION_SCHEMA.TABLE_STORAGE, and the number to report is the sum of total_logical_bytes, the uncompressed size, in GB.
- Physical bytes are compressed and include time travel copies, so they understate the current data; the view must be queried once per location.
- Each table is exported to Cloud Storage with bq extract, EXPORT DATA or the console; a wildcard in the file name splits output over 1 GB, and one job exports one table.
- You don't need to export anything to apply: have your size in GB, years of history and customer or user count ready, and the data vendor anonymizes the records before any AI lab sees them.
01
What is BigQuery data, and why do AI labs and data vendors buy it?
The short answer
BigQuery data is the set of tables a company keeps in BigQuery, Google Cloud's data warehouse: web and app events, sales transactions, server logs and marketing records loaded from many of its other systems over years. AI labs (companies that build and train AI models) and data vendors (companies that anonymize business records and package them for those labs) buy a copy because the tables tie what customers did to what happened next, with a consistent timestamp on every row.
What a BigQuery warehouse records
A data warehouse is a database built to analyze very large volumes of records collected from many of a company's other systems, instead of running one application day to day. BigQuery is Google's warehouse, hosted on Google Cloud. Its tables sit inside datasets, which are folders that group related tables, and each dataset lives in one location, such as the US or the EU.
Companies load into it their website and app events, their sales transactions, their server logs and their advertising data. Many tables are also partitioned by date, which means each day's rows are stored as their own slice, so a long range of dates comes out consistent and each day can be read on its own.
Why linked warehouse tables teach an AI model something
An AI model learns by studying a very large number of examples and finding the patterns in them, and those examples are called training data. A warehouse is a strong source because it joins records that no public text contains together. A table of website sessions and a table of purchases can share a customer ID, so each purchase can be traced back to the visits that came before it.
AI labs now want to train AI agents, software that carries out a job step by step, and an agent learns a job from records of that job being done. A data vendor can turn anonymized histories, such as sessions that ended in a purchase or support contacts that ended in a renewal, into worked examples that an agent studies, or into a practice copy of the business in which the agent is scored on each attempt. The full mechanism is in AI training data: why AI companies want your company's data.
How BigQuery fits into a dataset
A BigQuery warehouse is usually one of several sources in a company's dataset, next to email, documents and tickets. Companies are paid $100K to $2M or more per dataset, according to micro1, the data vendor we typically refer companies to. The price covers the whole dataset, not each source on its own, and what your data is worth explains what moves it.
02
Where does BigQuery show how much data you have?
The short answer
BigQuery reports the size of every table through INFORMATION_SCHEMA.TABLE_STORAGE, a built-in view that a person with read access to project metadata can query. The console shows the same figures for one table under Storage info on its Details tab. The number to report is the sum of total logical bytes, which measures the data uncompressed, written in gigabytes (GB).
How to read your storage total
The steps below are run by a developer or analyst in the BigQuery query editor, the SQL window in the Google Cloud console. They follow Google's TABLE_STORAGE view reference.
- Ask a project administrator for the role BigQuery Metadata Viewer (
roles/bigquery.metadataViewer) on the project, or for the two permissionsbigquery.tables.getandbigquery.tables.listinstead. Billing account access is not required, and the view exists in every project, whichever storage billing model it uses. - In the query editor, run this statement. It adds up every table in each dataset and shows rows, logical size and physical size side by side:
SELECT table_schema, SUM(total_rows) AS row_count, ROUND(SUM(total_logical_bytes)/POW(1024,3),2) AS logical_gb, ROUND(SUM(total_physical_bytes)/POW(1024,3),2) AS physical_gb FROM `region-us`.INFORMATION_SCHEMA.TABLE_STORAGE WHERE NOT deleted GROUP BY table_schema ORDER BY logical_gb DESC;Replaceregion-uswith the location your datasets are in, such asregion-eu. The query has to run in that same location, so a company with datasets in several locations runs one query per location and adds the results. - For one table only, click it in the Explorer pane and look at Storage info on the Details tab.
- To learn how far back the data goes, ask your largest tables for their oldest date, for instance
SELECT MIN(event_date) FROM mydataset.events;.
Which size columns to add up
The view reports the same tables in several ways, and only one of them is the figure to report.
| Column | What it counts | Use it? |
|---|---|---|
total_logical_bytes | The uncompressed size of the current data. | Yes. This is the figure to report. |
total_physical_bytes | The compressed size on disk, which also includes time travel bytes (changed or deleted data that BigQuery keeps for a short window). | No. It understates the current data and mixes in old versions. |
time_travel_physical_bytes and fail_safe_physical_bytes | Changed or deleted data kept for 2 to 7 days (7 by default) for time travel, and for a further 7 days of fail-safe, a last-resort recovery copy. | No. Leave both out. |
Why the number can lag or fall short
The view usually updates within minutes, but a change from a table expiring or from a new time travel window can take up to a day to appear. The query also skips deleted tables because of the WHERE NOT deleted filter. A project in a location you forgot to query adds nothing to the total, so check every location that holds a dataset.
03
What should you know about your BigQuery data before you apply?
The short answer
Have three facts ready: the total logical size of your tables in GB, how many years of records they hold and how many customers or users the records describe. They go into the data manifest, the written summary of which sources hold your records, how many years each covers and roughly how much. You don't need to run an export to find them.
The size in GB
Add up total_logical_bytes across your datasets and write the total in GB. Logical bytes are the uncompressed size, which is the best match for the data you would hand over. Leave out the physical figure, because it is compressed and counts old versions of changed or deleted rows. The query above divides by 1024 three times, so its GB are gibibytes (1,073,741,824 bytes each).
The years of history
Take the years of history from the oldest event or created timestamp inside your main tables. The creation_time column says only when someone created the table, and the records loaded into it may reach back much further.
The number of seats
The seat count is the number of customers or users whose activity the tables record. It is not the number of analysts who run queries in BigQuery.
What you don't need to do first
You don't need to export anything to apply, and you don't need to clean or scrub the records. The data vendor anonymizes them before anyone else sees them, and nothing moves until a lawyer-reviewed license is signed. You only need the size, the years and the count for the first conversation. The application, the intro call and each later step are laid out in how to sell your company's data.
04
How do you export your full BigQuery history?
The short answer
An account with the BigQuery Data Viewer role exports each table to a Cloud Storage bucket (Google's file storage service), which is the only destination BigQuery offers. For example, bq extract --destination_format PARQUET writes Parquet files in pieces, and a * in the file name lets BigQuery split anything over 1 GB.
What you need first
First create a Cloud Storage bucket that sits in the dataset's own location. The account running the export needs bigquery.tables.export (part of BigQuery Data Viewer) and bigquery.jobs.create, and on the bucket it needs storage.objects.create and storage.objects.delete, both of which come with Storage Object Admin.
Google advises switching off Bucket Lock and Soft Delete retention on the bucket while the export runs. The details are in Google's guide to exporting table data.
The steps, one table at a time
A single extract job exports only one table, so each step below is repeated for every table. You can use any one of the three methods.
- From the command line, run
bq extractonce for each table. The*in the file name lets BigQuery write more than one file:bq extract --destination_format PARQUET --compression SNAPPY mydataset.mytable gs://my-bucket/mytable/part-*.parquet
- With SQL, run an
EXPORT DATAstatement, which also lets you choose the columns and put the rows in order:EXPORT DATA OPTIONS ( uri='gs://my-bucket/mytable/*.parquet', format='PARQUET', overwrite=true ) AS SELECT * FROM mydataset.mytable;
- In the console, open the Explorer pane, expand the dataset, choose Overview > Tables, select the table and choose More > Export to Google Cloud Storage. In the dialog, pick the bucket location, the export format and the compression, then click Save.
Formats and compression
| Format | Compression allowed | Notes |
|---|---|---|
| CSV | GZIP | Cannot hold nested or repeated fields (columns that contain lists or sub-records). |
| JSON (newline-delimited) | GZIP | Writes 64-bit integers as strings, and turns the characters <, > and & into \uNNNN codes. |
| Avro | DEFLATE, SNAPPY | Keeps nested and repeated fields. |
| Parquet | SNAPPY, GZIP, ZSTD | Keeps nested and repeated fields. |
The console offers only GZIP, so choose bq extract or the SQL statement for Snappy or Zstandard compression.
Limits to plan around
Each file holds at most 1 GB of logical data, and the sizes of the files vary, so a large table becomes many files. On the shared pool of free processing capacity, a project can extract at most 50 TiB a day. Moving the project onto a slot reservation (capacity you pay for) that has the job type PIPELINE removes the cap, and you are then billed at capacity prices.
EXPORT DATA statements are not supported in a PIPELINE reservation, so use bq extract or the console there. A view stores no data of its own, so it can only be exported with EXPORT DATA.
What an export leaves out
An export holds the table as it stands when the job runs, and rows loaded while an extract is running are not included. The order of the rows is not guaranteed unless you use EXPORT DATA with an ORDER BY clause. Time travel and fail-safe copies are not exported, and the file sizes from EXPORT DATA are not guaranteed either.
How long an export takes
None of the Google pages we checked gives a time, because it depends on the size of the table and the capacity available. Because each table is its own job, a project with many tables is exported as a series of jobs, and you can run several at once within the limits described earlier.
Sources: Google Cloud, TABLE_STORAGE view, Export table data to Cloud Storage, Data retention with time travel and fail-safe and Quotas and limits. Steps checked against these pages in November 2026.
05
What stays private when BigQuery data is licensed?
The short answer
The company decides which tables and columns leave BigQuery, and the data vendor replaces names and other personal details with consistent stand-ins before an AI lab sees anything. The company keeps ownership of its warehouse, and the license covers defined records for a defined use.
You choose what is in scope
EXPORT DATA runs a query, so you can drop columns such as emails, device IDs or payment fields before anything is written to Cloud Storage. For example, SELECT * EXCEPT (email, device_id) FROM mydataset.events writes every column of the table except those two. The data vendor also deletes records too sensitive to clean safely instead of anonymizing them.
Names are replaced before a lab sees them
Anonymization means replacing every detail that identifies a person or a company, such as a name or an email address, with a stand-in that is the same every time it appears. The records still link to each other and the dates still run in order, so a lab can learn from them, but they no longer say who anyone is. The diagram shows one set of records before and after.
The method, including what is deleted outright and how you review samples, is in how company data is anonymized for AI training.
Ownership and payment
Licensing gives the buyer limited rights to a copy, while the company keeps ownership of the originals. The terms that matter, such as exclusivity, permitted use and deletion, are covered in data licensing. micro1 pays in full within 30 days of accepting the data, usually as a single payment.
Questions
Frequently asked questions
Should I report logical bytes or physical bytes?
Logical bytes. They give the size of your current data before compression, which is what a buyer receives. Physical bytes are compressed and also count time travel copies, so they say little about how much live data you hold.
Why does my TABLE_STORAGE query return an error?
Most often the location is missing or wrong. The view name must start with a qualifier such as region-us, and the query must run in that location, so datasets spread over several locations need a separate query each.
Can I export a table larger than 1 GB?
Yes, if the destination file name contains a wildcard, as in gs://my-bucket/mytable/part-*.parquet. BigQuery then writes as many numbered files as the table requires.
Is there a daily limit on how much I can export?
Yes, on the default setup: the shared pool allows 50 TiB of extracts per project per day. A project that needs more can be assigned to a reservation with the job type PIPELINE.
Can I export BigQuery data to my computer or Google Drive?
No. Cloud Storage is the only destination for table data, so the files land in a bucket first and you download them from there.
Do we need to export BigQuery before we apply?
No. The application takes about two minutes and shares no data. You only need your total size in GB, your years of history and your number of customers or users for the intro call, and the storage query above gives you the first. The full export is needed later, when the records are transferred after you sign the license.
Can we leave out columns that hold sensitive information?
Yes. An EXPORT DATA statement exports the result of a query, so you can list only the columns you agree to share, or use SELECT * EXCEPT to drop a few.
What is BigQuery data worth to AI labs and data vendors?
It is priced as part of a whole dataset rather than on its own. Companies are paid $100K to $2M or more per dataset, according to micro1, and the price depends on the years of history and how completely the records show each job. What your data is worth explains the factors.
Bottom line
Know what is in BigQuery, then see what it is worth
You don't need to export anything to apply. Apply in two minutes, describe your records on the intro call, and micro1, the data vendor we typically refer companies to, prices the whole dataset and sends an offer 1–2 days later.
Not legal, tax or financial advice. Figures come from micro1's published pages and public reporting as of November 2026.