Decoradores de tabla en SQL heredado

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 siempre que se lea una tabla, como cuando se copia o se exporta una tabla o se enumeran datos con tabledata.list.

Los decoradores de tablas admiten 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 tiempo

Los decoradores de tiempo (antes conocidos como decoradores de instantáneas) hacen referencia a los datos históricos de una tabla en un momento determinado.

Sintaxis

@<time>
  • Hace referencia a los datos históricos de una tabla en <time>, en milisegundos desde el ciclo de entrenamiento.
  • <time> debe estar dentro de los últimos siete días y ser mayor o igual que la hora de creación de la tabla, pero menor que la hora de eliminación o vencimiento de la tabla.
  • @0 es un caso especial que hace referencia a los datos más antiguos disponibles para la tabla.

Los decoradores de tiempo también se usan fuera del SQL heredado. Puedes usarlas en el comando bq cp para restablecer tablas borradas](/bigquery/docs/manage-tables#undeletetable) dentro de los siete días posteriores a la eliminación de la tabla.

Ejemplos

Para obtener los datos históricos de una 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

  1. Obtén <time> para una hora antes:

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. Luego, reemplaza <time> en la siguiente consulta:

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

Decoradores de rango

Sintaxis

@<time1>-<time2>
  • Datos de la tabla de referencias agregados entre <time1> y <time2>, en milisegundos desde el ciclo de entrenamiento
  • <time1> y <time2> deben estar dentro de los últimos siete días.
  • <time2> es opcional y se establece de forma predeterminada en "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:

  1. Obtén <time1> para una hora antes:

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. Obtén <time2> para media hora antes:

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
    
  3. Reemplaza <time1> y <time2> en la siguiente consulta:

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