Google Cloud Platform
BigQuery

Pricing

BigQuery offers scalable, flexible pricing options to help fit your project and budget. BigQuery charges for data storage, streaming inserts, and for querying data, but loading and exporting data are free of charge.

BigQuery provides cost control mechanisms that enable you to cap your daily costs to an amount that you choose. For more information, see Cost Controls.

When charging in local currency, Google will convert the prices listed into applicable local currency pursuant to the conversion rates published by leading financial institutions.

The following table summarizes BigQuery pricing. BigQuery's quota policy applies for these operations.

Action Cost Notes
Storage $0.020 per GB, per month See Storage pricing.
Streaming Inserts $0.01 per 200 MB See Storage pricing.
Queries $5 per TB First 1 TB per month is free, subject to query pricing details.
Loading data Free See Loading data into BigQuery.
Copying data Free See Copying an existing table.
Exporting data Free See Exporting data from BigQuery.
Metadata operations Free List, get, patch, update and delete calls.

Contents

Free operations

The following table shows BigQuery operations that are free of charge. BigQuery's quota policy applies for these operations.

Action Examples
Loading data Loading data into BigQuery
Copying data Copying an existing table
Exporting data Exporting data from BigQuery
Metadata operations List, get, patch, update and delete calls

Storage pricing

Loading data into BigQuery is free, with the exception of a small charge for streamed data. Storage pricing is based on the amount of data stored in your tables, which we calculate based on the types of data you store. For a detailed explanation of how we calculate your data size, see data size calculation.

Storage action Cost
Storage $0.020 per GB, per month.
Streaming Inserts $0.01 per 200 MB, with individual rows calculated using a 1 KB minimum size.

Storage pricing is prorated per MB, per second. For example, if you store:

  • 100 MB for half a month, you pay $0.001 (a tenth of a cent)
  • 500 GB for half a month, you pay $5
  • 1 TB for a full month, you pay $20

Query pricing

Query pricing refers to the cost of running your SQL commands and user-defined functions. BigQuery charges for queries by using one metric: the number of bytes processed.

Free Tier Pricing

The first 1 TB of data processed per month is free of charge (per billing account).

Query Pricing Details

Beyond your first 1 TB of data processed in a month, you are charged as follows:

Resource Pricing
Queries $5 per TB
  • You aren't charged for queries that return an error, or for cached queries.
  • Charges are rounded to the nearest MB, with a minimum 10 MB data processed per table referenced by the query, and with a minimum 10 MB data processed per query.
  • Cancelling a running query job may incur charges up to the full cost for the query were it allowed to run to completion.
  • BigQuery uses a columnar data structure. You're charged according to the total data processed in the columns you select, and the total data per column is calculated based on the types of data in the column. For more information about how we calculate your data size, see data size calculation.
  • You can opt-in to a higher pricing tier by enabling high-compute queries, which is necessary for fewer than 1% of queries. For more information, see High-Compute queries.

High-Compute queries

High-Compute queries are queries that require a large amount of resources to process per byte of source data. High-Compute queries account for less than 1 percent of all queries. In order to run these queries, you need to explicitly opt in.

Complex queries can consume extraordinarily large computing resources relative to the number of bytes processed. Typically, such queries contain a very large number of JOIN or CROSS JOIN clauses or complex User-defined Functions.

How to opt in

If your query is too expensive for BigQuery to complete at the standard $5 per TB pricing tier, BigQuery returns a billingTierLimitExceeded error and an estimate of how much the query would cost.

To run the query at a higher pricing tier, pass a new value for maximumBillingTier as part of the query request. The maximumBillingTier is a positive integer that serves as a multiplier of the basic price of $5 per TB. For example, if you set maximumBillingTier to 2, the maximum cost for that query will be $10 per TB. Alternatively, you can request a project-wide default value by submitting the BigQuery High-Compute queries form. You can also use the form to disable the per-query override for your project.

Exercise caution when setting maximumBillingTier because there is no upper limit to the value that you can set, and high values can result in very high billing. To help you control your costs, BigQuery offers custom quotas, which can help mitigate the risk of runaway expenses. For more information, see Cost Controls.

Timing

All projects created before January 1, 2016 can use High-Compute queries at no extra cost until October 1, 2016. For these projects, all queries are charged $5 regardless of the billing tier. On October 1, 2016, these projects revert to a maximumBillingTier value of 1 unless you have changed the value by using the BigQuery High-Compute queries form. If you have a custom value in place, the setting will continue to be in effect at the prevailing prices. Project owners will be reminded about this change prior to October 1, 2016.

All projects created on January 1, 2016 or later start with a maximumBillingTier value of 1, but you can opt in to a higher tier at any time by setting maximumBillingTier for a single query or by submitting the BigQuery High-Compute queries form to set a project-wide default.

BigQuery Slots

BigQuery Slots is a model that lets you guarantee resources, regardless of demand on the overall multi-tenant pool. This allows you to minimize variability in query performance and maximize resources available for query processing. Use cases include SaaS platforms, mission-critical ETL tasks, and business reporting.

If you have workloads that require low resource variability, contact your local sales rep to discuss BigQuery Slots.

Data size calculation

When you load data into BigQuery or query the data, you're charged according to the data size. We calculate your data size based on the size of each data type.

Data type Size
STRING 2 bytes + the UTF-8 encoded string size
INTEGER 8 bytes
FLOAT 8 bytes
BOOLEAN 1 byte
TIMESTAMP 8 bytes
RECORD 0 bytes + the size of the contained fields

Null values for any data type are calculated as 0 bytes. Repeated fields are calculated per entry. For example, a repeated INTEGER with 4 entries counts as 32 bytes.

Sample query costs

When you run a query, you're charged according to the total data processed in the columns you select, even if you set an explicit LIMIT on the results. The total bytes per column is calculated based on the types of data in the column. For more information about how we calculate your data size, see data size calculation.

The following table shows several sample queries and a description of how many bytes are processed for each query.

Sample query Bytes processed
SELECT
  corpus,
  word
FROM
  publicdata:samples.shakespeare
LIMIT 1;
Total size of the corpus + size of word columns
SELECT
  corpus
FROM
  (SELECT
     *
   FROM
     publicdata:samples.shakespeare);
Total size of the corpus column
SELECT
  COUNT(*)
FROM
  publicdata:samples.shakespeare;
No bytes processed
SELECT
  COUNT(corpus)
FROM
  publicdata:samples.shakespeare;
Total size of the corpus column
SELECT
  COUNT(*)
FROM
  publicdata:samples.shakespeare
WHERE
  corpus = 'hamlet';
Total size of the corpus column
SELECT
  shakes.corpus,
  wiki.language
FROM
  publicdata:samples.shakespeare AS shakes
  JOIN EACH
  publicdata:samples.wikipedia AS wiki
  ON shakes.corpus = wiki.title;
Total size of the shakes.corpus, wiki.language and wiki.title columns