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:

Komponen arsitektur BI Engine.

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 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 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.JOBS melaporkan bi_engine_statistics.acceleration_mode sebagai FULL_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.JOBS bi_engine_statistics.acceleration_mode sebagai FULL_INPUT atau FULL_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_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 memiliki klausa OVER 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 klausa OVER-nya terlihat sama.

Fungsi jendela yang didukung

Fungsi jendela 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 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 SEARCH atau fungsi VECTOR_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:

  1. Tulis kueri di BigQuery.
  2. Simpan hasil kueri ke tabel.
  3. 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.
  4. 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