系统变量参考文档

BigQuery 支持以下系统变量以进行多语句查询会话。在查询执行期间,您可以使用系统变量来设置或检索信息,这与用户定义的过程语言变量类似。

名称 类型 读写或只读 说明
@@current_job_id STRING 只读 当前正在执行的作业的 ID。在多语句查询的上下文中,它返回负责当前语句的作业,而不是整个多语句查询。
@@dataset_id STRING 读写 当前项目中默认数据集的 ID。如果没有为查询中的项目指定数据集,则使用此 ID。您可以使用 SET 语句将 @@dataset_id 分配给当前项目中的其他数据集 ID。系统变量 @@dataset_project_id@@dataset_id 可以一起使用。
@@dataset_project_id STRING 读写 没有为查询中使用的数据集指定默认项目时使用的默认项目的 ID。如果没有设置 @@dataset_project_id,或将其设置为 NULL,则使用查询执行项目 (@@project_id)。您可以使用 SET 语句将 @@dataset_project_id 分配给其他项目 ID。系统变量 @@dataset_project_id@@dataset_id 可以一起使用。
@@last_job_id STRING 只读 要在当前多语句查询中执行的最新作业(不包括当前作业)的 ID。如果多语句查询包含 CALL 语句,则此作业可能源自另一个过程。
@@project_id STRING 只读 用于执行当前查询的项目的 ID。在过程的上下文中,@@project_id 是指运行多语句查询的项目,而不是拥有该过程的项目。
@@query_label STRING 读写 与当前多语句查询或会话中的查询作业关联的查询标签。如果在查询中设置了该标签,则脚本或会话中的所有后续查询作业都将具有该标签。如果未在查询中设置该标签,则该系统变量的值为 NULL。如需查看有关如何设置此系统变量的示例,请参阅将会话中的作业与标签相关联
@@row_count INT64 只读 如果在多语句查询中使用并且前一个语句是 DML,则指定由于该 DML 语句而修改、插入或删除的行数。如果前一个语句是 MERGE 语句,则 @@row_count 表示插入、移除和删除的总行数。如果不在多语句查询中,则此值为 NULL
@@script.bytes_billed INT64 只读 到目前为止,正在执行的多语句查询作业中计费的总字节数。如果不在作业中,则此值为 NULL
@@script.bytes_processed INT64 只读 到目前为止,正在执行的多语句查询作业中处理的总字节数。如果不在作业中,则此值为 NULL
@@script.creation_time TIMESTAMP 只读 当前正在执行的多语句查询作业的创建时间。如果不在作业中,则此值为 NULL
@@script.job_id STRING 只读 当前正在执行的多语句查询作业的 ID。如果不在作业中,则此值为 NULL
@@script.num_child_jobs INT64 只读 当前已完成的子作业数。如果不在作业中,则此值为 NULL
@@script.slot_ms INT64 只读 到目前为止,脚本使用的槽毫秒数。 如果不在作业中,则此值为 NULL
@@session_id INT64 只读 与当前查询关联的会话的 ID。
@@time_zone STRING 读写 在依赖时区的 SQL 函数中使用的默认时区(如果未将时区指定为参数)。 可通过对任何有效时区名称使用 SET 语句来修改 @@time_zone。 在每个脚本的开头,@@time_zone 会以“UTC”开头。

为实现向后兼容性,OPTIONSFOR SYSTEM TIME AS OF 子句中使用的表达式默认使用 America/Los_Angeles 时区,而所有其他日期/时间表达式默认使用 UTC 时区。如果之前已在多语句查询中设置了 @@time_zone,则所选的时区将应用于所有日期/时间表达式,包括 OPTIONSFOR SYSTEM TIME AS OF 子句。

除了上面显示的系统变量之外,您还可以在多语句执行期间使用 EXCEPTION 系统变量。如需详细了解 EXCEPTION 系统变量,请参阅过程语言语句 BEGIN...EXCEPTION

如需查看有关如何在多语句查询中使用系统变量的示例,请参阅设置变量

如需查看有关如何在会话中使用系统变量的示例,请参阅示例会话