Stay organized with collections Save and categorize content based on your preferences.
System variables referenceBigQuery supports the following system variables for multi-statement queries or within sessions. You can use system variables to set or retrieve information during query execution, similar to user-defined procedural language variables.
Name Type Read and write or read-only Description@@current_job_id
STRING
Read-only Job ID of the currently executing job. In the context of a multi-statement query, this returns the job responsible for the current statement, not the entire multi-statement query. @@dataset_id
STRING
Read and write ID of the default dataset in the current project. This ID is used when a dataset is not specified for a project in the query. You can use the SET
statement to assign @@dataset_id
to another dataset ID in the current project. The system variables @@dataset_project_id
and @@dataset_id
can be set and used together. @@dataset_project_id
STRING
Read and write ID of the default project that's used when one is not specified for a dataset used in the query. If @@dataset_project_id
is not set, or if it is set to NULL
, the query-executing project (@@project_id
) is used. You can use the SET
statement to assign @@dataset_project_id
to another project ID. The system variables @@dataset_project_id
and @@dataset_id
can be set and used together. @@last_job_id
STRING
Read-only Job ID of the most recent job to execute in the current multi-statement query, not including the current one. If the multi-statement query contains CALL
statements, this job may have originated in a different procedure. @@location
STRING
Read and write The location in which to run the query. @@location
can only be set to a string literal with a valid location. A SET @@location
statement must be the first statement in a query. An error occurs if there is a mismatch between @@location
and another location setting for the query. You can improve the latency of queries that set @@location
by using optional job creation mode. You can use the @@location
system variable inside of SQL UDFs and table functions. @@project_id
STRING
Read-only ID of the project used to execute the current query. In the context of a procedure, @@project_id
refers to the project that is running the multi-statement query, not the project which owns the procedure. @@query_label
STRING
Read and write Query label to associate with query jobs in the current multi-statement query or session. If set in a query, all subsequent query jobs in the script or session will have this label. If not set in a query, the value for this system variable is NULL
. For an example of how to set this system variable, see Associate jobs in a session with a label. @@reservation
STRING
Read and write [Preview]. Specifies the reservation where the job is run. Must be in the following format: projects/project_id/locations/location/reservations/reservation_id
. The location of the reservation must match the location the query is running in. @@row_count
INT64
Read-only If used in a multi-statement query and the previous statement is DML, specifies the number of rows modified, inserted, or deleted, as a result of that DML statement. If the previous statement is a MERGE statement, @@row_count
represents the combined total number of rows inserted, removed, and deleted. This value is NULL
if not in a multi-statement query. @@script.bytes_billed
INT64
Read-only Total bytes billed so far in the currently executing multi-statement query job. This value is NULL
if not in the job. @@script.bytes_processed
INT64
Read-only Total bytes processed so far in the currently executing multi-statement query job. This value is NULL
if not in the job. @@script.creation_time
TIMESTAMP
Read-only Creation time of the currently executing multi-statement query job. This value is NULL
if not in the job. @@script.job_id
STRING
Read-only Job ID of the currently executing multi-statement query job. This value is NULL
if not in the job. @@script.num_child_jobs
INT64
Read-only Number of currently completed child jobs. This value is NULL
if not in the job. @@script.slot_ms
INT64
Read-only Number of slot milliseconds used so far by the script. This value is NULL
if not in the job. @@session_id
INT64
Read-only ID of the session that the current query is associated with. @@time_zone
STRING
Read and write The default time zone to use in time zone-dependent SQL functions, when a time zone is not specified as an argument. @@time_zone
can be modified by using a SET
statement to any valid time zone name. At the start of each script, @@time_zone
begins as “UTC”.
For backward compatibility, expressions used in an OPTIONS
or FOR SYSTEM TIME AS OF
clause default to the America/Los_Angeles
time zone, while all other date/time expressions default to the UTC
time zone. If @@time_zone
has been set earlier in the multi-statement query, the chosen time zone will apply to all date/time expressions, including OPTIONS
and FOR SYSTEM TIME AS OF
clauses.
In addition to the system variables shown previously, you can use EXCEPTION
system variables during execution of a multi-statement query. For more information about the EXCEPTION
system variables, see the procedural language statement BEGIN...EXCEPTION.
You don't create system variables, but you can override the default value for some of them:
SET @@dataset_project_id = 'MyProject';
The following query returns the default time zone:
SELECT @@time_zone AS default_time_zone;
+-------------------+
| default_time_zone |
+-------------------+
| UTC |
+-------------------+
You can use system variables with DDL and DML queries. For example, here are a few ways to use the system variable @@time_zone
when creating and updating a table:
BEGIN
CREATE TEMP TABLE MyTempTable
AS SELECT @@time_zone AS default_time_zone;
END;
CREATE OR REPLACE TABLE MyDataset.MyTable(default_time_zone STRING)
OPTIONS (description = @@time_zone);
UPDATE MyDataset.MyTable
SET default_time_zone = @@time_zone
WHERE TRUE;
There are some places where system variables can't be used in DDL and DML queries. For example, you can't use a system variable as a project name, dataset, or table name. The following query produces an error when you include the @@dataset_id
system variable in a table path:
BEGIN
CREATE TEMP TABLE @@dataset_id.MyTempTable (id STRING);
END;
For more examples of how you can use system variables in multi-statement queries, see Set a variable.
For examples of how you can use system variables in sessions, see Example session.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-07 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["BigQuery system variables allow setting or retrieving information during query execution in multi-statement queries or sessions, similar to user-defined procedural language variables."],["System variables have different types such as `STRING`, `INT64`, and `TIMESTAMP`, and can be either read-only or allow read and write access."],["Some system variables are specific to multi-statement queries (e.g., `@@row_count`, `@@script.bytes_billed`), while others relate to the current project, dataset, or session (e.g., `@@project_id`, `@@dataset_id`, `@@session_id`)."],["Certain system variables like `@@dataset_project_id`, `@@dataset_id`, `@@location`, `@@query_label`, and `@@time_zone` can be modified using the `SET` statement to override default values."],["While system variables are useful in DDL and DML queries, they cannot be used as project, dataset, or table names in such queries."]]],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4