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 admin di organisasi harus membuat tabel eksternal, yaitu tabel BigQuery yang berisi pointer metadata ke tabel Bigtable tempat Anda mengirim kueri. Untuk 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.

Sebaiknya lakukan praktik terbaik berikut saat Anda membuat tabel eksternal:

  • Untuk menghindari dampak pada traffic penayangan aplikasi, gunakan komputasi serverless Data Boost (Pratinjau) saat Anda membaca data Bigtable dengan tabel eksternal BigQuery. Penggunaan Data Boost sangat hemat biaya untuk kueri ad hoc. Untuk menggunakan Data Boost, tentukan profil aplikasi Data Boost saat Anda membuat definisi tabel eksternal. Untuk mengetahui informasi selengkapnya tentang Data Boost, lihat Ringkasan Data Boost Bigtable.

  • 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 akan 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:

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.

Pemindaian tabel lengkap

Jika menggunakan Data Boost untuk membaca data, Anda tidak perlu menghindari pemindaian seluruh tabel. Namun, jika Anda menggunakan node yang disediakan untuk komputasi, Anda harus melakukannya. Serupa dengan saat Anda mengirim permintaan baca langsung ke tabel Bigtable, saat membuat kueri tabel eksternal untuk tabel dan tidak menggunakan Data Boost, Anda umumnya ingin menghindari pemindaian tabel penuh. Pemindaian tabel lengkap akan meningkatkan penggunaan CPU dan memerlukan waktu yang jauh lebih lama daripada kueri selektif. BigQuery juga memerlukan lebih banyak throughput.

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:

  • Hasil kueri yang berisi data serial yang memiliki jenis bertingkat, seperti buffer protokol (protobuf) dan format Avro, mungkin dirender dengan tidak benar atau sulit dibaca di konsol Google Cloud .

Langkah berikutnya