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
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]