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 EXCEPTIONdurante a execução de uma consulta com várias declarações. Para mais informações acerca das EXCEPTIONvariá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.