Menjadwalkan kueri
Halaman ini menjelaskan cara menjadwalkan kueri berulang di BigQuery.
Anda dapat menjadwalkan kueri untuk dijalankan secara berulang. Kueri terjadwal harus ditulis dalam GoogleSQL, yang dapat mencakup pernyataan bahasa definisi data (DDL) dan bahasa manipulasi data (DML). Anda dapat mengatur hasil kueri menurut tanggal dan waktu dengan membuat parameter string kueri dan tabel tujuan.
Saat Anda membuat atau memperbarui jadwal kueri, waktu yang dijadwalkan untuk kueri akan dikonversi dari waktu lokal Anda ke UTC. UTC tidak terpengaruh oleh waktu musim panas.
Sebelum memulai
- Kueri terjadwal menggunakan fitur BigQuery Data Transfer Service. Pastikan Anda telah menyelesaikan semua tindakan yang diperlukan dalam Mengaktifkan BigQuery Data Transfer Service.
- Berikan peran Identity and Access Management (IAM) yang memberi pengguna izin yang diperlukan untuk melakukan setiap tugas dalam dokumen ini.
- Jika Anda berencana menentukan kunci enkripsi yang dikelola pelanggan (CMEK), pastikan bahwa akun layanan memiliki izin untuk mengenkripsi dan mendekripsi, dan Anda memiliki ID resource kunci Cloud KMS yang diperlukan untuk menggunakan CMEK. Untuk mengetahui informasi tentang cara kerja CMEK dengan BigQuery Data Transfer Service, lihat Menentukan kunci enkripsi dengan kueri terjadwal.
Izin yang diperlukan
Untuk menjadwalkan kueri, Anda memerlukan izin IAM berikut:
Untuk membuat transfer, Anda harus memiliki izin
bigquery.transfers.update
danbigquery.datasets.get
, atau izinbigquery.jobs.create
,bigquery.transfers.get
, danbigquery.datasets.get
.Untuk menjalankan kueri terjadwal, Anda harus memiliki:
- Izin
bigquery.datasets.get
pada set data target bigquery.jobs.create
- Izin
Untuk mengubah atau menghapus kueri terjadwal, Anda memerlukan salah satu izin IAM berikut:
bigquery.transfers.update
bigquery.jobs.create
dan kepemilikan atas kueri terjadwal
Peran IAM roles/bigquery.admin
yang telah ditetapkan mencakup izin yang Anda perlukan untuk menjadwalkan atau mengubah kueri.
Untuk mengetahui informasi selengkapnya tentang peran IAM di BigQuery, lihat Peran dan izin yang telah ditentukan sebelumnya.
Untuk membuat atau memperbarui kueri terjadwal yang dijalankan oleh akun layanan, Anda harus memiliki akses ke akun layanan tersebut. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran akun layanan kepada pengguna, lihat Peran pengguna Akun Layanan. Untuk memilih akun layanan di UI kueri terjadwal Google Cloud Console, Anda memerlukan izin IAM berikut:
iam.serviceAccounts.list
Opsi konfigurasi
String kueri
String kueri harus valid dan ditulis di GoogleSQL. Setiap kueri terjadwal yang dijalankan dapat menerima parameter kueri berikut.
Untuk menguji string kueri secara manual dengan parameter @run_time
dan @run_date
sebelum menjadwalkan kueri, gunakan alat command line bq.
Parameter yang tersedia
Parameter | Jenis GoogleSQL | Nilai |
---|---|---|
@run_time |
TIMESTAMP | Direpresentasikan dalam waktu UTC. Untuk kueri yang dijadwalkan secara rutin, run_time mewakili waktu eksekusi yang diinginkan. Misalnya, jika kueri terjadwal ditetapkan ke "setiap 24 jam", perbedaan run_time antara dua kueri berturut-turut adalah 24 jam, meskipun waktu eksekusi yang sebenarnya mungkin sedikit berbeda. |
@run_date |
DATE | Mewakili tanggal kalender logis. |
Contoh
Parameter @run_time
adalah bagian dari string kueri dalam contoh ini, yang mengkueri set data publik bernama hacker_news.stories
.
SELECT @run_time AS time, title, author, text FROM `bigquery-public-data.hacker_news.stories` LIMIT 1000
Tabel tujuan
Jika tabel tujuan untuk hasil Anda tidak ada saat Anda menyiapkan kueri terjadwal, BigQuery akan mencoba membuat tabel untuk Anda.
Jika Anda menggunakan kueri DDL atau DML, maka di konsol Google Cloud, pilih Processing location atau region. Lokasi pemrosesan diperlukan untuk kueri DDL atau DML yang membuat tabel tujuan.
Jika tabel tujuan sudah ada dan Anda menggunakan preferensi tulis WRITE_APPEND
, BigQuery akan menambahkan data ke tabel tujuan dan mencoba memetakan skema.
BigQuery secara otomatis mengizinkan penambahan dan pengurutan ulang kolom, serta mengakomodasi kolom opsional yang tidak ada. Jika skema tabel terlalu banyak berubah di antara sesi sehingga BigQuery tidak dapat memproses perubahan secara otomatis, kueri terjadwal akan gagal.
Kueri dapat mereferensikan tabel dari berbagai project dan set data yang berbeda. Saat mengonfigurasi kueri terjadwal, Anda tidak perlu menyertakan set data tujuan di nama tabel. Anda menentukan set data tujuan secara terpisah.
Set data dan tabel tujuan untuk kueri terjadwal harus berada dalam project yang sama dengan kueri terjadwal.
Preferensi penulisan
Preferensi penulisan yang Anda pilih menentukan cara hasil kueri ditulis ke tabel tujuan yang ada.
WRITE_TRUNCATE
: Jika tabel itu ada, BigQuery akan menimpa data tabel.WRITE_APPEND
: Jika tabel itu ada, BigQuery akan menambahkan data ke tabel tersebut.
Jika menggunakan kueri DDL atau DML, Anda tidak dapat menggunakan opsi preferensi tulis.
Pembuatan, pemotongan, atau penambahan tabel tujuan hanya terjadi jika BigQuery berhasil menyelesaikan kueri. Tindakan pembuatan, pemotongan, atau penambahan terjadi sebagai satu update atomik setelah tugas selesai.
Pengelompokan
Kueri terjadwal hanya dapat membuat pengelompokan pada tabel baru jika tabel dibuat dengan pernyataan CREATE TABLE AS SELECT
DDL. Lihat Membuat tabel yang dikelompokkan dari hasil kueri di halaman Menggunakan pernyataan bahasa definisi data.
Opsi partisi
Kueri terjadwal dapat membuat tabel tujuan yang dipartisi atau tidak dipartisi. Partisi tersedia di konsol Google Cloud, alat command line bq, dan metode penyiapan API. Jika Anda menggunakan kueri DDL atau DML dengan partisi, kosongkan kolom Destination table partitioning.
Anda dapat menggunakan jenis partisi tabel berikut di BigQuery:
- Partisi rentang bilangan bulat:
Tabel yang dipartisi berdasarkan rentang nilai dalam kolom
INTEGER
tertentu. - Partisi kolom unit waktu:
Tabel yang dipartisi berdasarkan
TIMESTAMP
,DATE
, atauDATETIME
. - Pembagian waktu penyerapan: Tabel yang dipartisi menurut waktu penyerapan. BigQuery secara otomatis menetapkan baris ke partisi berdasarkan waktu saat BigQuery menyerap data.
Untuk membuat tabel yang dipartisi menggunakan kueri terjadwal di Google Cloud Console, gunakan opsi berikut:
Untuk menggunakan partisi rentang bilangan bulat, kosongkan Kolom partisi tabel tujuan.
Untuk menggunakan partisi kolom satuan waktu, tentukan nama kolom di Kolom partisi tabel tujuan saat menyiapkan kueri terjadwal.
Untuk menggunakan partisi waktu penyerapan, kosongkan kolom Destination table partitioning dan tunjukkan partisi tanggal di nama tabel tujuan. Misalnya,
mytable${run_date}
. Untuk informasi selengkapnya, lihat Sintaksis template parameter.
Parameter yang tersedia
Saat menyiapkan kueri terjadwal, Anda dapat menentukan cara mempartisi tabel tujuan dengan parameter runtime.
Parameter | Jenis Template | Nilai |
---|---|---|
run_time |
Stempel waktu terformat | Dalam waktu UTC, sesuai jadwal. Untuk kueri yang dijadwalkan secara rutin, run_time mewakili waktu eksekusi yang diinginkan. Misalnya, jika kueri terjadwal disetel ke "setiap 24 jam", perbedaan run_time antara dua kueri berturut-turut adalah 24 jam, meskipun waktu eksekusi sebenarnya mungkin sedikit berbeda.Lihat TransferRun.runTime . |
run_date |
String tanggal | Tanggal parameter run_time dalam format berikut: %Y-%m-%d ; misalnya, 2018-01-01 . Format ini kompatibel dengan tabel berpartisi berdasarkan waktu penyerapan. |
Sistem template
Kueri terjadwal mendukung parameter runtime dalam nama tabel tujuan dengan sintaksis template.
Sintaksis template parameter
Sintaksis template mendukung template string dasar dan offset waktu. Parameter direferensikan dalam format berikut:
{run_date}
{run_time[+\-offset]|"time_format"}
Parameter | Tujuan |
---|---|
run_date |
Parameter ini diganti dengan tanggal dalam format YYYYMMDD . |
run_time |
Parameter ini mendukung properti berikut:
|
- Tidak ada spasi kosong yang diizinkan antara run_time, selisih, dan format waktu.
- Untuk menyertakan tanda kurung kurawal literal dalam string, Anda dapat meng-escape tanda kurung tersebut sebagai
'\{' and '\}'
. - Untuk menyertakan tanda kutip literal atau batang vertikal dalam time_format, seperti
"YYYY|MM|DD"
, Anda dapat meng-escape karakter tersebut dalam string format seperti:'\"'
atau'\|'
.
Contoh template parameter
Contoh ini menunjukkan cara menentukan nama tabel tujuan dengan format waktu yang berbeda-beda, dan mengimbangi waktu proses.run_time (UTC) | Parameter dengan template | Nama tabel tujuan output |
---|---|---|
15-02-2018 00:00:00 | mytable |
mytable |
15-02-2018 00:00:00 | mytable_{run_time|"%Y%m%d"} |
mytable_20180215 |
15-02-2018 00:00:00 | mytable_{run_time+25h|"%Y%m%d"} |
mytable_20180216 |
15-02-2018 00:00:00 | mytable_{run_time-1h|"%Y%m%d"} |
mytable_20180214 |
15-02-2018 00:00:00 | mytable_{run_time+1.5h|"%Y%m%d%H"}
atau mytable_{run_time+90m|"%Y%m%d%H"} |
mytable_2018021501 |
2018-02-15 00:00:00 | {run_time+97s|"%Y%m%d"}_mytable_{run_time+97s|"%H%M%S"} |
20180215_mytable_000137 |
Menggunakan akun layanan
Anda dapat menyiapkan kueri terjadwal untuk mengautentikasi sebagai akun layanan. Akun layanan adalah Akun Google yang terkait dengan project Google Cloud Anda. Akun layanan dapat menjalankan tugas, seperti kueri terjadwal atau pipeline batch processing, dengan kredensial layanannya sendiri, bukan kredensial pengguna akhir.
Baca selengkapnya tentang cara melakukan autentikasi dengan akun layanan di bagian Pengantar autentikasi.
Anda dapat menyiapkan kueri terjadwal dengan akun layanan. Jika Anda login dengan identitas gabungan, akun layanan diperlukan untuk membuat transfer. Jika Anda login dengan Akun Google, akun layanan untuk transfer bersifat opsional.
Anda dapat memperbarui kueri terjadwal yang ada dengan kredensial akun layanan menggunakan alat command line bq atau Konsol Google Cloud. Untuk informasi selengkapnya, lihat Memperbarui kredensial kueri terjadwal.
Menentukan kunci enkripsi dengan kueri terjadwal
Anda dapat menentukan kunci enkripsi yang dikelola pelanggan (CMEK) guna mengenkripsi data untuk proses transfer. Anda dapat menggunakan CMEK untuk mendukung transfer dari kueri terjadwal.Saat Anda menentukan CMEK dengan transfer, BigQuery Data Transfer Service akan menerapkan CMEK ke cache perantara data yang diserap dalam disk, sehingga seluruh alur kerja transfer data mematuhi CMEK.
Anda tidak dapat memperbarui transfer yang sudah ada untuk menambahkan CMEK jika transfer tersebut awalnya tidak dibuat dengan CMEK. Misalnya, Anda tidak dapat mengubah tabel tujuan yang awalnya dienkripsi secara default menjadi kini dienkripsi dengan CMEK. Sebaliknya, Anda juga tidak dapat mengubah tabel tujuan yang dienkripsi CMEK agar memiliki jenis enkripsi yang berbeda.
Anda dapat memperbarui CMEK untuk transfer jika konfigurasi transfer awalnya dibuat dengan enkripsi CMEK. Saat Anda memperbarui CMEK untuk konfigurasi transfer, BigQuery Data Transfer Service akan menyebarkan CMEK ke tabel tujuan pada proses transfer berikutnya. Di sini, BigQuery Data Transfer Service akan mengganti CMEK yang sudah usang dengan CMEK baru selama proses transfer. Untuk informasi selengkapnya, lihat Memperbarui transfer.
Anda juga dapat menggunakan kunci default project. Saat Anda menentukan kunci default project dengan transfer, BigQuery Data Transfer Service akan menggunakan kunci default project sebagai kunci default untuk setiap konfigurasi transfer baru.
Menyiapkan kueri terjadwal
Untuk deskripsi sintaksis jadwal, lihat Memformat jadwal.
Untuk mengetahui detail tentang sintaksis jadwal, lihat Referensi: TransferConfig
.
Konsol
Buka halaman BigQuery di konsol Google Cloud.
Jalankan kueri yang Anda inginkan. Jika sudah puas dengan hasilnya, klik Schedule dan Create new scheduled query.
Opsi kueri terjadwal akan terbuka di panel Newschedule query.
Di panel New schedule query:
- Untuk Name for the scheduled query, masukkan nama seperti
My scheduled query
. Nama kueri terjadwal dapat berupa nilai apa pun yang dapat Anda identifikasi nanti jika perlu mengubah kueri. Opsional: Secara default, kueri dijadwalkan untuk berjalan Harian. Anda dapat mengubah jadwal default dengan memilih opsi dari menu drop-down Repeats:
Untuk menentukan frekuensi kustom, pilih Custom, lalu masukkan spesifikasi waktu Cron di kolom Custom schedule—misalnya,
every mon 23:30
atauevery 6 hours
. Untuk mengetahui detail tentang jadwal yang valid termasuk interval kustom, lihat kolomschedule
di bagian Referensi:TransferConfig
.Untuk mengubah waktu mulai, pilih opsi Start at set time, masukkan tanggal dan waktu mulai yang diinginkan.
Untuk menentukan waktu berakhir, pilih opsi Schedule end time, masukkan tanggal dan waktu akhir yang diinginkan.
Untuk menyimpan kueri tanpa jadwal agar Anda dapat menjalankannya secara on demand, pilih On-demand di menu Repeats.
- Untuk Name for the scheduled query, masukkan nama seperti
Untuk kueri
SELECT
GoogleSQL, pilih opsi Set a destination table for query results, lalu berikan informasi berikut tentang set data tujuan.- Untuk Dataset name, pilih set data tujuan yang sesuai.
- Untuk Table name, masukkan nama tabel tujuan.
- Untuk Ddestination table write preference, pilih Append to table untuk menambahkan data ke tabel atau Overwrite table untuk menimpa tabel tujuan.
Untuk kueri DDL dan DML, pilih Processing location atau region.
Advanced options
Opsional: CMEK Jika menggunakan kunci enkripsi yang dikelola pelanggan, Anda dapat memilih Customer-managed key di bagian Advanced options. Daftar CMEK yang tersedia akan muncul dan dapat Anda pilih. Untuk mengetahui informasi cara kerja kunci enkripsi yang dikelola pelanggan (CMEK) dengan BigQuery Data Transfer Service, lihat Menentukan kunci enkripsi dengan kueri terjadwal.
Melakukan autentikasi sebagai akun layanan Jika memiliki satu atau beberapa akun layanan yang terkait dengan project Google Cloud, Anda dapat mengaitkan akun layanan dengan kueri terjadwal, bukan menggunakan kredensial pengguna. Di bagian Scheduled query credential, klik menu untuk melihat daftar akun layanan yang tersedia. Akun layanan diperlukan jika Anda login sebagai identitas gabungan.
Konfigurasi tambahan:
Opsional: Centang Send email notifications untuk mengizinkan pengiriman notifikasi email tentang kegagalan operasi transfer.
Opsional: Untuk Pub/Sub topic, masukkan nama topik Pub/Sub Anda, misalnya:
projects/myproject/topics/mytopic
.
Klik tombol Schedule.
bq
Opsi 1: Gunakan perintah bq query
.
Untuk membuat kueri terjadwal, tambahkan opsi destination_table
(atau
target_dataset
), --schedule
, dan --display_name
ke
perintah bq query
Anda.
bq query \ --display_name=name \ --destination_table=table \ --schedule=interval
Ganti kode berikut:
name
. Nama tampilan untuk kueri terjadwal. Nama tampilan dapat berupa nilai apa pun yang dapat diidentifikasi nanti jika Anda perlu mengubah kueri.table
. Tabel tujuan untuk hasil kueri.--target_dataset
adalah cara alternatif untuk memberi nama set data target untuk hasil kueri, saat digunakan dengan kueri DDL dan DML.- Gunakan salah satu dari
--destination_table
atau--target_dataset
, tetapi jangan keduanya.
interval
. Saat digunakan denganbq query
, akan membuat kueri menjadi kueri terjadwal berulang. Jadwal untuk seberapa sering kueri harus dijalankan. Untuk mengetahui detail tentang jadwal yang valid termasuk interval kustom, lihat kolomschedule
di bagian Referensi:TransferConfig
. Contoh:--schedule='every 24 hours'
--schedule='every 3 hours'
--schedule='every monday 09:00'
--schedule='1st sunday of sep,oct,nov 00:00'
Flag opsional:
--project_id
adalah project ID Anda. Jika--project_id
tidak ditentukan, maka project default akan digunakan.--replace
memotong tabel tujuan dan menulis hasil baru dengan setiap kueri terjadwal dijalankan.--append_table
menambahkan hasil ke tabel tujuan.Untuk kueri DDL dan DML, Anda juga dapat menyediakan flag
--location
untuk menentukan region tertentu untuk diproses. Jika--location
tidak ditentukan, lokasi Google Cloud terdekat akan digunakan.
Misalnya, perintah berikut membuat kueri terjadwal bernama
My Scheduled Query
menggunakan kueri sederhana SELECT 1 from mydataset.test
.
Tabel tujuan adalah mytable
dalam set data mydataset
. Kueri terjadwal dibuat di project default:
bq query \
--use_legacy_sql=false \
--destination_table=mydataset.mytable \
--display_name='My Scheduled Query' \
--schedule='every 24 hours' \
--replace=true \
'SELECT
1
FROM
mydataset.test'
Opsi 2: Gunakan perintah bq mk
.
Kueri terjadwal adalah sejenis transfer. Untuk menjadwalkan kueri, Anda dapat menggunakan alat command line bq untuk membuat konfigurasi transfer.
Kueri harus dalam dialek StandardSQL agar dapat dijadwalkan.
Masukkan perintah bq mk
dan berikan flag yang diperlukan berikut ini:
--transfer_config
--data_source
--target_dataset
(opsional untuk kueri DDL dan DML)--display_name
--params
Flag opsional:
--project_id
adalah project ID Anda. Jika--project_id
tidak ditentukan, maka project default akan digunakan.--schedule
adalah seberapa sering Anda ingin kueri dijalankan. Jika--schedule
tidak ditentukan, defaultnya adalah 'setiap 24 jam' berdasarkan waktu pembuatan.Untuk kueri DDL dan DML, Anda juga dapat menyediakan flag
--location
untuk menentukan region tertentu untuk diproses. Jika--location
tidak ditentukan, lokasi Google Cloud terdekat akan digunakan.--service_account_name
digunakan untuk mengautentikasi kueri terjadwal dengan akun layanan, bukan akun pengguna perorangan Anda.--destination_kms_key
menentukan ID resource kunci untuk kunci jika Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk transfer ini. Untuk informasi tentang cara kerja CMEK dengan BigQuery Data Transfer Service, lihat Menentukan kunci enkripsi dengan kueri terjadwal.
bq mk \ --transfer_config \ --target_dataset=dataset \ --display_name=name \ --params='parameters' \ --data_source=data_source
Ganti kode berikut:
dataset
. Set data target untuk konfigurasi transfer.- Parameter ini bersifat opsional untuk kueri DDL dan DML. Kolom ini wajib diisi untuk semua kueri lainnya.
name
. Nama tampilan untuk konfigurasi transfer. Nama tampilan dapat berupa nilai apa pun yang dapat diidentifikasi nanti jika Anda perlu mengubah kueri.parameters
. Berisi parameter untuk konfigurasi transfer yang dibuat dalam format JSON. Sebagai contoh:--params='{"param":"param_value"}'
.- Untuk kueri terjadwal, Anda harus menyediakan parameter
query
. - Parameter
destination_table_name_template
adalah nama tabel tujuan Anda.- Parameter ini bersifat opsional untuk kueri DDL dan DML. Kolom ini wajib diisi untuk semua kueri lainnya.
- Untuk parameter
write_disposition
, Anda dapat memilihWRITE_TRUNCATE
untuk memotong (menimpa) tabel tujuan, atauWRITE_APPEND
untuk menambahkan hasil kueri ke tabel tujuan.- Parameter ini bersifat opsional untuk kueri DDL dan DML. Kolom ini wajib diisi untuk semua kueri lainnya.
- Untuk kueri terjadwal, Anda harus menyediakan parameter
data_source
. Sumber data:scheduled_query
.- Opsional: Flag
--service_account_name
digunakan untuk mengautentikasi dengan akun layanan, bukan akun pengguna perorangan. - Opsional:
--destination_kms_key
menentukan ID resource kunci untuk kunci Cloud KMS, misalnyaprojects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name
.
Misalnya, perintah berikut membuat konfigurasi transfer kueri terjadwal bernama My Scheduled Query
menggunakan kueri sederhana SELECT 1
from mydataset.test
. Tabel tujuan mytable
akan terpotong untuk setiap
penulisan, dan set data target adalah mydataset
. Kueri terjadwal dibuat dalam project default, dan diautentikasi sebagai akun layanan:
bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Scheduled Query' \
--params='{"query":"SELECT 1 from mydataset.test","destination_table_name_template":"mytable","write_disposition":"WRITE_TRUNCATE"}' \
--data_source=scheduled_query \
--service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com
Saat pertama kali menjalankan perintah, Anda akan menerima pesan seperti berikut:
[URL omitted] Please copy and paste the above URL into your web browser and
follow the instructions to retrieve an authentication code.
Ikuti petunjuk dalam pesan, lalu tempel kode autentikasi pada command line.
API
Gunakan metode projects.locations.transferConfigs.create
dan berikan instance resource TransferConfig
.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menyiapkan kueri terjadwal dengan akun layanan
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Lihat status kueri terjadwal
Konsol
Untuk melihat status kueri terjadwal, klik Scheculed queries di panel navigasi. Muat ulang halaman untuk melihat status terbaru dari kueri terjadwal Anda. Klik kueri terjadwal untuk mendapatkan detail selengkapnya tentangnya.
bq
Kueri terjadwal adalah sejenis transfer. Untuk menampilkan detail kueri terjadwal, Anda dapat menggunakan alat command line bq terlebih dahulu untuk mencantumkan konfigurasi transfer.
Masukkan perintah bq ls
dan berikan flag transfer
--transfer_config
. Flag berikut juga diperlukan:
--transfer_location
Contoh:
bq ls \
--transfer_config \
--transfer_location=us
Untuk menampilkan detail satu kueri terjadwal, masukkan perintah bq show
dan berikan transfer_path
untuk konfigurasi transfer/kueri terjadwal tersebut.
Contoh:
bq show \
--transfer_config \
projects/862514376110/locations/us/transferConfigs/5dd12f26-0000-262f-bc38-089e0820fe38
API
Gunakan metode projects.locations.transferConfigs.list
dan berikan instance resource TransferConfig
.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Perbarui kueri terjadwal
Konsol
Untuk memperbarui kueri terjadwal, ikuti langkah-langkah berikut:
- Di panel navigasi, klik Scheduled queries.
- Dalam daftar kueri terjadwal, klik nama kueri yang ingin diubah.
- Di halaman Scheduled query details yang terbuka, klik Edit.
- Opsional: Ubah teks kueri di panel pengeditan kueri.
- Klik Schedule query, lalu pilih Update shceduled query.
- Opsional: Ubah opsi penjadwalan lainnya untuk kueri.
- Klik Perbarui.
bq
Kueri terjadwal adalah sejenis transfer. Untuk memperbarui kueri terjadwal, Anda dapat menggunakan alat command line bq untuk membuat konfigurasi transfer.
Masukkan perintah bq update
dengan flag --transfer_config
yang diperlukan.
Flag opsional:
--project_id
adalah project ID Anda. Jika--project_id
tidak ditentukan, maka project default akan digunakan.--schedule
adalah seberapa sering Anda ingin kueri dijalankan. Jika--schedule
tidak ditentukan, defaultnya adalah 'setiap 24 jam' berdasarkan waktu pembuatan.--service_account_name
hanya berlaku jika--update_credentials
juga ditetapkan. Untuk informasi selengkapnya, lihat Memperbarui kredensial kueri terjadwal.--target_dataset
(opsional untuk kueri DDL dan DML) adalah cara alternatif untuk memberi nama set data target untuk hasil kueri, saat digunakan dengan kueri DDL dan DML.--display_name
adalah nama untuk kueri terjadwal.--params
parameter untuk konfigurasi transfer yang dibuat dalam format JSON. Misalnya: --params='{"param":"param_value"}'.--destination_kms_key
menentukan ID resource kunci untuk kunci Cloud KMS jika Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk transfer ini. Untuk mengetahui informasi tentang cara kerja kunci enkripsi yang dikelola pelanggan (CMEK) dengan BigQuery Data Transfer Service, lihat Menentukan kunci enkripsi dengan kueri terjadwal.
bq update \ --target_dataset=dataset \ --display_name=name \ --params='parameters' --transfer_config \ RESOURCE_NAME
Ganti kode berikut:
dataset
. Set data target untuk konfigurasi transfer. Parameter ini bersifat opsional untuk kueri DDL dan DML. Wajib diisi untuk semua kueri lainnya.name
. Nama tampilan untuk konfigurasi transfer. Nama tampilan dapat berupa nilai apa pun yang dapat diidentifikasi nanti jika Anda perlu mengubah kueri.parameters
. Berisi parameter untuk konfigurasi transfer yang dibuat dalam format JSON. Sebagai contoh:--params='{"param":"param_value"}'
.- Untuk kueri terjadwal, Anda harus menyediakan parameter
query
. - Parameter
destination_table_name_template
adalah nama tabel tujuan Anda. Parameter ini bersifat opsional untuk kueri DDL dan DML. Kolom ini wajib ada untuk semua kueri lainnya. - Untuk parameter
write_disposition
, Anda dapat memilihWRITE_TRUNCATE
untuk memotong (menimpa) tabel tujuan, atauWRITE_APPEND
untuk menambahkan hasil kueri ke tabel tujuan. Parameter ini bersifat opsional untuk kueri DDL dan DML. Kolom ini wajib ada untuk semua kueri lainnya.
- Untuk kueri terjadwal, Anda harus menyediakan parameter
- Opsional:
--destination_kms_key
menentukan ID resource kunci untuk kunci Cloud KMS, misalnyaprojects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name
. RESOURCE_NAME
: Nama resource transfer (juga disebut sebagai konfigurasi transfer). Jika Anda tidak mengetahui nama resource transfer, cari nama resource dengan:bq ls --transfer_config --transfer_location=location
.
Misalnya, perintah berikut memperbarui konfigurasi transfer kueri terjadwal bernama My Scheduled Query
menggunakan kueri sederhana SELECT 1
from mydataset.test
. Tabel tujuan mytable
akan terpotong untuk setiap
penulisan, dan set data target adalah mydataset
:
bq update \
--target_dataset=mydataset \
--display_name='My Scheduled Query' \
--params='{"query":"SELECT 1 from mydataset.test","destination_table_name_template":"mytable","write_disposition":"WRITE_TRUNCATE"}'
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
API
Gunakan metode projects.transferConfigs.patch
dan berikan Nama Resource transfer menggunakan
parameter transferConfig.name
. Jika Anda tidak mengetahui Nama Resource
transfer, gunakan
perintah bq ls --transfer_config --transfer_location=location
untuk mencantumkan semua transfer atau panggil
projects.locations.transferConfigs.list
dan berikan project ID menggunakan parameter parent
.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Memperbarui kueri terjadwal dengan batasan kepemilikan
Jika Anda mencoba mengupdate kueri terjadwal yang bukan milik Anda, update mungkin gagal dengan pesan error berikut:
Cannot modify restricted parameters without taking ownership of the transfer configuration.
Pemilik kueri terjadwal adalah pengguna yang terkait dengan kueri terjadwal atau pengguna yang memiliki akses ke akun layanan yang terkait dengan kueri terjadwal. Pengguna terkait dapat dilihat dalam detail konfigurasi kueri terjadwal. Untuk mengetahui informasi tentang cara memperbarui kueri terjadwal agar mengambil alih kepemilikan, lihat Memperbarui kredensial kueri terjadwal. Untuk memberi pengguna akses ke akun layanan, Anda harus memiliki peran pengguna Akun Layanan.
Setiap pengguna yang bukan pemilik kueri terjadwal, tetapi memiliki akses ke semua resource yang disebutkan oleh kueri, mungkin masih diizinkan untuk memperbarui kueri. Skenario ini hanya didukung jika kueri dapat divalidasi dalam waktu satu atau dua menit. Jika tidak, Anda akan mendapatkan pesan error yang sama seperti yang disebutkan sebelumnya. Jika kueri terlalu kompleks, Anda dapat memperbarui kredensial kueri terjadwal untuk mengambil kepemilikan langsung atas kueri terjadwal atau menggunakan akun layanan.
Memperbarui kredensial kueri terjadwal
Jika menjadwalkan kueri yang ada, Anda mungkin perlu memperbarui kredensial pengguna pada kueri. Kredensial otomatis diperbarui untuk kueri terjadwal yang baru.
Beberapa situasi lain yang mungkin memerlukan pembaruan kredensial meliputi hal berikut:
- Anda ingin membuat kueri data Google Drive dalam kueri terjadwal.
Anda akan menerima error INVALID_USER saat mencoba menjadwalkan kueri:
Error code 5 : Authentication failure: User Id not found. Error code: INVALID_USERID
Anda menerima error parameter yang dibatasi berikut saat mencoba memperbarui kueri:
Cannot modify restricted parameters without taking ownership of the transfer configuration.
Konsol
Untuk memperbarui kredensial yang ada pada kueri terjadwal:
Temukan dan lihat status kueri terjadwal.
Klik tombol MORE dan pilih Update credentials.
Tunggu 10 hingga 20 menit agar perubahan diterapkan. Anda mungkin perlu menghapus cache browser.
bq
Kueri terjadwal adalah sejenis transfer. Untuk memperbarui kredensial kueri terjadwal, Anda dapat menggunakan alat command line bq untuk memperbarui konfigurasi transfer.
Masukkan perintah bq update
dan berikan flag transfer
--transfer_config
. Flag berikut juga diperlukan:
--update_credentials
Flag opsional:
--service_account_name
digunakan untuk mengautentikasi kueri terjadwal dengan akun layanan, bukan akun pengguna perorangan Anda.
Misalnya, perintah berikut memperbarui konfigurasi transfer kueri terjadwal untuk melakukan autentikasi sebagai akun layanan:
bq update \
--update_credentials \
--service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menyiapkan proses manual pada tanggal histori
Selain menjadwalkan kueri untuk dijalankan di masa mendatang, Anda juga dapat memicu eksekusi langsung secara manual. Memicu run langsung akan diperlukan jika
kueri Anda menggunakan parameter run_date
, dan terdapat masalah selama eksekusi sebelumnya.
Misalnya, setiap hari pada pukul 09.00 Anda mengkueri tabel sumber untuk baris yang cocok
dengan tanggal saat ini. Namun, Anda mendapati bahwa data tidak ditambahkan ke tabel sumber
selama tiga hari terakhir. Dalam situasi ini, Anda dapat menetapkan kueri untuk dijalankan pada
data historis dalam rentang tanggal yang Anda tentukan. Kueri Anda berjalan menggunakan kombinasi parameter run_date
dan run_time
yang sesuai dengan tanggal yang Anda konfigurasikan dalam kueri terjadwal.
Setelah menyiapkan kueri terjadwal, berikut cara menjalankan kueri menggunakan rentang tanggal historis:
Konsol
Setelah mengklik Schedule untuk menyimpan kueri terjadwal, Anda dapat mengklik tombol Scheduled queries untuk melihat daftar kueri yang saat ini dijadwalkan. Klik nama tampilan untuk melihat detail jadwal kueri. Di kanan atas halaman, klik Schedule backfill untuk menentukan rentang tanggal historis.
Runtime yang dipilih semuanya berada dalam rentang yang Anda pilih, termasuk tanggal pertama dan mengecualikan tanggal terakhir.
Contoh 1
Kueri terjadwal Anda disetel untuk menjalankan every day 09:00
Waktu Pasifik. Anda tidak memiliki data dari 1, 2, dan 3 Januari. Pilih rentang tanggal historis berikut:
Start Time = 1/1/19
End Time = 1/4/19
Kueri Anda berjalan menggunakan parameter run_date
dan run_time
yang sesuai dengan waktu berikut:
- 1/1/19 09:00 Waktu Pasifik
- 1/2/19 09:00 Waktu Pasifik
- 3/1/19 09:00 Waktu Pasifik
Contoh 2
Kueri terjadwal Anda disetel untuk menjalankan every day 23:00
Waktu Pasifik. Anda tidak memiliki data dari 1, 2, dan 3 Januari. Pilih rentang tanggal historis berikut (tanggal lebih baru dipilih karena UTC memiliki tanggal yang berbeda pada pukul 23.00 Waktu Pasifik):
Start Time = 1/2/19
End Time = 1/5/19
Kueri Anda berjalan menggunakan parameter run_date
dan run_time
yang sesuai dengan waktu berikut:
- 2/1/19 06.00 UTC, atau 1/1/2019 23.00 Waktu Pasifik
- 3/1/19 06.00 UTC, atau 2/1/2019 23.00 Waktu Pasifik
- 4/1/19 06.00 UTC, atau 3/1/2019 23.00 Waktu Pasifik
Setelah menyiapkan operasi manual, muat ulang halaman untuk melihatnya dalam daftar run.
bq
Untuk menjalankan kueri secara manual pada rentang tanggal historis:
Masukkan perintah bq mk
dan berikan flag operasi transfer --transfer_run
. Flag berikut juga diperlukan:
--start_time
--end_time
bq mk \ --transfer_run \ --start_time='start_time' \ --end_time='end_time' \ resource_name
Ganti kode berikut:
start_time
danend_time
. Stempel waktu yang berakhiran Z atau berisi offset zona waktu yang valid. Contoh:- 2017-08-19T12:11:35.00Z
- 2017-05-25T00:00:00+00:00
resource_name
. Nama Resource (atau transfer) kueri terjadwal. Nama Resource juga dikenal sebagai konfigurasi transfer.
Misalnya, perintah berikut menjadwalkan pengisian ulang untuk resource kueri terjadwal (atau konfigurasi transfer): projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
.
bq mk \
--transfer_run \
--start_time 2017-05-25T00:00:00Z \
--end_time 2017-05-25T00:00:00Z \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
Untuk informasi selengkapnya, lihat bq mk --transfer_run
.
API
Gunakan metode projects.locations.transferConfigs.scheduleRun dan berikan jalur resource TransferConfig.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Hapus kueri terjadwal
Konsol
Untuk menghapus kueri terjadwal melalui konsol:
Di panel navigasi, klik Scheduled queries.
Dalam daftar kueri terjadwal, klik nama kueri terjadwal yang ingin dihapus.
Di halaman Detail kueri terjadwal yang terbuka, klik Hapus.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk BigQuery, lihat library klien BigQuery. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python BigQuery.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Kuota
Kueri terjadwal dijalankan dengan kredensial dan project pembuat, seolah-olah Anda mengeksekusi kueri sendiri. Kueri terjadwal selalu dijalankan sebagai tugas kueri batch.
Meskipun kueri terjadwal menggunakan fitur BigQuery Data Transfer Service, kueri tersebut bukan transfer dan tidak tunduk pada kuota tugas pemuatan. Kueri terjadwal tunduk pada kuota dan batas BigQuery yang sama seperti kueri manual.
Harga
Harga kueri terjadwal sama dengan kueri BigQuery manual.
Region yang didukung
Kueri terjadwal didukung di lokasi berikut.
Region
Tabel berikut mencantumkan region di Amerika tempat BigQuery tersedia.Deskripsi region | Nama region | Detail |
---|---|---|
Columbus, Ohio | us-east5 |
|
Dallas | us-south1 |
|
Iowa | us-central1 |
CO2 Rendah |
Las Vegas | us-west4 |
|
Los Angeles | us-west2 |
|
Montréal | northamerica-northeast1 |
CO2 Rendah |
Northern Virginia | us-east4 |
|
Oregon | us-west1 |
CO2 Rendah |
Salt Lake City | us-west3 |
|
Sao Paulo | southamerica-east1 |
CO Rendah2 |
Santiago | southamerica-west1 |
CO Rendah2 |
South Carolina | us-east1 |
|
Toronto | northamerica-northeast2 |
CO2 Rendah |
Deskripsi region | Nama region | Detail |
---|---|---|
Delhi | asia-south2 |
|
Hong Kong | asia-east2 |
|
Jakarta | asia-southeast2 |
|
Melbourne | australia-southeast2 |
|
Mumbai | asia-south1 |
|
Osaka | asia-northeast2 |
|
Seoul | asia-northeast3 |
|
Singapura | asia-southeast1 |
|
Sydney | australia-southeast1 |
|
Taiwan | asia-east1 |
|
Tokyo | asia-northeast1 |
Deskripsi region | Nama region | Detail |
---|---|---|
Belgia | europe-west1 |
CO Rendah2 |
Berlin | europe-west10 |
|
Finlandia | europe-north1 |
CO Rendah2 |
Frankfurt | europe-west3 |
CO Rendah2 |
London | europe-west2 |
CO Rendah2 |
Madrid | europe-southwest1 |
|
Milan | europe-west8 |
|
Belanda | europe-west4 |
|
Paris | europe-west9 |
CO2 Rendah |
Turin | europe-west12 |
|
Warsawa | europe-central2 |
|
Zürich | europe-west6 |
CO2 Rendah |
Deskripsi region | Nama region | Detail |
---|---|---|
Dammam | me-central2 |
|
Doha | me-central1 |
|
Tel Aviv | me-west1 |
Deskripsi region | Nama region | Detail |
---|---|---|
Johannesburg | africa-south1 |
Multi-region
Tabel berikut mencantumkan multi-region tempat BigQuery tersedia.Deskripsi multi-region | Nama multi-region |
---|---|
Pusat data di negara anggota Uni Eropa1 | EU |
Pusat data di Amerika Serikat | US |
1 Data yang berada di multi-region EU
hanya disimpan
di pusat data europe-west1
(Belgia) atau europe-west4
(Belanda).
Apa langkah selanjutnya?
- Untuk contoh kueri terjadwal yang menggunakan akun layanan dan menyertakan parameter
@run_date
dan@run_time
, lihat Membuat snapshot tabel dengan kueri terjadwal.