Pengantar kueri berkelanjutan
Dokumen ini menjelaskan kueri berkelanjutan BigQuery.
Kueri berkelanjutan BigQuery adalah pernyataan SQL yang berjalan secara berkelanjutan. Kueri berkelanjutan memungkinkan Anda menganalisis data yang masuk di BigQuery secara real time. Anda dapat menulis atau mengekspor baris output yang dihasilkan oleh kueri berkelanjutan ke tujuan berikut:
- Tabel BigQuery
- Tabel terkelola Apache Iceberg
- Topik Pub/Sub
- Tabel Bigtable
- Tabel Spanner
Kueri berkelanjutan dapat memproses data yang telah ditulis ke tabel BigQuery standar dengan menggunakan salah satu metode berikut:
- BigQuery Storage Write API (gRPC)
- BigQuery Storage Write API (REST)
- Pemuatan batch
- Pernyataan DML
INSERT - Mengubah pernyataan bahasa pengolahan data (DML) seperti
DELETE,UPDATE, danMERGEsaat mengekspor data ke Pub/Sub. - Menulis dari hasil kueri batch ke tabel permanen
- Menulis dari hasil kueri berkelanjutan BigQuery ke tabel permanen
- Langganan BigQuery Pub/Sub
- Penulisan dari Dataflow ke BigQuery
- Menulis dari Datastream ke BigQuery menggunakan mode penulisan hanya tambahkan
Anda dapat menggunakan kueri berkelanjutan untuk melakukan tugas mendesak, seperti membuat dan langsung menindaklanjuti insight, menerapkan inferensi machine learning (ML) real-time, dan mereplikasi data ke platform lain. Hal ini memungkinkan Anda menggunakan BigQuery sebagai mesin pemrosesan data berbasis peristiwa untuk logika keputusan aplikasi Anda.
Diagram berikut menunjukkan alur kerja kueri berkelanjutan umum:
Kasus penggunaan
Kasus penggunaan umum saat Anda mungkin ingin menggunakan kueri berkelanjutan adalah sebagai berikut:
- Layanan interaksi pelanggan yang dipersonalisasi: gunakan AI generatif untuk membuat pesan yang disesuaikan untuk setiap interaksi pelanggan.
- Deteksi anomali: bangun solusi yang memungkinkan Anda melakukan deteksi anomali dan ancaman pada data kompleks secara real time, sehingga Anda dapat bereaksi terhadap masalah dengan lebih cepat.
- Pipeline berbasis peristiwa yang dapat disesuaikan: menggunakan integrasi kueri berkelanjutan dengan Pub/Sub untuk memicu aplikasi hilir berdasarkan data yang masuk.
- Pengayaan data dan ekstraksi entitas: gunakan kueri berkelanjutan untuk melakukan pengayaan dan transformasi data real-time menggunakan fungsi SQL dan model ML.
- Reverse extract-transform-load (ETL): melakukan reverse ETL real-time ke sistem penyimpanan lain yang lebih cocok untuk penyaluran aplikasi latensi rendah. Misalnya, menganalisis atau meningkatkan kualitas data peristiwa yang ditulis ke BigQuery, lalu melakukan streaming ke tabel yang dikelola Bigtable, Spanner, atau Apache Iceberg untuk penayangan aplikasi.
- Pemicuan agen otonom: memicu pipeline data agentic secara real-time berdasarkan peristiwa kompleks yang terdeteksi dalam aliran data langsung. Sebagai contoh, lihat codelab Membangun Agen Data Berbasis Peristiwa dengan BigQuery dan Agent Development Kit (ADK).
- Pemantauan agen otonom: kembangkan pemantauan dan pemberitahuan otomatis real-time untuk interaksi agentic real-time menggunakan plugin analisis agen BigQuery, yang melakukan streaming semua data rekaman aktivitas agen, penggunaan alat, dan log operasional langsung ke BigQuery untuk kemampuan observasi mendalam terhadap tenaga kerja AI Anda.
Fungsi yang didukung
Operasi berikut didukung dalam kueri berkelanjutan:
- Menjalankan pernyataan
INSERTuntuk menulis data dari kueri berkelanjutan ke dalam tabel BigQuery atau tabel yang dikelola Iceberg. Menjalankan pernyataan
EXPORT DATAuntuk memublikasikan output kueri berkelanjutan ke topik Pub/Sub.Kueri berkelanjutan yang mengekspor data ke Pub/Sub harus dijalankan dengan menggunakan akun layanan. Untuk mengetahui informasi selengkapnya, lihat Mengekspor data ke Pub/Sub.
Dari topik Pub/Sub, Anda dapat menggunakan data dengan layanan lain, seperti melakukan analisis streaming menggunakan Dataflow, atau menggunakan data dalam alur kerja integrasi aplikasi.
Menjalankan pernyataan
EXPORT DATAuntuk mengekspor data dari BigQuery ke tabel Bigtable. Untuk mengetahui informasi selengkapnya, lihat Mengekspor data ke Bigtable.Menjalankan pernyataan
EXPORT DATAuntuk mengekspor data dari BigQuery ke tabel Spanner. Untuk mengetahui informasi selengkapnya, lihat Mengekspor data ke Spanner (reverse ETL).Memanggil fungsi AI generatif berikut:
AI.GENERATE-
- Fungsi ini mengharuskan Anda memiliki model jarak jauh BigQuery ML di atas model Gemini Enterprise Agent Platform.
Memanggil fungsi AI berikut:
Fungsi ini mengharuskan Anda memiliki model jarak jauh BigQuery ML melalui Cloud AI API.
Menormalisasi data numerik menggunakan fungsi
ML.NORMALIZER.Menganalisis dan memproses data
JSON, termasuk dukungan untuk fungsi JSON dan pembukaan JSON.Menggunakan fungsi GoogleSQL stateless—misalnya, fungsi konversi. Dalam fungsi stateless, setiap baris diproses secara terpisah dari baris lain dalam tabel.
Menggunakan operasi stateful—misalnya
JOIN, agregasi, dan agregasi jendela. Dalam operasi stateful, status data yang di-ingest dipertahankan di beberapa baris atau interval waktu untuk menghitung hasil yang akurat.Menggunakan fungsi histori perubahan
APPENDSuntuk memproses data yang ditambahkan dari titik waktu tertentu.Menggunakan fungsi histori perubahan
CHANGESuntuk memproses data yang berubah, termasuk penambahan dan perubahan, dari titik waktu tertentu saat mengekspor data ke Pub/Sub. Namun,CHANGEStidak didukung saat menggunakan operasi stateful.Membuat kueri tabel virtual, selama kueri SQL pokok tabel virtual adalah kueri berkelanjutan yang valid.
Operasi stateful yang didukung
Untuk meminta dukungan atau memberikan masukan terkait fitur ini, kirim email ke bq-continuous-queries-feedback@google.com.
Operasi stateful memungkinkan kueri berkelanjutan melakukan analisis kompleks yang memerlukan penyimpanan informasi di beberapa baris atau interval waktu. Meskipun
fungsi stateless memproses setiap baris secara independen, operasi stateful mempertahankan
status data yang di-ingest untuk mendukung fungsi seperti JOIN, agregasi, dan
agregasi jendela. Kemampuan ini memungkinkan Anda mengorelasikan peristiwa dari aliran yang berbeda atau menghitung metrik dari waktu ke waktu—seperti rata-rata 30 menit—dengan menyimpan data yang diperlukan dalam memori saat kueri berjalan.
Kueri berkelanjutan mendukung operasi stateful berikut:
Otorisasi
Google Cloud Token akses yang digunakan saat menjalankan tugas kueri berkelanjutan memiliki time to live (TTL) selama dua hari jika dibuat oleh akun pengguna. Oleh karena itu, tugas tersebut berhenti berjalan setelah dua hari. Token akses yang dibuat oleh akun layanan dapat berjalan lebih lama, tetapi tetap harus mematuhi runtime kueri maksimum. Untuk mengetahui informasi selengkapnya, lihat Menjalankan kueri berkelanjutan menggunakan akun layanan.
Lokasi
Untuk mengetahui daftar wilayah yang didukung, lihat Lokasi kueri berkelanjutan BigQuery.
Batasan
Kueri berkelanjutan tunduk pada batasan berikut:
- Status data yang di-ingest hanya dipertahankan untuk operasi stateful
tertentu dalam Pratinjau.
Meskipun kueri berkelanjutan kini mendukung beberapa jenis
JOIN, agregasi, dan agregasi jendela, hal ini dibatasi untuk operasi stateful tertentu. Tidak semua jenis operasi stateful didukung. Anda tidak dapat menggunakan kemampuan SQL berikut dalam kueri berkelanjutan, kecuali jika tercantum sebagai operasi stateful yang didukung:
Operator kueri berikut:
Kumpulan operator set kueri
Pernyataan
SELECT DISTINCTFungsi BigQuery ML selain yang tercantum di Fungsi yang didukung
Pernyataan bahasa pengolahan data (DML) kecuali
INSERT.Pernyataan
EXPORT DATAyang tidak menargetkan Bigtable, Pub/Sub, atau Spanner.
Kueri berkelanjutan tidak mendukung sumber data berikut:
- Tabel eksternal.
- Tampilan skema informasi.
- Tabel terkelola Apache Iceberg. Perhatikan bahwa meskipun tabel yang dikelola Iceberg tidak didukung sebagai sumber data, tabel tersebut didukung sebagai tujuan untuk output kueri berkelanjutan.
- Tabel karakter pengganti.
- Data pengambilan Data Perubahan (CDC) upsert.
- Tampilan terwujud.
- Tampilan tempat kueri SQL pokok menggunakan fitur yang tidak didukung, seperti fungsi yang ditentukan pengguna, tabel eksternal, atau tabel yang diaktifkan untuk CDC.
Kueri berkelanjutan tidak mendukung fitur keamanan column- dan tingkat baris.
Output kueri berkelanjutan tunduk pada kuota dan batas bawaan layanan tujuan tempat output diekspor.
Saat mengekspor data ke Bigtable, Spanner, atau endpoint berbasis lokasi Pub/Sub, Anda hanya dapat menargetkan resource Bigtable, Spanner, atau Pub/Sub yang berada dalam batas regional Google Cloudyang sama dengan set data BigQuery yang berisi tabel yang Anda kueri. Pembatasan ini tidak berlaku saat mengekspor data ke endpoint global Pub/Sub. Untuk mengetahui informasi selengkapnya tentang mengekspor ke kebijakan perutean profil aplikasi Bigtable, lihat Pertimbangan lokasi.
Anda tidak dapat menjalankan kueri berkelanjutan dari kanvas data.
Anda tidak dapat mengubah SQL yang digunakan dalam kueri berkelanjutan saat tugas kueri berkelanjutan sedang berjalan. Untuk mengetahui informasi selengkapnya, lihat Mengubah SQL kueri berkelanjutan.
Jika tugas kueri berkelanjutan tertinggal dalam memproses data masuk dan memiliki keterlambatan tanda air output lebih dari 48 jam, maka tugas tersebut akan gagal. Anda dapat menjalankan kueri lagi dan menggunakan fungsi histori perubahan
APPENDSatauCHANGESuntuk melanjutkan pemrosesan dari titik waktu saat Anda menghentikan tugas kueri berkelanjutan sebelumnya. Untuk mengetahui informasi selengkapnya, lihat Memulai kueri berkelanjutan dari titik waktu tertentu.Kueri berkelanjutan yang dikonfigurasi dengan akun pengguna dapat berjalan hingga dua hari. Kueri berkelanjutan yang dikonfigurasi dengan akun layanan dapat berjalan hingga 150 hari. Saat waktu proses kueri maksimum tercapai, kueri akan gagal dan berhenti memproses data yang masuk.
Meskipun kueri berkelanjutan dibuat menggunakan fitur keandalan BigQuery, masalah sementara sesekali dapat terjadi. Masalah dapat menyebabkan sejumlah pemrosesan ulang otomatis kueri berkelanjutan Anda, yang dapat mengakibatkan data duplikat dalam output kueri berkelanjutan. Desain sistem hilir Anda untuk menangani skenario tersebut.
Batasan reservasi
- Anda harus membuat reservasi edisi Enterprise atau Enterprise Plus dengan
jenis penetapan
CONTINUOUSuntuk menjalankan kueri berkelanjutan. Kueri berkelanjutan tidak mendukung model penagihan komputasi on-demand. - Saat Anda membuat
CONTINUOUSpenetapan pemesanan, pemesanan terkait dibatasi hingga maksimal 500 slot. Anda dapat meminta peningkatan batas ini dengan menghubungi bq-continuous-queries-feedback@google.com. - Anda tidak dapat membuat penetapan pemesanan yang menggunakan jenis tugas yang berbeda dalam pemesanan yang sama dengan penetapan pemesanan kueri berkelanjutan.
BigQuery menentukan jumlah kueri berkelanjutan yang dapat dijalankan secara serentak per project berdasarkan ukuran yang dikonfigurasi dari penetapan reservasi yang menggunakan jenis tugas
CONTINUOUS. Untuk menerima tugas baru, BigQuery memerlukan nilai minimum 10 slot per tugas kueri berkelanjutan. Kueri tidak selalu menggunakan semua 10 slot selama eksekusi normal. Nilai minimum ini memastikan setiap kueri berkelanjutan yang berjalan mempertahankan kapasitas komputasi dasar yang cukup untuk menangani lonjakan volume data masuk yang tiba-tiba tanpa tertinggal atau mengorbankan pemrosesan latensi rendah.Untuk memastikan kueri Anda berhasil diterima tanpa mencapai batas konkurensi, sebaiknya gunakan penskalaan otomatis slot. Dengan penskalaan otomatis, penggunaan slot secara keseluruhan akan diskalakan secara dinamis berdasarkan permintaan resource sebenarnya. Anda dapat mengonfigurasi reservasi dasar pengukuran yang lebih kecil dan menetapkan batas penskalaan otomatis maksimum yang secara nyaman mencakup 10 slot per batas kueri untuk kueri serentak yang diharapkan.
Saat menjalankan beberapa kueri berkelanjutan menggunakan reservasi yang sama, setiap tugas mungkin tidak membagi resource yang tersedia secara adil, sebagaimana ditentukan oleh keadilan BigQuery.
Penskalaan otomatis slot
Kueri berkelanjutan dapat menggunakan penskalaan otomatis slot untuk menskalakan kapasitas yang dialokasikan secara dinamis guna mengakomodasi workload Anda. Saat beban kerja kueri berkelanjutan Anda meningkat atau menurun, BigQuery secara dinamis menyesuaikan slot Anda.
Setelah kueri berkelanjutan mulai berjalan, kueri akan secara aktif memproses data yang masuk, yang menggunakan resource slot. Meskipun reservasi dengan kueri berkelanjutan yang sedang berjalan tidak diperkecil skalanya ke nol slot, kueri berkelanjutan yang tidak ada aktivitas dan terutama memproses data masuk diperkirakan akan menggunakan sejumlah kecil slot, biasanya sekitar 1 slot.
Berbagi slot tidak ada aktivitas
Kueri berkelanjutan dapat menggunakan berbagi slot tidak ada aktivitas untuk berbagi resource slot yang tidak digunakan dengan pemesanan dan jenis tugas lainnya.
- Penetapan pemesanan
CONTINUOUSmasih diperlukan untuk menjalankan kueri berkelanjutan dan tidak dapat hanya mengandalkan slot tidak ada aktivitas dari pemesanan lain. Oleh karena itu, penetapan reservasiCONTINUOUSmemerlukan dasar pengukuran slot bukan nol atau konfigurasi penskalaan otomatis slot bukan nol. - Hanya slot dasar pengukuran yang tidak ada aktivitas atau slot yang di-commit dari penetapan reservasi
CONTINUOUSyang dapat dibagikan. Slot yang diskalakan otomatis tidak dapat dibagikan sebagai slot tidak ada aktivitas untuk reservasi lain.
Harga
Kueri berkelanjutan dapat menggunakan penskalaan lancar BigQuery.
Kueri berkelanjutan menggunakan
harga komputasi kapasitas BigQuery,
yang diukur dalam slot.
Untuk menjalankan kueri berkelanjutan, Anda harus memiliki
pemesanan yang menggunakan
edisi Enterprise atau Enterprise Plus,
dan penugasan pemesanan
yang menggunakan jenis tugas CONTINUOUS.
Penggunaan resource BigQuery lainnya, seperti penyerapan dan penyimpanan data, ditagih sesuai tarif yang ditampilkan di harga BigQuery.
Penggunaan layanan lain yang menerima hasil kueri berkelanjutan atau yang dipanggil selama pemrosesan kueri berkelanjutan akan dikenai biaya sesuai tarif yang dipublikasikan untuk layanan tersebut. Untuk mengetahui harga layanan Google Cloud lain yang digunakan oleh kueri berkelanjutan, lihat topik berikut:
Memperkirakan persyaratan kapasitas slot
Karena setiap workload berbeda, estimasi slot yang tepat untuk kueri berkelanjutan sering kali tidak dapat dilakukan di awal. Jumlah slot yang diperlukan oleh kueri berkelanjutan Anda bergantung pada kombinasi beberapa faktor:
- Jumlah kueri berkelanjutan yang berjalan secara serentak.
- Kompleksitas pernyataan SQL.
- Penggunaan fungsi pemrosesan stateful termasuk durasi jendela,
JOIN, dan agregasi. - Kecepatan atau laju data yang masuk.
- Struktur dan ukuran data yang di-ingest.
Secara konseptual, Anda dapat memperkirakan total persyaratan slot sebagai fungsi dari beban kerja kueri berkelanjutan:
Slot yang Diperkirakan ≈ Jumlah kueri berkelanjutan x ∑ (Kecepatan data x Kompleksitas kueri)
Karena konsumsi slot aktual sangat bergantung pada pola data dan beban kerja unik Anda, metode paling akurat untuk memperkirakan biaya adalah dengan memantau tugas yang sedang berjalan. Anda dapat mengukur penggunaan slot puncak dari operasi kueri berkelanjutan yang terisolasi
menggunakan tampilan INFORMATION_SCHEMA. Untuk petunjuk mendetail dan contoh kueri
guna melacak penggunaan slot dari waktu ke waktu, lihat
Melihat informasi pemakaian slot.
Langkah berikutnya
Coba membuat kueri berkelanjutan.