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
Veja
<time>
de uma hora atrás:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
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:
Veja
<time1>
de uma hora atrás:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
Receba
<time2>
de meia hora atrás:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
Substitua
<time1>
e<time2>
na seguinte consulta:#legacySQL SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]