This page provides an overview of BigQuery tables.
A BigQuery table contains individual records organized in rows. Each record is composed of columns (also called fields).
Every table is defined by a schema that describes the column names, data types, and other information. You can specify the schema of a table when it is created, or you can create a table without a schema and declare the schema in the query job or load job that first populates it with data.
BigQuery supports the following table types:
- Native tables: tables backed by native BigQuery storage.
- External tables: tables backed by storage external to BigQuery. For more information, see Querying External Data Sources.
- Views: Virtual tables defined by a SQL query. For more information, see Creating views.
BigQuery tables are subject to the following limitations:
- Table names must be unique per dataset.
- The console and the classic BigQuery web UI support copying only one table at a time.
- When copying tables, the destination dataset must reside in the same location as the table being copied. For example, you cannot copy a table from an EU-based dataset to a US-based dataset.
- When copying multiple source tables to a destination table by using the CLI or API, all source tables must have identical schemas.
- You can only delete one table at a time by using the console, the classic BigQuery web UI, the command-line tool, or the API.
- When exporting table data, the only supported destination is Cloud Storage.
As you approach 50,000 or more tables in a dataset, enumerating them becomes slower. Enumeration performance suffers whether you use an API call or the classic BigQuery web UI. Currently, the BigQuery web UI in the GCP console allows you to display only 50,000 tables per dataset.
To improve classic BigQuery web UI performance, you can use the
?minimalparameter to limit the the number of tables displayed to 30,000 tables per project. You add the parameter to the classic BigQuery web UI URL in the following format:
Quotas and limits apply to the different types of jobs you can run against tables, including:
- Loading data into tables (load jobs)
- Exporting data from tables (export jobs)
- Querying table data (query jobs)
- Copying tables (copy jobs)
For more information on all quotas and limits, see Quotas and limits.
When you create and use tables in BigQuery, your charges are based on how much data is stored in the tables and partitions and on the queries you run against the table data:
- For information on storage pricing, see Storage pricing.
- For information on query pricing, see Query pricing.
Many table operations are free, including loading, copying, and exporting data. Though free, these operations are subject to BigQuery's Quotas and limits. For information on all free operations, see Free operations on the pricing page.