Decorator per tabelle in SQL precedente
Normalmente, BigQuery esegue una scansione completa delle colonne quando
esegue una query.
Puoi utilizzare i decoratori di tabella in SQL precedente per eseguire una query più conveniente di un sottoinsieme dei tuoi dati. I decoratori di tabelle possono essere utilizzati ogni volta che viene letta una tabella, ad esempio quando viene copiata una tabella, esportata una tabella o elencati i dati utilizzando tabledata.list.
I decoratori di tabelle supportano i 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, rispetto all'ora attuale; 3600000
indica un'ora in millisecondi dopo il 1° gennaio 1970.
Decoratori temporali
I decoratori temporali (precedentemente noti come decoratori 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. <time>deve rientrare negli ultimi sette giorni ed essere maggiore o uguale all'ora di creazione della tabella, ma inferiore all'ora di eliminazione o scadenza della tabella.@0è un caso speciale che fa riferimento ai dati più vecchi disponibili per la tabella.
I decorator temporali vengono utilizzati anche al di fuori di SQL precedente. Puoi utilizzarli nel
comando bq cp per
ripristinare le tabelle eliminate
entro sette giorni dall'eliminazione.
Esempi
Per ottenere i dati storici di una tabella di un'ora fa:
Esempio di valore relativo
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000]
Esempio di valore assoluto
Ottieni
<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]
Decorator intervallo
Sintassi
@<time1>-<time2>
- Dati della tabella dei riferimenti aggiunti tra il giorno
<time1>e il giorno<time2>, in millisecondi dall'epoca. <time1>e<time2>devono essere compresi negli ultimi sette giorni.<time2>è facoltativo e il valore predefinito è "now".
Esempi
Esempi di valori relativi
Per ottenere i dati della tabella aggiunti tra un'ora e mezz'ora fa:
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000--1800000]
Per ottenere i dati degli ultimi 10 minuti:
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-600000-]
Esempio di valore assoluto
Per ottenere i dati della tabella aggiunti tra un'ora e mezz'ora fa:
Ottieni
<time1>per un'ora fa:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)Ottieni
<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]