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. Dengan penayangan dalam cache ini, Anda dapat meningkatkan performa kueri tanpa penyesuaian manual atau pemindahan data ke tingkat lain. Anda dapat mengelompokkan tabel dan mempartisi tabel untuk lebih mengoptimalkan performa BI Engine untuk tabel besar.
Misalnya, jika dasbor Anda hanya menampilkan data dari kuartal terakhir, Anda dapat mempartisi tabel menurut waktu sehingga hanya partisi terbaru yang dimuat ke dalam memori. Kemudian, Anda dapat menggunakan tabel virtual terwujud untuk menggabungkan dan meratakan data, lalu menandai tabel virtual dan tabel dasar yang dihasilkan sebagai tabel pilihan untuk memastikan bahwa percepatan BI Engine hanya diterapkan pada data yang Anda butuhkan.
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 API atau driver JDBC dan ODBC, dapat menggunakan BI Engine tanpa modifikasi.
- Runtime yang diubah menjadi 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: Reservasi BI Engine mengelola alokasi memori secara terpisah untuk setiap project dan region. BI Engine hanya meng-cache bagian kolom dan partisi yang 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 memesan kapasitas untuk akselerasi BI Engine dengan edisi yang sesuai. Untuk mengetahui informasi selengkapnya, lihat Mencadangkan kapasitas BI Engine.
Arsitektur BI Engine
BI Engine terintegrasi dengan alat BI—seperti Looker, Data Studio, Tableau, dan Power BI—serta aplikasi kustom melalui BigQuery API untuk mempercepat eksplorasi dan analisis data:

Kasus penggunaan BI Engine
BI Engine dapat secara signifikan mempercepat banyak kueri SQL, termasuk kueri yang digunakan untuk dasbor BI. Percepatan paling efektif jika Anda mengidentifikasi tabel yang penting untuk kueri Anda, lalu menetapkannya sebagai tabel pilihan. Untuk menggunakan BI Engine, buat pemesanan di suatu region dan tentukan 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 Data Studio atau Tableau, 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 memiliki tabel yang sering dikueri: BI Engine memungkinkan Anda menetapkan 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 dalam 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 mencakup tabel eksternal, keamanan tingkat baris, dan fungsi non-SQL yang ditentukan pengguna.
Pertimbangan untuk BI Engine
Pertimbangkan hal berikut saat memutuskan cara mengonfigurasi BI Engine:
Memastikan percepatan untuk kueri tertentu
Untuk memastikan sekumpulan kueri dipercepat, buat project terpisah dengan pemesanan BI Engine khusus. Pertama, perkirakan kapasitas komputasi yang diperlukan untuk kueri Anda, lalu tetapkan 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. Perilaku 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 tabel virtual terwujud, yang melakukan penggabungan untuk menghasilkan satu tabel datar besar. Pendekatan ini menghindari penggabungan yang sama untuk setiap kueri. Tampilan terwujud yang 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 Gunakan hasil yang di-cache 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 memori 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 logis 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
JSONtidak 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
JOINharus berada dalam daftar tabel pilihan agar dapat diakselerasi. Jika ada satu tabel yang tidak ada dalam daftar pilihan, kueri 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.
Pengoptimalan dan percepatan kueri
BigQuery, dan juga BI Engine, membagi rencana kueri menjadi beberapa subkueri. Subkueri terdiri dari operasi seperti pemindaian, pemfilteran, komputasi, atau penggabungan data, dan berfungsi sebagai unit eksekusi.
Meskipun semua kueri SQL BigQuery yang didukung dijalankan dengan benar dengan BI Engine, BI Engine secara selektif mengoptimalkan tahap tertentu:
- Subkueri tingkat leaf: BI Engine paling dioptimalkan untuk
subkueri tingkat leaf yang memindai data dari penyimpanan dan melakukan operasi
seperti pemfilteran, komputasi, agregasi, pengurutan (
ORDER BY), dan penggabungan yang didukung. - Eksekusi penggantian: tahap kueri atau subkueri yang tidak dapat dipercepat oleh BI Engine akan otomatis diganti ke slot eksekusi BigQuery standar tanpa membuat kueri gagal.
Karena pengoptimalan selektif ini, business intelligence atau kueri jenis dasbor yang lebih sederhana mendapatkan manfaat paling banyak dari BI Engine karena sebagian besar waktu eksekusinya dihabiskan untuk memproses data mentah dalam subkueri level leaf (terendah).
Batasan
Untuk menggunakan BI Engine, organisasi Anda harus memesan kapasitas BI Engine dengan edisi yang didukung. Untuk mengetahui informasi selengkapnya, lihat Memahami edisi BigQuery.
Selain itu, BI Engine memiliki batasan yang dijelaskan di bagian berikut.
Gabungan
BI Engine mempercepat jenis kueri gabungan tertentu. Percepatan
terjadi pada subkueri tingkat daun dengan gabungan INNER dan LEFT OUTER, dengan
tabel fakta besar digabungkan dengan hingga 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 dirujuk berukuran 1 GiB atau kurang
Fungsi jendela
Fungsi jendela, yang juga dikenal sebagai fungsi analisis, memiliki batasan berikut saat dipercepat oleh BI Engine:
- Tahap input tanpa fungsi jendela dipercepat oleh
BI Engine. Dalam hal ini, tampilan
INFORMATION_SCHEMA.JOBSmelaporkanbi_engine_statistics.acceleration_modesebagaiFULL_INPUT. - Tahap input kueri dengan fungsi jendela dipercepat oleh
BI Engine jika mematuhi
batasan fungsi jendela BI Engine.
Dalam hal ini, tahap input atau kueri lengkap dijalankan di
BI Engine, dan laporan tampilan
INFORMATION_SCHEMA.JOBSbi_engine_statistics.acceleration_modesebagaiFULL_INPUTatauFULL_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 terpenuhi:
- Kueri memindai tepat satu tabel.
- Tabel tidak dipartisi.
- Tabel 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_tablehanya memiliki satu operator fungsi jendela.SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_tablememiliki dua operator fungsi jendela karena kedua fungsi memiliki klausaOVERyang 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 berikut didukung:
ANY_VALUEAVGBIT_ANDBIT_ORBIT_XORCORRCOUNTCOUNTIFCOVAR_POPCOVAR_SAMPCUME_DISTDENSE_RANKFIRST_VALUELAGLAST_VALUELEADLOGICAL_ANDLOGICAL_ORMAXMINNTH_VALUENTILEPERCENT_RANKPERCENTILE_CONTPERCENTILE_DISCRANKROW_NUMBERST_CLUSTERDBSCANSTDDEV_POPSTDDEV_SAMPSTDDEVSTRING_AGGSUMVAR_POPVAR_SAMPVARIANCE
Jika fungsi jendela tidak didukung, Anda mungkin melihat pesan error berikut:
Analytic function is incompatible with other operators or its inputs are too large
Batasan BI Engine yang tidak didukung
Akselerasi BI Engine tidak tersedia untuk fitur berikut:
- UDF JavaScript dan fungsi jarak jauh.
- Tabel eksternal, termasuk tabel BigLake.
- Mengirim kueri data
JSON(pesan error:JSON native type is not supported.). - Mengirim kueri data
RANGE(pesan error:RANGE native type is not supported.). - Menulis hasil ke tabel BigQuery permanen.
- Tabel yang berisi upsert yang menggunakan penyerapan change data capture BigQuery.
- 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.
- Kueri yang menggunakan fungsi penelusuran dan penelusuran vektor (seperti
fungsi
SEARCHatau fungsiVECTOR_SEARCH) atau dioptimalkan oleh indeks penelusuran atau indeks vektor. - Kueri rekursif menggunakan
RECURSIVE. - Kueri BigQuery ML.
Solusi untuk fitur yang tidak didukung
Jika kueri Anda menggunakan fitur SQL yang tidak didukung, Anda dapat menggunakan solusi berikut:
- Tulis 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 dapat membuat cache tidak valid terlalu sering.
- Referensikan tabel ini dalam kueri Anda yang mementingkan performa.
Kuota dan batas
Untuk mengetahui kuota dan batas yang berlaku untuk BI Engine, lihat Kuota dan batas BigQuery.
Harga
Anda dikenai biaya untuk reservasi yang dibuat untuk kapasitas BI Engine. Untuk mengetahui informasi tentang harga BI Engine, lihat harga BigQuery.
Langkah berikutnya
- Pelajari cara membuat reservasi di Mencadangkan kapasitas BI Engine.
- Pelajari cara menetapkan tabel pilihan di Tabel pilihan.
- Pelajari cara memantau pemanfaatan di Memantau BI Engine dengan Cloud Monitoring.
- Pelajari cara menggunakan BI Engine dengan Data Studio dan Tableau.