Dekorator tabel di Legacy SQL
Biasanya, BigQuery melakukan pemindaian kolom penuh saat menjalankan kueri.
Anda dapat menggunakan dekorator tabel di legacy SQL untuk melakukan kueri sebagian data
yang lebih hemat biaya. Dekorator tabel dapat digunakan setiap kali tabel dibaca,
seperti saat menyalin tabel,
mengekspor tabel,
atau mencantumkan data menggunakan tabledata.list
.
Dekorator tabel mendukung nilai <time>
yang relatif dan absolut. Nilai
relatif ditunjukkan dengan bilangan negatif, dan nilai
absolut ditunjukkan dengan bilangan positif. Misalnya, -3600000
menunjukkan satu
jam yang lalu dalam milidetik, relatif terhadap waktu saat ini; 3600000
menunjukkan satu jam dalam milidetik setelah 1/1/1970.
Dekorator waktu
Dekorator waktu (sebelumnya dikenal sebagai dekorator snapshot) mereferensikan data historis tabel pada suatu waktu.
Sintaksis
@<time>
- Mereferensikan data historis tabel pada
<time>
, dalam milidetik sejak epoch. <time>
harus berada dalam waktu tujuh hari terakhir dan lebih lama dari atau sama dengan waktu pembuatan tabel, tetapi kurang dari waktu penghapusan atau habis masa berlaku tabel.@0
adalah kasus khusus yang mereferensikan data terlama yang tersedia untuk tabel.
Dekorator waktu juga digunakan di luar legacy SQL. Anda dapat menggunakannya dalam
bq cp
perintah untuk
memulihkan tabel yang telah dihapus](/bigquery/docs/managing-tables#undeletetable)
dalam waktu tujuh hari setelah penghapusan tabel ini.
Contoh
Untuk mendapatkan data historis untuk tabel satu jam yang lalu:
Contoh nilai relatif
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000]
Contoh nilai absolut
Dapatkan
<time>
selama satu jam yang lalu:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
Kemudian, ganti
<time>
di kueri berikut:#legacySQL SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time]
Dekorator rentang
Sintaksis
@<time1>-<time2>
- Mereferensikan data tabel yang ditambahkan antara
<time1>
dan<time2>
, dalam milidetik sejak epoch. <time1>
dan<time2>
harus berada dalam tujuh hari terakhir.<time2>
bersifat opsional dan defaultnya adalah 'sekarang'.
Contoh
Contoh nilai relatif
Untuk mendapatkan data tabel yang ditambahkan antara satu jam dan setengah jam yang lalu:
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000--1800000]
Untuk mendapatkan data selama 10 menit terakhir:
#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-600000-]
Contoh nilai absolut
Untuk mendapatkan data tabel yang ditambahkan antara satu jam dan setengah jam yang lalu:
Dapatkan
<time1>
selama satu jam yang lalu:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
Dapatkan
<time2>
selama setengah jam yang lalu:#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
Ganti
<time1>
dan<time2>
dalam kueri berikut:#legacySQL SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]