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, data engineer, ilmuwan data, atau siapa pun 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 proses membuat kueri data Bigtable dengan BigQuery. Sebelum membaca halaman ini, Anda harus memahami Ringkasan Bigtable dan Ringkasan BigQuery.
Penggunaan BigQuery untuk membuat kueri tabel Bigtable sangat ideal untuk tabel yang memiliki grup kolom dan penentu kolom yang sama di setiap baris.
Pembuatan tabel eksternal
Sebelum Anda dapat membuat kueri data Bigtable, Anda atau administrator di organisasi Anda harus membuat tabel eksternal, yaitu tabel BigQuery yang berisi pointer metadata ke tabel Bigtable yang Anda kirimi 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.
Konfigurasi yang direkomendasikan
Kami merekomendasikan praktik terbaik berikut saat Anda membuat tabel eksternal:
Untuk menghindari dampak pada traffic penayangan aplikasi, gunakan komputasi serverless Data Boost saat Anda membaca data Bigtable dengan tabel eksternal BigQuery. Penggunaan Data Boost sangat hemat biaya untuk kueri ad hoc. Untuk menggunakan Peningkatan Data, tentukan profil aplikasi Peningkatan Data 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
danignoreUnspecifiedColumnFamilies
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 kolomcolumn
umum.
Untuk membuat tabel eksternal, ikuti petunjuk di 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
, BigQuery CLI - Panggilan ke BigQuery API
- Salah satu library klien BigQuery
Untuk mempelajari cara menyusun dan menjalankan kueri, lihat Menjalankan kueri. Untuk mengetahui 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. Fitur ini juga berguna untuk kasus penggunaan yang mungkin mengharuskan Anda membuat pipeline data dan mengalirkan data ke BigQuery. Untuk mengetahui petunjuk tentang cara mengelola kueri terjadwal, lihat Menjadwalkan kueri.
Pemindaian tabel penuh
Jika Anda menggunakan Peningkatan Data untuk membaca data, Anda tidak perlu menghindari pemindaian seluruh tabel. Namun, jika Anda menggunakan node yang disediakan untuk komputasi, Anda harus melakukannya. Mirip dengan saat Anda mengirim permintaan baca langsung ke tabel Bigtable, saat Anda membuat kueri tabel eksternal untuk tabel dan Anda tidak menggunakan Peningkatan Data, sebaiknya hindari pemindaian tabel penuh. Pemindaian tabel penuh meningkatkan pemakaian CPU dan membutuhkan waktu yang jauh lebih lama daripada kueri selektif. Mereka 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 tertentu, maka 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 gabungan untuk menganalisis data tabel Bigtable bersama dengan data dari sumber lain, Anda harus membuat subkueri yang mengekstrak kolom yang relevan dari Bigtable untuk gabungan yang direncanakan. Untuk mengetahui praktik terbaik lainnya saat menggabungkan tabel, lihat Mengoptimalkan komputasi kueri.
Biaya
Saat Anda membuat tabel eksternal dan membuat kueri, Anda akan dikenai 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 dikenakan.
Jika Anda cenderung menjalankan kueri selama jam kerja reguler, pertimbangkan untuk mengaktifkan penskalaan otomatis Bigtable sehingga jumlah node bertambah 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 berserial yang memiliki jenis bertingkat, seperti format buffer protokol (protobuf) dan Avro, mungkin dirender dengan tidak benar atau sulit dibaca di konsol Google Cloud .
Langkah berikutnya
- 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.
- Membangun database analisis real-time dengan Bigtable dan BigQuery