Membuat kueri 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, engineer data, 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 saat Anda ingin menggabungkan data Bigtable ke tabel BigQuery.
Dokumen ini memberikan ringkasan tentang cara membuat kueri data Bigtable dengan BigQuery. Sebelum membaca halaman ini, Anda harus sudah memahami ringkasan Bigtable dan ringkasan BigQuery
Menggunakan BigQuery untuk membuat kueri tabel Bigtable sangat cocok 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 tempat Anda mengirim kueri. Untuk mengetahui informasi selengkapnya tentang tabel eksternal, lihat Pengantar sumber data eksternal.
Anda harus membuat tabel eksternal di region yang sama dengan
tabel Bigtable. Artinya, misalnya, jika tabel berada di instance yang memiliki cluster di europe-central2-a
(Warsawa), europe-west1-c
(Belgia), dan asia-east1-a
(Tokyo), Anda harus membuat tabel eksternal di Warsawa, Belgia, atau Tokyo.
Untuk sebagian besar kasus, saat Anda 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 dipromosikan sebagai kolom dalam tabel eksternal. Data dalam kolom yang tidak dipilih
dikelompokkan dalam kolom column
umum.
Untuk membuat tabel eksternal, ikuti petunjuk di artikel Membuat tabel eksternal Bigtable.
Membuat kueri data dalam 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
, CLI BigQuery - Panggilan ke BigQuery API
- Salah satu library klien BigQuery
Untuk mempelajari cara membuat dan menjalankan kueri, lihat Menjalankan kueri. Untuk petunjuk khusus Bigtable, termasuk izin yang diperlukan dan contoh kode, lihat Membuat kueri data Bigtable.
Kueri terjadwal
Kueri terjadwal berguna saat Anda ingin mengimpor data Bigtable ke BigQuery secara berulang. Alat ini juga berguna untuk kasus penggunaan yang mungkin mengharuskan Anda membuat pipeline data dan melakukan streaming data ke BigQuery. Untuk petunjuk tentang cara mengelola kueri terjadwal, lihat Menjadwalkan kueri.
Menghindari pemindaian tabel penuh
Serupa dengan saat Anda mengirim permintaan baca langsung ke tabel Bigtable, saat membuat kueri tabel eksternal untuk tabel, Anda umumnya ingin menghindari pemindaian tabel penuh. Pemindaian tabel lengkap meningkatkan penggunaan CPU dan memerlukan waktu yang jauh lebih lama daripada kueri selektif. Fungsi ini juga memerlukan throughput BigQuery yang lebih besar.
Jika kueri Anda melibatkan semua baris, kueri tersebut akan memicu pemindaian tabel penuh. Di sisi lain, jika Anda membatasi kueri dan meminta rentang baris atau baris non-berurutan 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 berencana menggunakan join untuk menganalisis data tabel Bigtable bersama dengan data dari sumber lain, Anda harus membuat subkueri yang mengekstrak kolom yang relevan dari Bigtable untuk join yang direncanakan. Untuk mengetahui praktik terbaik lainnya saat menggabungkan tabel, lihat Mengoptimalkan komputasi kueri.
Biaya
Saat membuat tabel eksternal dan membuat kueri, Anda akan dikenai biaya untuk biaya BigQuery dan peningkatan jumlah node Bigtable yang diperlukan untuk menangani traffic. Karena tabel eksternal Anda berada di region yang sama dengan tabel Bigtable, tidak ada biaya jaringan yang akan dikenakan.
Jika Anda cenderung menjalankan kueri selama jam buka reguler, sebaiknya aktifkan penskalaan otomatis Bigtable agar jumlah node meningkat saat diperlukan, lalu berkurang 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 dengan menghindari pemindaian tabel penuh.
Untuk mengetahui informasi selengkapnya tentang pengoptimalan biaya untuk BigQuery, lihat Memperkirakan dan mengontrol biaya.
Batasan
Batasan berikut berlaku:
- Anda tidak dapat menggunakan BigQuery untuk membuat kueri data Bigtable yang disimpan dalam format JSON.
- Hasil kueri yang berisi data serialisasi yang memiliki jenis bertingkat, seperti buffer protokol (protobuf) dan format Avro, mungkin dirender secara salah 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 dalam tabel eksternal.
- Mengekspor data dari BigQuery ke Bigtable.