Riferimento alle variabili di sistema
BigQuery supporta le seguenti variabili di sistema per le query con più istruzioni o all'interno delle sessioni. Puoi utilizzare le variabili di sistema per impostare o recuperare informazioni durante l'esecuzione delle query, in modo simile alle variabili del linguaggio procedurale definite dall'utente .
| Nome | Tipo | Lettura e scrittura o sola lettura | Descrizione |
|---|---|---|---|
@@current_job_id |
STRING |
Sola lettura | ID job del job in esecuzione. Nel contesto di una query con più istruzioni, restituisce il job responsabile dell' istruzione corrente, non dell'intera query con più istruzioni. |
@@dataset_id |
STRING |
Lettura e scrittura |
ID del set di dati predefinito nel progetto corrente. Questo ID viene utilizzato quando un
set di dati non viene specificato per un progetto nella query. Puoi utilizzare l'
SET istruzione per assegnare @@dataset_id a
un altro ID set di dati nel progetto corrente. Le variabili di sistema
@@dataset_project_id e @@dataset_id possono essere
impostate e utilizzate insieme.
|
@@dataset_project_id |
STRING |
Lettura e scrittura |
ID del progetto predefinito utilizzato quando non ne viene specificato uno per un
set di dati utilizzato nella query. Se @@dataset_project_id non è
impostato o è impostato su NULL, viene utilizzato il progetto di esecuzione della query
(@@project_id). Puoi utilizzare l'istruzione SET
per assegnare @@dataset_project_id a un altro
ID progetto. Le variabili di sistema @@dataset_project_id e
@@dataset_id possono essere impostate e utilizzate insieme.
|
@@last_job_id |
STRING |
Sola lettura |
ID job del job più recente da eseguire nella query con più istruzioni corrente, escluso quello corrente. Se la
query con più istruzioni contiene istruzioni CALL,
questo job potrebbe aver avuto origine in una procedura diversa.
|
@@location |
STRING |
Lettura e scrittura |
La località in cui eseguire la query. @@location può essere impostato solo su un valore letterale stringa con una località valida.
Un'istruzione SET @@location deve essere la prima istruzione in una
query. Si verifica un errore se c'è una mancata corrispondenza tra
@@location e un'altra
impostazione della località
per la query. Puoi migliorare la latenza delle query che impostano
@@location utilizzando la modalità di creazione dei job
facoltativa. Puoi utilizzare la variabile di sistema @@location all'interno delle UDF SQL
e delle funzioni tabella.
|
@@project_id |
STRING |
Sola lettura |
ID del progetto utilizzato per eseguire la query corrente. Nel
contesto di una procedura, @@project_id si riferisce al progetto
che esegue la query con più istruzioni, non al progetto proprietario della procedura.
|
@@query_label |
STRING |
Lettura e scrittura |
Etichetta della query da associare ai job di query nella query con più istruzioni o nella sessione corrente. Se impostata in una query, tutti i job di query successivi
nello script o nella sessione avranno questa etichetta.
Se non è impostato in una query, il valore di questa variabile di sistema è
NULL. Per un esempio di come impostare questa variabile di sistema,
vedi
Associare i job in una sessione a un'etichetta.
|
@@reservation |
STRING |
Lettura e scrittura |
Consente di specificare o sostituire la prenotazione da utilizzare per l'esecuzione delle istruzioni seguenti.
Deve essere nel seguente formato:
projects/project_id/locations/location/reservations/reservation_id.
La località della prenotazione deve corrispondere alla località in cui viene eseguita la query
è in esecuzione. Se @@reservation è NULL, la prenotazione viene rilevata automaticamente in base alle impostazioni di assegnazione che corrispondono alle proprietà della query.
|
@@row_count |
INT64 |
Sola lettura |
Se utilizzata in una query con più istruzioni e l'istruzione precedente
è DML, specifica il numero di righe inserite, modificate o
eliminate, come risultato dell'istruzione DML. Se l'istruzione precedente è
un'istruzione `MERGE`, @@row_count rappresenta il numero totale combinato
di righe inserite, modificate ed eliminate. Questo valore è
NULL se non si trova in una query con più istruzioni.
|
@@script.bytes_billed |
INT64 |
Sola lettura |
Byte totali fatturati finora nel job di query con più istruzioni in esecuzione. Questo valore è NULL
se non si trova nel job.
|
@@script.bytes_processed |
INT64 |
Sola lettura |
Byte totali elaborati finora nel job di query con più istruzioni in esecuzione. Questo valore è NULL
se non si trova nel job.
|
@@script.creation_time |
TIMESTAMP |
Sola lettura |
Ora di creazione del job di query con più istruzioni in esecuzione.
Questo valore è NULL se non si trova nel job.
|
@@script.job_id |
STRING |
Sola lettura |
ID job del job di query con più istruzioni in esecuzione. Questo valore è
NULL se non si trova nel job.
|
@@script.num_child_jobs |
INT64 |
Sola lettura |
Numero di job secondari completati al momento. Questo valore è
NULL se non si trova nel job.
|
@@script.slot_ms |
INT64 |
Sola lettura |
Numero di millisecondi di slot utilizzati finora dallo script.
Questo valore è NULL se non si trova nel job.
|
@@session_id |
STRING |
Sola lettura |
ID della sessione a cui è associata la query corrente. Puoi utilizzare
la @@session_id variabile di sistema all'interno
funzioni definite dall'utente
SQL
funzioni tabella e
viste logiche. L'utilizzo di questa variabile di sistema
nelle viste materializzate non è supportato.
|
@@time_zone |
STRING |
Lettura e scrittura |
Il fuso orario predefinito da utilizzare nelle funzioni SQL dipendenti dal fuso orario,
quando non ne è specificato uno come argomento.
@@time_zone può essere modificato utilizzando un'istruzione SET con qualsiasi nome di fuso orario valido.
All'inizio di ogni script, @@time_zone inizia come
"UTC".
|
Per la compatibilità con le versioni precedenti, le espressioni utilizzate in una clausola OPTIONS o FOR SYSTEM TIME AS OF utilizzano per impostazione predefinita il fuso orario America/Los_Angeles, mentre tutte le altre espressioni di data/ora utilizzano per impostazione predefinita il fuso orario UTC. Se @@time_zone è stato impostato in precedenza nella query con più istruzioni, il fuso orario scelto verrà applicato a tutte le espressioni di data/ora, incluse le clausole OPTIONS e FOR SYSTEM TIME AS OF.
Oltre alle variabili di sistema mostrate in precedenza, puoi utilizzare le variabili di sistema EXCEPTION durante l'esecuzione di una query con più istruzioni. Per ulteriori informazioni
sulle variabili di sistema EXCEPTION, consulta l'istruzione del linguaggio procedurale
BEGIN...EXCEPTION.
Esempi
Non puoi creare variabili di sistema, ma puoi sostituire il valore predefinito di alcune di esse:
SET @@dataset_project_id = 'MyProject';
La seguente query restituisce il fuso orario predefinito:
SELECT @@time_zone AS default_time_zone;
+-------------------+
| default_time_zone |
+-------------------+
| UTC |
+-------------------+
Puoi utilizzare le variabili di sistema con le query DDL e DML.
Ad esempio, ecco alcuni modi per utilizzare la variabile di sistema @@time_zone durante la creazione e l'aggiornamento di una tabella:
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;
Esistono alcuni casi in cui le variabili di sistema non possono essere utilizzate nelle query DDL e DML. Ad esempio, non puoi utilizzare una variabile di sistema come nome di progetto, set di dati o tabella. La seguente query genera un errore quando includi la variabile di sistema @@dataset_id in un percorso della tabella:
BEGIN
CREATE TEMP TABLE @@dataset_id.MyTempTable (id STRING);
END;
Per altri esempi di come utilizzare le variabili di sistema nelle query con più istruzioni, consulta Impostare una variabile.
Per esempi di come utilizzare le variabili di sistema nelle sessioni, consulta Sessione di esempio.