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:

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