Sketsa

GoogleSQL untuk BigQuery mendukung sketsa data. Sketsa data adalah ringkasan singkat dari penggabungan data. Fungsi ini menangkap semua informasi yang diperlukan untuk mengekstrak hasil penggabungan, melanjutkan penggabungan data, atau menggabungkannya dengan sketsa lain, sehingga memungkinkan penggabungan ulang.

Menghitung metrik menggunakan sketsa jauh lebih murah daripada menghitung nilai pasti. Jika komputasi Anda terlalu lambat atau memerlukan terlalu banyak penyimpanan sementara, gunakan sketsa untuk mengurangi waktu dan resource kueri.

Selain itu, menghitung kardinalitas, seperti jumlah pengguna yang berbeda, atau kuantil, seperti durasi kunjungan median, tanpa sketsa biasanya hanya dapat dilakukan dengan menjalankan tugas pada data mentah karena data yang sudah digabung tidak dapat digabungkan lagi.

Pertimbangkan tabel dengan data berikut:

Produk Jumlah pengguna Durasi kunjungan median
Produk A 500 juta 10 menit
Produk B 20 juta 2 menit

Menghitung jumlah total pengguna untuk kedua produk tidak memungkinkan karena kami tidak tahu jumlah pengguna yang menggunakan kedua produk tersebut di tabel.

Solusinya adalah menyimpan sketsa dalam tabel. Setiap sketsa adalah representasi perkiraan dan ringkas dari properti input tertentu, seperti kardinalitas, yang dapat Anda simpan, gabungkan (atau digabungkan ulang), dan kueri untuk hasil yang hampir sama persis. Pada contoh sebelumnya, Anda dapat memperkirakan jumlah pengguna yang berbeda untuk Produk A dan Produk B dengan membuat dan menggabungkan (menggabungkan ulang) sketsa untuk setiap produk. Anda juga dapat memperkirakan durasi kunjungan median dengan sketsa kuantil yang juga dapat Anda gabungkan dan di-kueri.

Karena memiliki kompresi lossy terhadap data asli, sketsa menyebabkan error statistik yang dinyatakan oleh batas error atau interval keyakinan (CI). Untuk sebagian besar aplikasi, ketidakpastian ini cukup kecil. Misalnya, sketsa penghitungan kardinalitas umum memiliki error relatif sekitar 1% dalam 95% dari semua kasus. Sketsa mengorbankan sejumlah akurasi, atau presisi, untuk komputasi yang lebih cepat dan lebih murah, serta lebih sedikit menggunakan penyimpanan.

Singkatnya, sketsa memiliki sifat-sifat utama berikut:

  • Merepresentasikan perkiraan gabungan untuk metrik tertentu
  • Bentuknya ringkas
  • Adalah bentuk serial dari struktur data sublinear dalam memori
  • Biasanya berukuran tetap dan secara asimetris lebih kecil daripada input
  • Dapat menyebabkan error statistik yang Anda tentukan dengan tingkat presisi
  • Dapat digabungkan dengan sketsa lain untuk meringkas penyatuan set data yang mendasarinya

Penggabungan ulang dengan penggabungan sketsa

Sketsa memungkinkan Anda menyimpan dan menggabungkan data untuk penggabungan ulang secara efisien. Hal ini membuat sketsa sangat berguna untuk tampilan terwujud set data. Anda dapat menggabungkan sketsa untuk membuat ringkasan beberapa aliran data berdasarkan sebagian sketsa yang dibuat untuk setiap aliran.

Misalnya, jika Anda membuat sketsa untuk estimasi jumlah pengguna yang berbeda setiap hari, Anda bisa mendapatkan jumlah pengguna unik selama tujuh hari terakhir dengan menggabungkan sketsa harian. Menggabungkan ulang sketsa harian yang digabungkan membantu Anda menghindari membaca input penuh dari set data.

Penggabungan ulang sketsa juga berguna dalam pemrosesan analisis online (OLAP). Anda dapat menggabungkan sketsa untuk membuat tampilan gabungan dari Kubus OLAP, dengan sketsa tersebut merangkum data bersama satu atau beberapa dimensi kubus yang spesifik. Tampilan gabungan OLAP tidak mungkin dilakukan dengan jumlah berbeda yang sebenarnya.

Integrasi sketsa

Anda dapat mengintegrasikan sketsa dengan sistem lain. Misalnya, Anda dapat membuat sketsa di aplikasi eksternal, seperti Dataflow atau Apache Spark, dan menggunakannya di GoogleSQL atau sebaliknya.

Selain GoogleSQL, Anda dapat menggunakan sketsa dengan bahasa coding berikut:

  • C++
  • Go
  • Java
  • Python

Perkiraan kardinalitas tanpa penghapusan

Jika Anda perlu memperkirakan kardinalitas dan tidak memerlukan kemampuan untuk menghapus item dari sketsa, gunakan sketsa HLL++.

Misalnya, untuk mendapatkan jumlah pengguna unik yang secara aktif menggunakan produk dalam bulan tertentu (metrik MAU atau 28DAU), gunakan sketsa HLL++.

Sketsa HLL++

HyperLogLog++ (HLL++) adalah algoritma pembuatan sketsa untuk memperkirakan kardinalitas. HLL++ didasarkan pada makalah HyperLogLog in Practice, dengan ++ menunjukkan augmentasi yang dilakukan pada algoritma HyperLogLog.

Kardinalitas adalah jumlah elemen berbeda dalam input untuk sketsa. Misalnya, Anda dapat menggunakan sketsa HLL++ untuk mendapatkan jumlah pengguna unik yang telah membuka aplikasi.

HLL++ memperkirakan kardinalitas yang sangat kecil dan sangat besar. HLL++ mencakup fungsi hash 64-bit, representasi renggang untuk mengurangi persyaratan memori untuk estimasi kardinalitas kecil, dan koreksi bias empiris untuk estimasi kardinalitas kecil.

Sketsa HLL++ mendukung presisi kustom. Tabel berikut menunjukkan nilai presisi yang didukung, ukuran penyimpanan maksimum, dan interval keyakinan (CI) untuk tingkat presisi standar:

Presisi Ukuran penyimpanan maksimum 65% CI 95% CI 99% CI
10 1 KiB + 28 B ±3.25% ±6.50% ±9.75%
11 2 KiB + 28 B ±2.30% ±4.60% ±6.89%
12 4 KiB + 28 B ±1.63% ±3.25% ±4.88%
13 8 KiB + 28 B ±1.15% ±2.30% ±3.45%
14 16 KiB + 30 B ±0.81% ±1.63% ±2.44%
15 (default) 32 KiB + 30 B ±0.57% ±1.15% ±1.72%
16 64 KiB + 30 B ±0.41% ±0.81% ±1.22%
17 128 KiB + 30 B ±0.29% ±0.57% ±0.86%
18 256 KiB + 30 B ±0.20% ±0.41% ±0.61%
19 512 KiB + 30 B ±0.14% ±0.29% ±0.43%
20 1024 KiB + 30 B ±0.10% ±0.20% ±0.30%
21 2048 KiB + 32 B ±0.07% ±0.14% ±0.22%
22 4096 KiB + 32 B ±0.05% ±0.10% ±0.15%
23 8192 KiB + 32 B ±0.04% ±0.07% ±0.11%
24 16384 KiB + 32 B ±0.03% ±0.05% ±0.08%

Anda dapat menentukan presisi untuk sketsa HLL++ saat menginisialisasinya dengan fungsi HLL_COUNT.INIT.

Anda tidak dapat menghapus nilai dari sketsa HLL++.

Untuk daftar fungsi yang dapat Anda gunakan dengan sketsa HLL++, lihat fungsi HLL++.

Fungsi perkiraan agregat

Sebagai alternatif fungsi HLL++, D3A, atau KLL tertentu untuk perkiraan berbasis sketsa, GoogleSQL menyediakan fungsi agregat perkiraan yang telah ditetapkan sebelumnya. Fungsi agregat perkiraan ini mendukung sketsa untuk estimasi umum seperti jumlah, kuantil, dan jumlah teratas yang berbeda, tetapi tidak memungkinkan presisi kustom. Fungsi ini juga tidak mengekspos dan menyimpan sketsa untuk penggabungan ulang seperti jenis sketsa lainnya. Fungsi agregat perkiraan dirancang untuk menjalankan kueri cepat berbasis sketsa tanpa konfigurasi mendetail.

Untuk daftar fungsi agregat perkiraan yang dapat Anda gunakan dengan perkiraan berbasis sketsa, lihat Perkiraan fungsi agregat.