En este documento, se detalla cómo usar decoradores de tabla en la sintaxis de consultas de SQL heredado.
La sintaxis de las consultas preferida para BigQuery es SQL estándar. En este momento, los decoradores de tabla no son compatibles con SQL estándar, pero puedes lograr la semántica del decorador de tablas en SQL estándar si usas un filtro en la seudocolumna _TABLE_SUFFIX
. Para obtener más información, consulta Decoradores de tabla y funciones comodín en la guía de migración de SQL estándar.
Por lo general, BigQuery realiza un análisis de la columna completa cuando se ejecuta una consulta.
Puedes usar los decoradores de tabla en SQL heredado para realizar una consulta más rentable de un subconjunto de tus datos. Los decoradores de tabla se pueden usar cada vez que se lee una tabla, como cuando se copia una tabla, se exporta una tabla o cuando se crea una lista mediante tabledata.list
.
Los decoradores de tabla son compatibles con valores <time>
relativos y absolutos. Un número negativo indica los valores relativos y un número positivo indica valores absolutos. Por ejemplo, -3600000
indica una hora antes en milisegundos, relacionada con la hora actual; 3600000
indica una hora en milisegundos después del 1/1/1970.
Decoradores de instantáneas
Sintaxis
@<time>
- Hace referencia a la instantánea de la tabla en
<time>
, en milisegundos desde el ciclo de entrenamiento. <time>
debe estar dentro de los últimos 7 días y ser mayor o igual que la hora de creación de la tabla.@0
es un caso especial que hace referencia a la instantánea más antigua posible de la tabla: ya sea 7 días en el pasado o la hora de creación de la tabla si la tabla es menor que 7 días.
Puedes usar decoradores de instantáneas para recuperar una tabla dentro de los 2 días posteriores a su eliminación.
Ejemplos
Para obtener una instantánea de la tabla de una hora antes, haz lo siguiente:
Ejemplo de valor relativo
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000]
Ejemplo de valor absoluto
Obtén
<time>
para una hora antes:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
Luego, reemplaza
<time>
en la siguiente consulta:#legacySQL SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time]
Decoradores de rango
Sintaxis
@<time1>-<time2>
- Hace referencia a los datos de tablas que se agregan entre
<time1>
y<time2>
, en milisegundos desde el ciclo de entrenamiento. <time1>
y<time2>
deben estar dentro de los últimos 7 días.<time2>
es opcional y la configuración predeterminada es “ahora”.
Ejemplos
Ejemplos de valores relativos
Para obtener datos de tabla agregados entre una hora y media hora antes, haz lo siguiente:
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000--1800000]
Para obtener los datos de los últimos 10 minutos, haz lo siguiente:
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-600000-]
Ejemplo de valor absoluto
Para obtener datos de tabla agregados entre una hora y media hora antes, haz lo siguiente:
Obtén
<time1>
para una hora antes:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
Obtén
<time2>
para media hora antes:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
Reemplaza
<time1>
y<time2>
en la siguiente consulta:#legacySQL SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]