Documentation de référence sur les variables système
BigQuery accepte les variables système suivantes pour les requêtes multi-instructions ou dans des sessions. Vous pouvez utiliser des variables système pour définir ou récupérer des informations lors de l'exécution d'une requête, de la même manière que les variables de langage procédural définies par l'utilisateur.
Nom | Type | Lecture et écriture ou lecture seule | Description |
---|---|---|---|
@@current_job_id |
STRING |
Lecture seule | ID de la tâche en cours d'exécution. Dans le contexte d'une requête multi-instruction, renvoie la tâche responsable de l'instruction en cours et non pas l'intégralité de la requête multi-instruction. |
@@dataset_id |
STRING |
Lecture et écriture |
ID de l'ensemble de données par défaut dans le projet actuel. Cet ID est utilisé lorsqu'un ensemble de données n'est pas spécifié pour un projet dans la requête. Vous pouvez utiliser l'instruction SET pour attribuer @@dataset_id à un autre ID d'ensemble de données dans le projet en cours. Les variables système @@dataset_project_id et @@dataset_id peuvent être définies et utilisées ensemble.
|
@@dataset_project_id |
STRING |
Lecture et écriture |
ID du projet par défaut utilisé lorsqu'il n'est pas spécifié pour un ensemble de données utilisé dans la requête. Si @@dataset_project_id n'est pas défini ou s'il est défini sur NULL , le projet d'exécution de la requête (@@project_id ) est utilisé. Vous pouvez utiliser l'instruction SET pour attribuer @@dataset_project_id à un autre ID de projet. Les variables système @@dataset_project_id et @@dataset_id peuvent être définies et utilisées ensemble.
|
@@last_job_id |
STRING |
Lecture seule |
ID du job le plus récent à exécuter dans la requête multi-instruction actuelle, à l'exclusion du job en cours. Si la requête multi-instruction contient des instructions CALL , cette tâche peut provenir d'une autre procédure.
|
@@location |
STRING |
Lecture et écriture |
Emplacement dans lequel exécuter la requête. @@location ne peut être défini que sur une valeur littérale de chaîne avec un emplacement valide.
Une instruction SET @@location doit être la première instruction d'une requête. Une erreur se produit si @@location ne correspond pas à un autre paramètre de localisation pour la requête. Vous pouvez améliorer la latence des requêtes qui définissent @@location en utilisant le mode de création de job facultatif. Vous pouvez utiliser la variable système @@location dans les UDF SQL et les fonctions de table.
|
@@project_id |
STRING |
Lecture seule |
ID du projet utilisé pour exécuter la requête actuelle. Dans le contexte d'une procédure, @@project_id fait référence au projet qui exécute la requête multi-instruction et non au projet propriétaire de la procédure.
|
@@query_label |
STRING |
Lecture et écriture |
Libellé de requête à associer aux tâches de la requête, dans la requête multi-instruction ou la session actuelle. Si cette option est définie, toutes les tâches de requête suivantes du script ou de la session seront associées à ce libellé.
Si cette option n'est pas définie dans une requête, la valeur de cette variable système est NULL . Pour obtenir un exemple de définition de cette variable système, consultez la section Associer des tâches dans une session à un libellé.
|
@@reservation |
STRING |
Lecture et écriture |
[Aperçu] Spécifie la réservation dans laquelle le job est exécuté. Il doit respecter le format suivant :
projects/project_id/locations/location/reservations/reservation_id .
L'emplacement de la réservation doit correspondre à celui dans lequel la requête est exécutée.
|
@@row_count |
INT64 |
Lecture seule |
Si cette variable est utilisée dans une requête multi-instruction et que l'instruction précédente est en LMD, spécifie le nombre de lignes modifiées, insérées ou supprimées suite à cette instruction LMD. Si l'instruction précédente est une instruction MERGE, @@row_count représente le cumul total de lignes insérées, supprimées et effacées. Cette valeur est NULL si la requête concernée n'est pas une requête multi-instruction.
|
@@script.bytes_billed |
INT64 |
Lecture seule |
Nombre total d'octets facturés jusqu'à présent dans le job de requête multi-instruction en cours d'exécution. Cette valeur est NULL si ce paramètre n'est pas spécifié dans la tâche.
|
@@script.bytes_processed |
INT64 |
Lecture seule |
Nombre total d'octets traités jusqu'à présent dans le job de requête multi-instruction en cours d'exécution. Cette valeur est NULL si ce paramètre n'est pas spécifié dans la tâche.
|
@@script.creation_time |
TIMESTAMP |
Lecture seule |
Heure de création du job de requête multi-instruction en cours d'exécution.
Cette valeur est NULL si ce paramètre n'est pas spécifié dans la tâche.
|
@@script.job_id |
STRING |
Lecture seule |
ID du job de requête multi-instruction en cours d'exécution. Cette valeur est NULL si ce paramètre n'est pas spécifié dans la tâche.
|
@@script.num_child_jobs |
INT64 |
Lecture seule |
Nombre de tâches enfants actuellement terminées. Cette valeur est NULL si ce paramètre n'est pas spécifié dans la tâche.
|
@@script.slot_ms |
INT64 |
Lecture seule |
Nombre d'emplacements de millisecondes utilisés jusqu'à présent par le script.
Cette valeur est NULL si ce paramètre n'est pas spécifié dans la tâche.
|
@@session_id |
INT64 |
Lecture seule | ID de la session à laquelle la requête actuelle est associée. |
@@time_zone |
STRING |
Lecture et écriture |
Fuseau horaire par défaut à utiliser dans les fonctions SQL dépendantes du fuseau horaire, lorsqu'un fuseau horaire explicite n'est pas spécifié en tant qu'argument.
@@time_zone peut être modifié en utilisant une instruction SET pour n'importe quel nom de fuseau horaire valide.
Au début de chaque script, @@time_zone commence par "UTC".
|
Pour des raisons de rétrocompatibilité, les expressions contenues dans une clause OPTIONS
ou FOR SYSTEM TIME AS OF
utilisent par défaut le fuseau horaire America/Los_Angeles
, tandis que toutes les autres expressions de type date/heure utilisent le fuseau horaire UTC
par défaut. Si @@time_zone
a été précédemment défini dans la requête multi-instruction, le fuseau horaire choisi s'applique à toutes les expressions de type date/heure, y compris les clauses OPTIONS
et FOR SYSTEM TIME AS OF
.
Outre les variables système présentées précédemment, vous pouvez utiliser des variables système EXCEPTION
pendant l'exécution d'une requête multi-instruction. Pour en savoir plus sur les variables système EXCEPTION
, consultez la documentation sur l'instruction de langage procédural BEGIN...EXCEPTION.
Exemples
Vous ne créez pas de variables système, mais vous pouvez remplacer la valeur par défaut pour certaines d'entre elles :
SET @@dataset_project_id = 'MyProject';
La requête suivante renvoie le fuseau horaire par défaut :
SELECT @@time_zone AS default_time_zone;
+-------------------+
| default_time_zone |
+-------------------+
| UTC |
+-------------------+
Vous pouvez utiliser des variables système avec des requêtes LDD et LMD.
Par exemple, voici quelques façons d'utiliser la variable système @@time_zone
lors de la création et de la mise à jour d'une 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;
Il existe certains cas où les variables système ne peuvent pas être utilisées dans les requêtes LDD et LMD. Par exemple, vous ne pouvez pas utiliser une variable système en tant que nom de projet, ensemble de données ou nom de table. La requête suivante génère une erreur lorsque vous incluez la variable système @@dataset_id
dans un chemin de table :
BEGIN
CREATE TEMP TABLE @@dataset_id.MyTempTable (id STRING);
END;
Pour obtenir d'autres exemples d'utilisation des variables système dans les requêtes multi-instructions, consultez Définir une variable.
Pour obtenir des exemples d'utilisation des variables système dans les sessions, consultez la section Exemple de session.