Mengkueri dan menganalisis data Bigtable dengan BigQuery
BigQuery adalah data warehouse terkelola yang dapat membantu Anda membuat kueri dan menganalisis data Bigtable menggunakan kueri SQL. BigQuery berguna bagi analis data, data engineer, ilmuwan data, atau siapa saja yang ingin menggunakan data Bigtable untuk menjawab pertanyaan bisnis.
BigQuery memungkinkan Anda membuat kueri data Bigtable dari BigQuery. Fitur ini berguna ketika Anda ingin menggabungkan data Bigtable ke tabel BigQuery.
Dokumen ini memberikan ringkasan tentang pembuatan kueri data Bigtable dengan BigQuery. Sebelum membaca halaman ini, Anda harus sudah memahami Ringkasan BigQuery dan ringkasan BigQuery
Penggunaan BigQuery untuk mengkueri tabel Bigtable sangat ideal untuk tabel yang memiliki grup kolom dan penentu kolom yang sama di setiap baris.
Pembuatan tabel eksternal
Sebelum dapat membuat kueri data Bigtable, Anda — atau administrator di organisasi Anda — harus membuat tabel eksternal, yang merupakan tabel BigQuery yang berisi pointer metadata ke tabel Bigtable yang Anda jadikan tujuan pengiriman kueri. Untuk informasi selengkapnya tentang tabel eksternal, lihat Pengantar sumber data eksternal.
Anda harus membuat tabel eksternal di region yang sama dengan tabel Bigtable. Ini berarti, misalnya, jika tabel berada dalam instance yang memiliki cluster di europe-central2-a
(Warsawa), europe-west1-c
(Belgia), dan asia-east1-a
(Tokyo), maka Anda harus membuat tabel eksternal di Warsawa, Belgia, atau Tokyo.
Untuk sebagian besar kasus, saat membuat tabel eksternal, tetapkan readRowkeyAsString
dan
ignoreUnspecifiedColumnFamilies
ke true.
Jika ignoreUnspecifiedColumnFamilies
bernilai benar, saat Anda membuat definisi tabel yang hanya menyertakan beberapa kolom dalam grup kolom, hanya kolom yang dipilih yang akan dipromosikan sebagai kolom dalam tabel eksternal. Data di kolom yang tidak dipilih
dikelompokkan dalam kolom column
umum.
Untuk membuat tabel eksternal, ikuti petunjuk pada artikel Membuat tabel eksternal Bigtable.
Data kueri di tabel eksternal
Setelah memiliki tabel eksternal untuk tabel Bigtable, Anda dapat mengirim kueri SQL ke tabel tersebut menggunakan salah satu metode berikut:
- Di command line menggunakan
bq
, BigQuery CLI - Panggilan ke BigQuery API
- Salah satu library klien BigQuery
Untuk mempelajari cara menulis dan menjalankan kueri, lihat Menjalankan kueri. Untuk petunjuk khusus Bigtable, termasuk izin dan contoh kode yang diperlukan, lihat Membuat kueri data Bigtable.
Kueri terjadwal
Kueri terjadwal berguna jika Anda ingin mengimpor data Bigtable ke BigQuery secara berulang. Alat ini juga berguna untuk kasus penggunaan yang mungkin mengharuskan Anda membangun pipeline data dan mengalirkan data ke BigQuery. Untuk mendapatkan petunjuk tentang cara mengelola kueri terjadwal, lihat Menjadwalkan kueri.
Hindari pemindaian tabel penuh
Mirip dengan saat Anda mengirim permintaan baca langsung ke tabel Bigtable, saat membuat kueri tabel eksternal untuk tabel tersebut, umumnya Anda ingin menghindari pemindaian tabel penuh. Pemindaian tabel penuh meningkatkan penggunaan CPU dan memerlukan waktu yang jauh lebih lama daripada kueri selektif. {i>Wireframe<i} ini juga membutuhkan lebih banyak throughput BigQuery.
Jika kueri Anda melibatkan semua baris, kueri ini akan memicu pemindaian tabel penuh. Di sisi lain, jika Anda membatasi kueri dan meminta rentang baris atau baris yang tidak berdekatan yang ditentukan, seluruh tabel tidak akan dipindai. Contoh dalam sintaksis GoogleSQL untuk membatasi kueri mencakup hal berikut:
WHERE rowkey = "abc123"
WHERE rowkey BETWEEN "abc123" PRECEDING AND "abc999" FOLLOWING
WHERE rowkey > 999999
(jika Anda membaca kunci baris sebagai string)
Gabungan
Jika Anda berencana menggunakan join untuk menganalisis data tabel Bigtable bersama dengan data dari sumber lain, Anda harus membuat subkueri yang mengekstrak kolom relevan dari Bigtable untuk join yang direncanakan. Untuk praktik terbaik lainnya saat menggabungkan tabel, lihat Mengoptimalkan komputasi kueri.
Biaya
Saat membuat tabel eksternal dan melakukan kuerinya, Anda dikenai biaya untuk biaya BigQuery dan peningkatan jumlah node Bigtable yang diperlukan untuk menangani traffic. Karena tabel eksternal berada di region yang sama dengan tabel Bigtable, tidak ada biaya jaringan yang dikeluarkan.
Jika Anda cenderung menjalankan kueri selama jam kerja reguler, pertimbangkan untuk mengaktifkan penskalaan otomatis Bigtable sehingga jumlah node meningkat saat diperlukan, lalu menurun saat tugas selesai. Penskalaan otomatis juga merupakan taktik yang efektif jika Anda menjalankan kueri terjadwal yang tidak memiliki batas waktu yang pasti.
Cara lain untuk membatasi biaya adalah menghindari pemindaian tabel penuh.
Untuk informasi lebih lanjut tentang pengoptimalan biaya untuk BigQuery, lihat Memperkirakan dan mengontrol biaya.
Batasan
Batasan berikut berlaku:
- Anda tidak dapat menggunakan BigQuery untuk melakukan kueri data Bigtable yang disimpan dalam format JSON.
- Hasil kueri yang berisi data serial dan memiliki jenis bertingkat, seperti buffering protokol (protobuf) dan format Avro, mungkin tidak dirender dengan benar atau sulit dibaca di Konsol Google Cloud.
Langkah selanjutnya
- Pelajari perbedaan antara tabel eksternal dan kueri gabungan.
- Buat tabel eksternal Bigtable.
- Buat kueri data Bigtable yang disimpan di tabel eksternal.
- Ekspor data dari BigQuery ke Bigtable.