Referência de variáveis do sistema
O BigQuery suporta as seguintes variáveis do sistema para consultas com várias declarações ou em sessões. Pode usar variáveis do sistema para definir ou obter informações durante a execução de consultas, de forma semelhante às variáveis de linguagem processual definidas pelo utilizador.
Nome | Tipo | Leitura e escrita ou só de leitura | Descrição |
---|---|---|---|
@@current_job_id |
STRING |
Só de leitura | ID da tarefa em execução. No contexto de uma consulta com várias declarações, isto devolve a tarefa responsável pela declaração atual e não pela consulta com várias declarações completa. |
@@dataset_id |
STRING |
Leitura e escrita |
ID do conjunto de dados predefinido no projeto atual. Este ID é usado quando não é especificado um conjunto de dados para um projeto na consulta. Pode usar a declaração
SET para atribuir @@dataset_id a
outro ID do conjunto de dados no projeto atual. As variáveis do sistema @@dataset_project_id e @@dataset_id podem ser definidas e usadas em conjunto.
|
@@dataset_project_id |
STRING |
Leitura e escrita |
ID do projeto predefinido que é usado quando não é especificado nenhum para um conjunto de dados usado na consulta. Se @@dataset_project_id não estiver
definido ou estiver definido como NULL , é usado o projeto de execução de consultas
(@@project_id ). Pode usar a declaração SET
para atribuir @@dataset_project_id a outro ID do projeto. As variáveis do sistema @@dataset_project_id e
@@dataset_id podem ser definidas e usadas em conjunto.
|
@@last_job_id |
STRING |
Só de leitura |
ID da tarefa da tarefa mais recente a ser executada na consulta de várias declarações atual, excluindo a atual. Se a consulta com várias declarações contiver declarações CALL , este trabalho pode ter origem num procedimento diferente.
|
@@location |
STRING |
Leitura e escrita |
A localização na qual executar a consulta. @@location só pode ser definido como um literal de string com uma localização válida.
Uma declaração SET @@location tem de ser a primeira declaração numa consulta. Ocorre um erro se existir uma discrepância entre
@@location e outra
definição de localização
para a consulta. Pode melhorar a latência das consultas que definem
@@location usando o
modo de criação de tarefas
opcional. Pode usar a variável de sistema @@location dentro das FDUs SQL e das funções de tabela.
|
@@project_id |
STRING |
Só de leitura |
ID do projeto usado para executar a consulta atual. No contexto de um procedimento, @@project_id refere-se ao projeto que está a executar a consulta de várias declarações e não ao projeto que detém o procedimento.
|
@@query_label |
STRING |
Leitura e escrita |
Etiqueta de consulta a associar a tarefas de consulta na consulta ou sessão de várias declarações atual. Se for definida numa consulta, todas as tarefas de consulta subsequentes
no script ou na sessão vão ter esta etiqueta.
Se não for definido numa consulta, o valor desta variável de sistema é
NULL . Para ver um exemplo de como definir esta variável do sistema,
consulte
Associar tarefas numa sessão a uma etiqueta.
|
@@reservation |
STRING |
Leitura e escrita |
[Pré-visualizar]. Especifica a reserva onde a tarefa é executada. Tem de estar no seguinte formato:
projects/project_id/locations/location/reservations/reservation_id .
A localização da reserva tem de corresponder à localização em que a consulta está a ser executada.
|
@@row_count |
INT64 |
Só de leitura |
Se for usado numa consulta com várias declarações e a declaração anterior for DML, especifica o número de linhas modificadas, inseridas ou eliminadas como resultado dessa declaração DML. Se a declaração anterior for uma declaração MERGE, @@row_count representa o número total combinado de linhas inseridas, removidas e eliminadas. Este valor é NULL se não estiver numa consulta com várias declarações.
|
@@script.bytes_billed |
INT64 |
Só de leitura |
Total de bytes faturados até agora na tarefa de consulta com várias declarações em execução. Este valor é NULL
se não estiver no trabalho.
|
@@script.bytes_processed |
INT64 |
Só de leitura |
Total de bytes processados até agora na tarefa de consulta com várias declarações em execução. Este valor é NULL
se não estiver no trabalho.
|
@@script.creation_time |
TIMESTAMP |
Só de leitura |
Hora de criação da tarefa de consulta com várias declarações em execução atualmente.
Este valor é NULL se não estiver no trabalho.
|
@@script.job_id |
STRING |
Só de leitura |
ID da tarefa de consulta com várias declarações em execução atualmente. Este valor é
NULL se não estiver no trabalho.
|
@@script.num_child_jobs |
INT64 |
Só de leitura |
Número de tarefas secundárias atualmente concluídas. Este valor é
NULL se não estiver no trabalho.
|
@@script.slot_ms |
INT64 |
Só de leitura |
Número de milissegundos de espaço usado até agora pelo script.
Este valor é NULL se não estiver no trabalho.
|
@@session_id |
INT64 |
Só de leitura | ID da sessão à qual a consulta atual está associada. |
@@time_zone |
STRING |
Leitura e escrita |
O fuso horário predefinido a usar em funções SQL dependentes do fuso horário,
quando não é especificado um fuso horário como argumento.
@@time_zone pode ser modificado
através de uma declaração SET para qualquer nome de fuso horário válido.
No início de cada script, @@time_zone começa como "UTC".
|
Para compatibilidade com versões anteriores, as expressões usadas numa cláusula OPTIONS
ou FOR SYSTEM TIME AS OF
usam por predefinição o fuso horário America/Los_Angeles
, enquanto todas as outras expressões de data/hora usam por predefinição o fuso horário UTC
. Se
@@time_zone
tiver sido definido anteriormente na consulta com várias declarações, o fuso horário escolhido aplica-se a todas as expressões de data/hora, incluindo as cláusulas OPTIONS
e FOR SYSTEM TIME AS OF
.
Além das variáveis do sistema apresentadas anteriormente, pode usar variáveis do sistema EXCEPTION
durante a execução de uma consulta com várias declarações. Para mais informações
acerca das EXCEPTION
variáveis do sistema, consulte a declaração de linguagem processual
BEGIN...EXCEPTION.
Exemplos
Não cria variáveis do sistema, mas pode substituir o valor predefinido de algumas delas:
SET @@dataset_project_id = 'MyProject';
A seguinte consulta devolve o fuso horário predefinido:
SELECT @@time_zone AS default_time_zone;
+-------------------+
| default_time_zone |
+-------------------+
| UTC |
+-------------------+
Pode usar variáveis do sistema com consultas LDD e LMD.
Por exemplo, seguem-se algumas formas de usar a variável do sistema @@time_zone
ao criar e atualizar uma tabela:
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;
Existem alguns locais onde não é possível usar variáveis do sistema em consultas DDL e DML. Por exemplo, não pode usar uma variável do sistema como nome de projeto, conjunto de dados ou nome de tabela. A seguinte consulta produz um erro quando
inclui a variável do sistema @@dataset_id
num caminho da tabela:
BEGIN
CREATE TEMP TABLE @@dataset_id.MyTempTable (id STRING);
END;
Para ver mais exemplos de como pode usar variáveis do sistema em consultas com várias declarações, consulte o artigo Defina uma variável.
Para ver exemplos de como pode usar variáveis do sistema em sessões, consulte o exemplo de sessão.