Decoradores de tabela no SQL legado

Normalmente, o BigQuery realiza uma verificação completa de coluna ao executar uma consulta. Use decoradores de tabela no SQL legado para realizar uma consulta mais econômica de um subconjunto dos dados. É possível usar os decoradores sempre que uma tabela é lida, como ao copiar ou exportar uma tabela ou ao listar dados usando tabledata.list.

Os decoradores de tabela aceitam valores <time> relativos e absolutos. Os valores relativos são indicados por um número negativo, e os valores absolutos são indicados por um número positivo. Por exemplo, -3600000 indica uma hora atrás, em milissegundos, em relação à hora atual. 3600000 indica uma hora, em milissegundos, após 01/01/1970.

Decoradores de tempo

Os decoradores de tempo (anteriormente conhecidos como decoradores de snapshot) se referem aos dados históricos de uma tabela em um momento específico.

Sintaxe

@<time>
  • Referencia os dados históricos de uma tabela em <time>, em milissegundos, desde o período.
  • <time> precisa estar dentro dos últimos sete dias e ser maior ou igual ao horário de criação da tabela, mas menor que o prazo de exclusão ou expiração da tabela.
  • @0 é um caso especial que referencia os dados mais antigos disponíveis para a tabela.

Os decoradores de tempo também são usados fora do SQL legado. Você pode usá-los no comando bq cp para restaurar tabelas excluídas](/bigquery/docs/managing-tables#undeletetable) em até sete dias após a exclusão da tabela.

Exemplos

Para receber os dados históricos de uma tabela há uma hora:

Exemplo de valor relativo

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000]

Exemplo de valor absoluto

  1. Veja <time> de uma hora atrás:

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. Em seguida, substitua <time> na seguinte consulta:

    #legacySQL
    SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time]
    

Decoradores de intervalo

Sintaxe

@<time1>-<time2>
  • Referencia os dados da tabela adicionados entre <time1> e <time2>, em milissegundos, desde o período.
  • <time1> e <time2> precisam estar dentro dos últimos sete dias.
  • <time2> é opcional e o padrão é "agora".

Exemplos

Exemplos de valor relativo

Para ver os dados da tabela adicionados entre uma hora e meia hora atrás:

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000--1800000]

Para ver os dados dos últimos 10 minutos:

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-600000-]

Exemplo de valor absoluto

Para ver os dados da tabela adicionados entre uma hora e meia hora atrás:

  1. Veja <time1> de uma hora atrás:

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. Receba <time2> de meia hora atrás:

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
    
  3. Substitua <time1> e <time2> na seguinte consulta:

    #legacySQL
    SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]