Referencia de variables del sistema
BigQuery admite las siguientes variables de sistema para las consultas con varias instrucciones o dentro de las sesiones. Puedes usar variables del sistema para definir o recuperar información durante la ejecución de una consulta, de forma similar a las variables de lenguaje procedimentales definidas por el usuario.
Nombre | Tipo | Lectura y escritura o solo lectura | Descripción |
---|---|---|---|
@@current_job_id |
STRING |
Solo lectura | ID de la tarea que se está ejecutando. En el contexto de una consulta de varias instrucciones, devuelve el trabajo responsable de la instrucción actual, no de toda la consulta. |
@@dataset_id |
STRING |
Lectura y escritura |
ID del conjunto de datos predeterminado del proyecto actual. Este ID se usa cuando no se especifica un conjunto de datos para un proyecto en la consulta. Puedes usar la instrucción SET para asignar @@dataset_id a otro ID de conjunto de datos del proyecto actual. Las variables del sistema
@@dataset_project_id y @@dataset_id se pueden
definir y usar juntas.
|
@@dataset_project_id |
STRING |
Lectura y escritura |
ID del proyecto predeterminado que se usa cuando no se especifica ninguno para un conjunto de datos utilizado en la consulta. Si no se define @@dataset_project_id o se le asigna el valor NULL , se usa el proyecto que ejecuta la consulta (@@project_id ). Puedes usar la instrucción SET
para asignar @@dataset_project_id a otro ID de proyecto. Las variables del sistema @@dataset_project_id y @@dataset_id se pueden definir y usar juntas.
|
@@last_job_id |
STRING |
Solo lectura |
ID de la tarea más reciente que se ha ejecutado en la consulta de varias instrucciones actual, sin incluir la actual. Si la consulta de varias instrucciones contiene instrucciones CALL , es posible que este trabajo se haya originado en otro procedimiento.
|
@@location |
STRING |
Lectura y escritura |
Ubicación en la que se va a ejecutar la consulta. @@location solo se puede
asignar a un literal de cadena con una
ubicación válida.
Una instrucción SET @@location debe ser la primera instrucción de una consulta. Se produce un error si hay una discrepancia entre @@location y otro ajuste de ubicación de la consulta. Puedes mejorar la latencia de las consultas que definen @@location usando el modo de creación de trabajos opcional. Puedes usar la variable de sistema @@location dentro de las funciones definidas por el usuario (UDFs) de SQL y las funciones de tabla.
|
@@project_id |
STRING |
Solo lectura |
ID del proyecto usado para ejecutar la consulta actual. En el contexto de un procedimiento, @@project_id hace referencia al proyecto que ejecuta la consulta de varias instrucciones, no al proyecto propietario del procedimiento.
|
@@query_label |
STRING |
Lectura y escritura |
Etiqueta de consulta que se asociará a los trabajos de consulta de la consulta o sesión actual de varias instrucciones. Si se define en una consulta, todos los trabajos de consulta posteriores del script o de la sesión tendrán esta etiqueta.
Si no se define en una consulta, el valor de esta variable de sistema es NULL . Para ver un ejemplo de cómo definir esta variable del sistema, consulta
Asociar trabajos de una sesión con una etiqueta.
|
@@reservation |
STRING |
Lectura y escritura |
[Vista previa]. Especifica la reserva en la que se ejecuta el trabajo. Debe tener el siguiente formato:
projects/project_id/locations/location/reservations/reservation_id .
La ubicación de la reserva debe coincidir con la ubicación en la que se ejecuta la consulta.
|
@@row_count |
INT64 |
Solo lectura |
Si se usa en una consulta de varias instrucciones y la instrucción anterior es de DML, especifica el número de filas modificadas, insertadas o eliminadas como resultado de esa instrucción de DML. Si la instrucción anterior es una instrucción MERGE, @@row_count representa el número total combinado de filas insertadas, eliminadas y suprimidas. Este valor es NULL si no está en una consulta de varias instrucciones.
|
@@script.bytes_billed |
INT64 |
Solo lectura |
Total de bytes facturados hasta el momento en la tarea de consulta de varias instrucciones que se está ejecutando. Este valor es NULL
si no está en el trabajo.
|
@@script.bytes_processed |
INT64 |
Solo lectura |
Total de bytes procesados hasta el momento en el trabajo de consulta de varias instrucciones que se está ejecutando. Este valor es NULL
si no está en el trabajo.
|
@@script.creation_time |
TIMESTAMP |
Solo lectura |
Hora de creación de la tarea de consulta de varias instrucciones que se está ejecutando.
Este valor es NULL si no está en el trabajo.
|
@@script.job_id |
STRING |
Solo lectura |
ID de la tarea de consulta de varias instrucciones que se está ejecutando. Este valor es NULL si no está en el trabajo.
|
@@script.num_child_jobs |
INT64 |
Solo lectura |
Número de subtareas completadas actualmente. Este valor es NULL si no está en el trabajo.
|
@@script.slot_ms |
INT64 |
Solo lectura |
Número de milisegundos de ranura que ha usado la secuencia de comandos hasta el momento.
Este valor es NULL si no está en el trabajo.
|
@@session_id |
INT64 |
Solo lectura | ID de la sesión a la que está asociada la consulta actual. |
@@time_zone |
STRING |
Lectura y escritura |
La zona horaria predeterminada que se usará en las funciones SQL dependientes de la zona horaria cuando no se especifique ninguna zona horaria como argumento.
@@time_zone se puede modificar con una instrucción SET para usar cualquier nombre de zona horaria válido.
Al principio de cada secuencia de comandos, @@time_zone empieza como
"UTC".
|
Para mantener la retrocompatibilidad, las expresiones usadas en una cláusula OPTIONS
o FOR SYSTEM TIME AS OF
se definen de forma predeterminada en la zona horaria America/Los_Angeles
, mientras que todas las demás expresiones de fecha y hora se definen de forma predeterminada en la zona horaria UTC
. Si se ha definido @@time_zone
anteriormente en la consulta de varias instrucciones, la zona horaria elegida se aplicará a todas las expresiones de fecha y hora, incluidas las cláusulas OPTIONS
y FOR SYSTEM TIME AS OF
.
Además de las variables de sistema que se han mostrado anteriormente, puede usar EXCEPTION
variables de sistema
durante la ejecución de una consulta de varias instrucciones. Para obtener más información sobre las variables de sistema EXCEPTION
, consulta la instrucción del lenguaje de procedimiento BEGIN...EXCEPTION.
Ejemplos
No puedes crear variables de sistema, pero sí puedes anular el valor predeterminado de algunas de ellas:
SET @@dataset_project_id = 'MyProject';
La siguiente consulta devuelve la zona horaria predeterminada:
SELECT @@time_zone AS default_time_zone;
+-------------------+
| default_time_zone |
+-------------------+
| UTC |
+-------------------+
Puedes usar variables de sistema con consultas DDL y DML.
Por ejemplo, aquí tienes algunas formas de usar la variable de sistema @@time_zone
al crear y actualizar una tabla:
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;
Hay algunos casos en los que no se pueden usar variables del sistema en consultas DDL y DML. Por ejemplo, no puedes usar una variable de sistema como nombre de proyecto, conjunto de datos o tabla. La siguiente consulta genera un error cuando
incluyes la variable de sistema @@dataset_id
en una ruta de tabla:
BEGIN
CREATE TEMP TABLE @@dataset_id.MyTempTable (id STRING);
END;
Para ver más ejemplos de cómo puedes usar variables de sistema en consultas de varias instrucciones, consulta Definir una variable.
Para ver ejemplos de cómo puedes usar variables del sistema en sesiones, consulta Sesión de ejemplo.