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 melaporkan bi_engine_statistics.acceleration_mode sebagai FULL_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 melaporkan 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 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 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 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:

  1. Menulis 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 mungkin terlalu sering membatalkan cache.
  4. 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