Decoratori delle tabelle nell'SQL precedente
Normalmente, BigQuery esegue una scansione completa delle colonne quando viene eseguita una query.
Puoi utilizzare i decorator delle tabelle nell'SQL precedente per eseguire una query più conveniente su un sottoinsieme di dati. I decoratori delle tabelle possono essere utilizzati ogni volta che viene letta una tabella, ad esempio durante la copia, l'esportazione di una tabella o l'elenco dei dati utilizzando tabledata.list
.
I decoratori della tabella supportano valori <time>
relativi e assoluti. I valori relativi sono indicati da un numero negativo, mentre i valori assoluti sono indicati da un numero positivo. Ad esempio, -3600000
indica un'ora fa in millisecondi, in relazione all'ora corrente; 3600000
indica un'ora in millisecondi dopo 1/1/1970.
Decoratori del tempo
I decoratori temporali (precedentemente noti come decoratori di snapshot) fanno riferimento ai dati storici di una tabella in un determinato momento.
Sintassi
@<time>
- Fa riferimento ai dati storici di una tabella in
<time>
, in millisecondi dall'epoca. - Il valore
<time>
deve rientrare negli ultimi sette giorni ed essere superiore o uguale alla data/ora di creazione della tabella, ma inferiore alla data/ora di eliminazione o scadenza della tabella. @0
è un caso speciale che fa riferimento ai dati meno recenti disponibili per la tabella.
I decoratori dell'ora vengono utilizzati anche al di fuori dell'SQL precedente. Puoi utilizzarle nel comando bq cp
per ripristinare le tabelle eliminate](/bigquery/docs/managing-tables#undeletetable) entro sette giorni dall'eliminazione della tabella.
Esempi
Per ottenere i dati storici relativi a una tabella di un'ora fa:
Esempio di valore relativo
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000]
Esempio di valore assoluto
Acquista
<time>
per un'ora fa:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
Quindi, sostituisci
<time>
nella seguente query:#legacySQL SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time]
Decoratori di intervalli
Sintassi
@<time1>-<time2>
- I dati della tabella di riferimento aggiunti tra il giorno
<time1>
e il giorno<time2>
, in millisecondi dall'epoca. <time1>
e<time2>
devono rientrare negli ultimi sette giorni.<time2>
è facoltativo e il valore predefinito è "now".
Esempi
Esempi di valore relativo
Per aggiungere i dati della tabella tra un'ora e mezz'ora fa:
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000--1800000]
Per recuperare i dati degli ultimi 10 minuti:
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-600000-]
Esempio di valore assoluto
Per aggiungere i dati della tabella tra un'ora e mezz'ora fa:
Acquista
<time1>
per un'ora fa:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
Acquista
<time2>
per mezz'ora fa:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
Sostituisci
<time1>
e<time2>
nella seguente query:#legacySQL SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]