Issue a query dry run
When you run a query in the bq
command-line tool, you can use the --dry_run
flag to estimate
the number of bytes read by the query. You can also use the dryRun
parameter
when submitting a query job using the API or client libraries.
Dry runs do not use query slots, and you are not charged for performing a dry run. You can use the estimate returned by a dry run to calculate query costs in the pricing calculator.
Before you begin
Grant Identity and Access Management (IAM) roles that give users the necessary permissions to perform each task in this document.
Permissions required
To run a query job, you need the
bigquery.jobs.create
Identity and Access Management (IAM) permission on the project that
runs the query job.
Each of the following predefined IAM roles includes the permissions that you need to run a query job:
roles/bigquery.admin
roles/bigquery.jobUser
roles/bigquery.user
You also need the bigquery.tables.getData
permission
on all tables and views that your query references. In addition, when querying
a view you need this permission on all underlying tables and views.
However, if you are using authorized views
or authorized datasets, you don't need
access to the underlying source data.
Each of the following predefined IAM roles includes the permission that you need on all tables and views that the query references:
roles/bigquery.admin
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.dataViewer
For more information about IAM roles in BigQuery, see Predefined roles and permissions.
Perform dry runs
You can perform a dry run for a query job by using:
- The
--dry_run
flag with thequery
command in thebq
command-line tool - The
dryRun
parameter in the job configuration when you use the API or client libraries
To perform a dry run, do the following:
Console
Go to the BigQuery page in the Google Cloud console.
Enter your query in the Query editor.
If the query is valid, then a check mark automatically appears along with the amount of data that the query will process. If the query is invalid, then an exclamation point appears along with an error message.
bq
Enter a query like the following using the --dry_run
flag.
bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNTRY, AIRPORT, IATA FROM `project_id`.dataset.airports LIMIT 1000'
The command produces the following response:
Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.
API
To perform a dry run by using the API, submit a query job with
dryRun
set to true
in the
JobConfiguration
type.
Go
Before trying this sample, follow the Go setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Go API reference documentation.
To authenticate to BigQuery, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Java
Before trying this sample, follow the Java setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Java API reference documentation.
To authenticate to BigQuery, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Node.js
Before trying this sample, follow the Node.js setup instructions in the
BigQuery quickstart using
client libraries.
For more information, see the
BigQuery Node.js API
reference documentation.
To authenticate to BigQuery, set up Application Default Credentials.
For more information, see
Set up authentication for a local development environment.
PHP
Before trying this sample, follow the PHP setup instructions in the
BigQuery quickstart using
client libraries.
For more information, see the
BigQuery PHP API
reference documentation.
To authenticate to BigQuery, set up Application Default Credentials.
For more information, see
Set up authentication for a local development environment.
Python
To perform a dry run using the Python client library, set the
QueryJobConfig.dry_run
property to True
.
Client.query()
always returns a completed
QueryJob
when provided a dry run query configuration.
Before trying this sample, follow the Python setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Python API reference documentation.
To authenticate to BigQuery, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.