Referencia de variables de sistema

BigQuery admite las siguientes variables de sistema para consultas de varias declaraciones o dentro de sesiones. Puedes usar variables de sistema para configurar o recuperar información durante la ejecución de la consulta, de manera similar a las variables de lenguaje de procedimiento definidas por el usuario.

Nombre Tipo Lectura y escritura o solo lectura Descripción
@@current_job_id STRING Solo lectura ID de tarea del trabajo que se está ejecutando actualmente. En el contexto de una consulta de varias instrucciones, esto muestra el trabajo responsable de la instrucción actual, no toda la consulta de varias instrucciones.
@@dataset_id STRING Escritura y lectura ID del conjunto de datos predeterminado en el proyecto actual. Este ID se usa cuando no se especifica un conjunto de datos para un proyecto en la consulta. Puedes usar la declaración SET para asignar @@dataset_id a otro ID de conjunto de datos en el proyecto actual. Las variables del sistema @@dataset_project_id y @@dataset_id se pueden configurar y usar juntas.
@@dataset_project_id STRING Escritura y lectura ID del proyecto predeterminado que se usa cuando no se especifica uno para un conjunto de datos usado en la consulta. Si @@dataset_project_id no está configurado o si se configura como NULL, se usa el proyecto que ejecuta la consulta (@@project_id). Puedes usar la declaración SET para asignar @@dataset_project_id a otro ID de proyecto. Las variables del sistema @@dataset_project_id y @@dataset_id se pueden configurar y usar juntas.
@@last_job_id STRING Solo lectura ID del trabajo más reciente que se ejecuta en la consulta actual de varias instrucciones, sin incluir el actual. Si la consulta de varias instrucciones contiene instrucciones CALL, este trabajo puede haberse originado en un procedimiento diferente.
@@location STRING Escritura y lectura Es la ubicación en la que se ejecutará la consulta. @@location solo se puede establecer en un literal de cadena con una ubicación válida. Una sentencia SET @@location debe ser la primera sentencia de una consulta. Se produce un error si hay una discrepancia entre @@location y otro parámetro de configuración de ubicación para la consulta. Puedes mejorar la latencia de las consultas que configuran @@location con el modo de creación de trabajos opcional. Puedes usar la variable del sistema @@location dentro de las UDF de SQL y las funciones de tabla.
@@max_staleness_override INTERVAL Escritura y lectura Anula el intervalo máximo de inactividad para todas las entidades aplicables consultadas dentro de la sesión o consulta actual de varias instrucciones. Las entidades aplicables incluyen tablas transmitidas, tablas de captura de datos modificados (CDC) y vistas materializadas) consultadas dentro de la consulta o sesión de varias instrucciones actual.

De forma predeterminada, cada vez que ejecutas una consulta, BigQuery muestra los resultados más actualizados o respeta la opción max_staleness configurada de la entidad. Puedes usar @@max_staleness_override para personalizar de forma dinámica el comportamiento de obsolescencia sin alterar las configuraciones de tablas o vistas:

  • Reduce la latencia y los costos de las consultas: Para tolerar datos obsoletos, establece @@max_staleness_override en un intervalo no negativo, por ejemplo, INTERVAL 10 MINUTE.
  • Asegúrate de que los resultados estén completamente actualizados: Para forzar que se apliquen las modificaciones o actualizaciones pendientes en el momento de la ejecución de la consulta, establece @@max_staleness_override en INTERVAL 0 SECOND.
  • Borrar la anulación: Para volver a la configuración de max_staleness a nivel de la entidad, establece @@max_staleness_override en NULL.
@@project_id STRING Solo lectura ID del proyecto que se usó para ejecutar la consulta actual. En el contexto de un procedimiento, @@project_id se refiere al proyecto que ejecuta la consulta de varias instrucciones, no al proyecto que posee el procedimiento.
@@query_label STRING Escritura y lectura Etiqueta de consulta que se asociará a los trabajos de consulta en la sesión o consulta actual de varias instrucciones. Si se configura en una consulta, todos los trabajos de consulta posteriores en la secuencia de comandos o la sesión tendrán esta etiqueta. Si no se establece en una consulta, el valor de esta variable de sistema es NULL. Para ver un ejemplo de cómo configurar esta variable de sistema, consulta Asocia trabajos en una sesión con una etiqueta.
@@reservation STRING Escritura y lectura Te permite especificar o anular la reserva que se usará para ejecutar las siguientes declaraciones. Debe tener el siguiente formato: projects/project_id/locations/location/reservations/reservation_id.

Fuerza a la consulta a usar la facturación a pedido cuando se establece en 'none'. Esto requiere que el proyecto o la organización tengan reservation_override_mode configurado como ALLOW_ANY_OVERRIDE. Este valor se puede establecer con las sentencias ALTER PROJECT SET OPTIONS o ALTER ORGANIZATION SET OPTIONS. Si tienes algún problema, solicita asistencia.

La ubicación de la reserva debe coincidir con la ubicación en la que se ejecuta la consulta. Si @@reservation es NULL, la reserva se detecta automáticamente según la configuración de asignación que coincida con las propiedades de la consulta.

@@row_count INT64 Solo lectura Si se usa en una consulta de varias instrucciones y la sentencia anterior es DML, especifica la cantidad de filas insertadas, modificadas o borradas como resultado de esa declaración DML. Si la instrucción anterior es `MERGE`, @@row_count representa la cantidad total combinada de filas insertadas, modificadas y borradas. 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 el trabajo de consulta de varias declaraciones que se ejecuta en la actualidad. 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 ejecuta en la actualidad. Este valor es NULL si no está en el trabajo.
@@script.creation_time TIMESTAMP Solo lectura Hora de creación del trabajo de consulta de varias declaraciones que se ejecuta. Este valor es NULL si no está en el trabajo.
@@script.job_id STRING Solo lectura ID de tarea del trabajo 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 Cantidad de trabajos secundarios completados en la actualidad. Este valor es NULL si no está en el trabajo.
@@script.slot_ms INT64 Solo lectura Cantidad de milisegundos de ranura que la secuencia de comandos utilizó hasta el momento. Este valor es NULL si no está en el trabajo.
@@session_id STRING Solo lectura ID de la sesión con la que está asociada la consulta actual. Puedes usar la variable del sistema @@session_id dentro de funciones definidas por el usuario de SQL, funciones de tabla y vistas lógicas. No se admite el uso de esta variable del sistema en vistas materializadas.
@@time_zone STRING Escritura y lectura La zona horaria predeterminada que se debe usar en funciones de SQL que dependen de esta cuando no se especifica una zona horaria como argumento. @@time_zone se puede modificar mediante una declaración SET a cualquier nombre de zona horaria válido. Al inicio de cada secuencia de comandos, @@time_zone comienza como “UTC”.

Para la retrocompatibilidad, de forma predeterminada, se establecen las expresiones utilizadas en una cláusul OPTIONS o FOR SYSTEM TIME AS OF en la zona horaria America/Los_Angeles, mientras que todas las demás expresiones de fecha y hora se establecen de forma predeterminada en la zona horaria UTC. Si @@time_zone se configuró antes 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 del sistema que se mostraron antes, puedes usar las variables del sistema EXCEPTION durante la ejecución de una consulta de varias instrucciones. Para obtener más información sobre las variables del sistema EXCEPTION, consulta la instrucción de lenguaje de procedimiento BEGIN...EXCEPTION.

Ejemplos

No creas variables del sistema, pero puedes anular el valor predeterminado para algunas de estas:

SET @@dataset_project_id = 'MyProject';

En el siguiente ejemplo, se anula el intervalo de obsolescencia máximo para las consultas posteriores de la sesión a 10 minutos:

SET @@max_staleness_override = INTERVAL 10 MINUTE;

Para forzar que las consultas muestren los resultados más recientes y actualizados, y aplicar las modificaciones pendientes en el momento de la ejecución de la consulta, haz lo siguiente:

SET @@max_staleness_override = INTERVAL 0 SECOND;

Para restablecer la anulación de obsolescencia a la configuración a nivel de la tabla, establece @@max_staleness_override en NULL:

SET @@max_staleness_override = NULL;

La siguiente consulta muestra 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, estas son algunas formas de usar la variable del sistema @@time_zone cuando creas y actualizas 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;

Existen algunos lugares en los que las variables de sistema no se pueden usar en las consultas DDL y DML. Por ejemplo, no puedes usar una variable del sistema como nombre de proyecto, conjunto de datos o nombre de tabla. La siguiente consulta produce un error cuando incluyes la variable del 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 las variables del sistema en consultas de varias instrucciones, consulta Configura una variable.

Para ver ejemplos sobre cómo puedes usar las variables del sistema en las sesiones, consulta Sesión de ejemplo.