Pengantar BI Engine
BigQuery BI Engine adalah layanan analisis dalam memori yang cepat dan mempercepat banyak kueri SQL di BigQuery dengan meng-cache data yang paling sering Anda gunakan secara cerdas. BI Engine dapat mempercepat kueri SQL dari sumber apa pun, termasuk yang ditulis oleh alat visualisasi data, dan dapat mengelola tabel yang di-cache untuk pengoptimalan berkelanjutan. Hal ini memungkinkan Anda meningkatkan performa kueri tanpa penyesuaian manual atau pemindahan data ke tingkat lain. Anda dapat mengelompokkan dan mempartisi tabel untuk lebih mengoptimalkan performa BI Engine untuk tabel besar.
Misalnya, jika dasbor Anda hanya menampilkan data kuartal terakhir, Anda dapat mempartisi tabel menurut waktu sehingga hanya partisi terbaru yang dimuat ke dalam memori. Anda juga dapat menggabungkan manfaat tabel virtual terwujud dan BI Engine. Hal ini berfungsi sangat baik ketika tabel virtual terwujud digunakan untuk menggabungkan dan meratakan data guna mengoptimalkan strukturnya untuk BI Engine.
BI Engine memberikan keuntungan berikut:
- Kompatibilitas BigQuery API: BI Engine terintegrasi langsung dengan BigQuery API. Semua solusi BI atau aplikasi kustom yang berfungsi dengan BigQuery API melalui mekanisme standar, seperti REST atau driver JDBC dan ODBC, dapat menggunakan BI Engine tanpa modifikasi.
- Runtime vektor: Penggunaan pemrosesan vektor pada mesin eksekusi akan memanfaatkan arsitektur CPU modern secara lebih efisien, dengan beroperasi pada batch data dalam satu waktu. BI Engine juga menggunakan encoding data lanjutan, khususnya encoding run-length kamus, untuk mengompresi lebih lanjut data yang tersimpan di lapisan dalam memori.
- Integrasi yang lancar: BI Engine berfungsi dengan fitur dan metadata BigQuery, termasuk tampilan resmi, keamanan tingkat kolom, dan penyamaran data.
- Alokasi reservasi: Pemesanan BI Engine secara terpisah mengelola alokasi memori untuk setiap project dan region. BI Engine hanya meng-cache bagian kolom dan partisi yang diperlukan dan dikueri. Anda dapat menentukan tabel mana yang menggunakan akselerasi BI Engine dengan tabel pilihan.
Di sebagian besar organisasi, BI Engine diaktifkan oleh administrator penagihan yang harus memesan kapasitas untuk akselerasi BI Engine. Untuk mempelajari lebih lanjut, lihat Mencadangkan kapasitas BI Engine.
Kasus penggunaan BI Engine
BI Engine dapat secara signifikan mempercepat banyak kueri SQL, termasuk yang digunakan untuk dasbor BI. Percepatan paling efektif jika Anda mengidentifikasi tabel yang penting untuk kueri Anda, lalu menandainya sebagai tabel pilihan. Untuk menggunakan BI Engine, Anda membuat reservasi di region dan menentukan ukurannya. Anda dapat mengizinkan BigQuery menentukan tabel mana yang akan di-cache berdasarkan pola penggunaan project atau Anda dapat menentukan tabel untuk mencegah traffic lain mengganggu percepatannya.
BI Engine berguna dalam kasus penggunaan berikut:
- Anda menggunakan alat BI untuk menganalisis data: BI Engine mempercepat kueri BigQuery, baik yang berjalan di konsol BigQuery, alat BI seperti Looker Studio atau Tableau, atau library klien, API, atau konektor ODBC atau JDBC. Hal ini dapat meningkatkan performa dasbor yang terhubung ke BigQuery secara signifikan melalui koneksi bawaan (API) atau konektor.
- Anda sering membuat kueri tabel: BI Engine memungkinkan Anda menentukan tabel pilihan untuk dipercepat. Hal ini berguna jika Anda memiliki subset tabel yang lebih sering dikueri atau digunakan untuk dasbor dengan visibilitas tinggi.
BI Engine mungkin tidak sesuai dengan kebutuhan Anda dalam kasus berikut:
- Anda menggunakan karakter pengganti di kueri: Kueri yang merujuk pada tabel karakter pengganti tidak didukung oleh BI Engine dan tidak mendapatkan manfaat dari percepatan.
- Anda memerlukan fitur BigQuery yang tidak didukung oleh BI Engine: Meskipun BI Engine mendukung sebagian besar fungsi dan operator SQL, fitur yang tidak didukung BI Engine mencakup tabel eksternal, keamanan tingkat baris, dan fungsi yang ditentukan pengguna non-SQL.
Pertimbangan untuk BI Engine
Pertimbangkan hal berikut saat memutuskan cara mengonfigurasi BI Engine:
Memastikan percepatan untuk kueri tertentu
Untuk memastikan kumpulan kueri dipercepat, buat project terpisah dengan pemesanan BI Engine khusus. Pertama, perkirakan kapasitas komputasi yang diperlukan untuk kueri Anda, lalu tentukan tabel tersebut sebagai tabel pilihan untuk BI Engine.
Meminimalkan penggabungan
BI Engine berfungsi optimal untuk data yang digabungkan sebelumnya atau pra-agregat, dan untuk kueri dengan sedikit penggabungan. Hal ini terutama terjadi jika satu sisi gabungan data berukuran besar dan sisi lainnya jauh lebih kecil, seperti saat Anda membuat kueri tabel fakta besar yang digabungkan dengan tabel dimensi yang lebih kecil. Anda dapat menggabungkan BI Engine dengan tampilan terwujud, yang melakukan penggabungan untuk menghasilkan satu tabel datar besar. Dengan cara ini, penggabungan yang sama tidak dilakukan untuk setiap kueri. Tampilan terwujud yang sudah tidak berlaku direkomendasikan untuk performa kueri yang optimal.
Memahami dampak BI Engine
Untuk memahami penggunaan BI Engine Anda, lihat Memantau BI Engine dengan Cloud Monitoring, atau buat kueri tampilan INFORMATION_SCHEMA.BI_CAPACITIES
dan INFORMATION_SCHEMA.BI_CAPACITY_CHANGES
. Pastikan untuk menonaktifkan opsi Use cached results di BigQuery untuk mendapatkan perbandingan yang paling akurat. Untuk mengetahui informasi selengkapnya, lihat Menggunakan hasil kueri yang di-cache.
Tabel pilihan
Tabel pilihan BI Engine memungkinkan Anda membatasi akselerasi BI Engine ke kumpulan tabel tertentu. Kueri ke semua tabel lainnya menggunakan slot BigQuery reguler. Misalnya, dengan tabel pilihan, Anda hanya dapat mempercepat tabel dan dasbor yang Anda anggap penting bagi bisnis Anda.
Jika tidak ada cukup RAM dalam project untuk menampung semua tabel pilihan, BI Engine akan mengurangi beban partisi dan kolom yang belum diakses baru-baru ini. Proses ini mengosongkan memori untuk kueri baru yang memerlukan akselerasi.
Batasan tabel pilihan
Tabel pilihan BI Engine memiliki batasan-batasan sebagai berikut:
- Anda tidak dapat menambahkan tampilan ke daftar pemesanan tabel pilihan. Tabel pilihan BI Engine hanya mendukung tabel.
- Kueri ke tampilan terwujud hanya akan diakselerasi jika tampilan terwujud dan tabel dasarnya ada dalam daftar tabel pilihan.
- Menentukan partisi atau kolom untuk akselerasi tidak didukung.
- Kolom jenis
JSON
tidak didukung dan tidak diakselerasi oleh BI Engine. - Kueri yang mengakses beberapa tabel hanya akan diakselerasi jika semua tabel adalah
tabel pilihan. Misalnya, semua tabel dalam kueri dengan
JOIN
harus berada dalam daftar tabel pilihan agar dapat diakselerasi. Jika ada satu tabel yang tidak ada dalam daftar pilihan, kueri tersebut tidak dapat menggunakan BI Engine. - Set data publik tidak didukung di Konsol Google Cloud. Untuk menambahkan tabel publik sebagai tabel pilihan, gunakan API atau DDL.
Batasan
BigQuery BI Engine memiliki batasan berikut.
Gabungan
BI Engine mempercepat jenis kueri join tertentu. Akselerasi
terjadi pada subkueri level leaf dengan INNER
dan LEFT OUTER JOINS
,
dengan tabel fakta besar yang digabungkan dengan maksimal empat tabel "dimensi" yang lebih kecil.
Tabel dimensi kecil memiliki batasan berikut:
- Kurang dari 5 juta baris
- Batas ukuran:
- Tabel yang tidak dipartisi: 5 GiB atau kurang
- Tabel berpartisi: Partisi yang direferensikan berukuran 1 GB atau kurang
Fungsi jendela
Fungsi jendela, juga dikenal sebagai fungsi analisis, memiliki batasan berikut saat dipercepat oleh BigQuery BI Engine:
- Tahap input dipercepat oleh BigQuery BI Engine jika tidak memiliki
fungsi jendela. Dalam hal ini, tampilan
INFORMATION_SCHEMA.JOBS
melaporkanbi_engine_statistics
.acceleration_mode
sebagaiFULL_INPUT
. - Tahap input kueri dengan fungsi jendela di tahap inputnya
dipercepat oleh BI Engine, tetapi tidak memiliki batasan
yang dijelaskan dalam Batasan fungsi Jendela BI Engine.
Dalam hal ini, tahap input atau kueri lengkap akan dijalankan di
BI Engine. Dalam hal ini, tampilan
INFORMATION_SCHEMA.JOBS
melaporkanbi_engine_statistics
.acceleration_mode
sebagaiFULL_INPUT
atauFULL_QUERY
.
Untuk mengetahui informasi selengkapnya tentang kolom BiEngineStatistics
, lihat
Referensi tugas.
Batasan fungsi jendela BI Engine
Kueri dengan fungsi jendela hanya berjalan di BI Engine jika semua kondisi berikut benar:
- Kueri memindai tepat satu tabel.
- Tabel tidak dipartisi.
- Tabel ini memiliki kurang dari 5 juta baris.
- Kueri tidak memiliki operator
JOIN
. - Ukuran tabel yang dipindai dikalikan dengan jumlah operator fungsi jendela tidak melebihi 300 MiB.
Dua fungsi jendela dengan klausa OVER
yang identik dan input langsung yang sama dapat memiliki operator fungsi jendela yang sama. Contoh:
SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_table
hanya memiliki satu operator fungsi jendela.SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_table
memiliki dua operator fungsi jendela karena kedua fungsi tersebut memiliki klausaOVER
yang berbeda.SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table)
memiliki dua operator fungsi jendela karena kedua fungsi memiliki input langsung yang berbeda meskipun klausaOVER
-nya terlihat sama.
Fungsi jendela yang didukung
Fungsi jendela yang direferensikan berikut didukung:
ANY_VALUE
AVG
BIT_AND
BIT_OR
BIT_XOR
CORR
COUNT
COUNTIF
COVAR_POP
COVAR_SAMP
CUME_DIST
DENSE_RANK
FIRST_VALUE
LAG
LAST_VALUE
LEAD
LOGICAL_AND
LOGICAL_OR
MAX
MIN
NTH_VALUE
NTILE
PERCENT_RANK
PERCENTILE_CONT
PERCENTILE_DISC
RANK
ROW_NUMBER
ST_CLUSTERDBSCAN
STDDEV_POP
STDDEV_SAMP
STDDEV
STRING_AGG
SUM
VAR_POP
VAR_SAMP
VARIANCE
Jika fungsi jendela tidak didukung, Anda mungkin melihat error berikut:
Fungsi analisis tidak kompatibel dengan operator lain atau inputnya terlalu besar
Batasan BI Engine lainnya
Akselerasi BI Engine tidak tersedia untuk fitur berikut:
- UDF JavaScript
- Tabel eksternal
- Membuat kueri data JSON - Pesan error: Jenis native JSON tidak didukung
- Menulis hasil pada tabel BigQuery permanen
- Tabel yang berisi upsert yang menggunakan BigQuery change data capture
- Transaksi
- Kueri yang menampilkan lebih dari 1 GiB data. Untuk aplikasi yang sensitif terhadap latensi, sebaiknya gunakan ukuran respons kurang dari 1 MiB.
- Keamanan tingkat baris
Solusi untuk fitur yang tidak didukung
Meskipun beberapa fitur SQL tidak didukung di BigQuery BI Engine, ada solusi yang tersedia:
- Menulis kueri di BigQuery.
- Simpan hasil kueri ke tabel.
- Jadwalkan kueri Anda untuk memperbarui tabel secara rutin. Kecepatan refresh per jam atau hari adalah cara yang paling efektif. Memperbarui setiap menit mungkin terlalu sering membatalkan cache.
- Referensikan tabel ini dalam kueri Anda yang mementingkan performa.
Kuota dan batas
Lihat kuota dan batas BigQuery guna mengetahui kuota dan batas yang berlaku untuk BI Engine.
Harga
Anda dikenai biaya untuk reservasi yang dibuat untuk kapasitas BI Engine. Untuk mengetahui informasi tentang harga BI Engine, lihat halaman Harga BigQuery.
Langkah berikutnya
- Untuk mempelajari cara membuat pemesanan BI Engine, lihat Melakukan pemesanan kapasitas BI Engine.
- Untuk mengetahui informasi tentang cara menentukan tabel pilihan, lihat Tabel pilihan BI Engine.
- Untuk memahami pemanfaatan BI Engine Anda, lihat Memantau BI Engine dengan Cloud Monitoring.
- Pelajari Fungsi BI Engine yang dioptimalkan.
- Pelajari cara menggunakan BI Engine dengan hal-hal berikut ini: