Minhaz Kazi, Developer Advocate, Google Analytics – Oktober 2022
Pengukuran jumlah unik persis (yaitu kardinalitas) untuk set data besar membutuhkan memori yang cukup besar dan akan memengaruhi performa. Properti Google Analytics 4 menggunakan algoritme HyperLogLog++ (HLL++) untuk memperkirakan kardinalitas untuk sebagian besar metrik yang digunakan termasuk Pengguna Aktif dan Sesi. Misalnya, saat melihat Pengguna Aktif di UI Google Analytics dan melalui Data API, jumlahnya akan berupa perkiraan. Penggunaan HLL++ untuk metrik ini akan memastikan performa yang lebih baik dengan akurasi estimasi yang lebih tinggi dan batas error yang lebih rendah. Postingan blog ini memberikan detail tentang cara HLL++ digunakan di properti Google Analytics 4 dan cara Anda dapat mereplikasi beberapa estimasi menggunakan data ekspor peristiwa BigQuery.
Tentang HLL++
HLL++ memperkirakan kardinalitas serta menggunakan lebih sedikit memori dan akan meningkatkan performa.
HLL++ memiliki augmentasi yang dibuat berdasarkan algoritme HyperLogLog dan didasarkan pada
HyperLogLog in Practice: Algorithmic Engineering of a State of the Art
Cardinality Estimation Algorithm. Perubahan parameter precision
HLL++ akan menimbulkan tarik ulur antara penggunaan memori dan akurasi statistik yang dihitung. Meningkatkan nilai parameter akan mengurangi error, tetapi meningkatkan konsumsi memori.
Penerapan jumlah unik di BigQuery
- Gunakan
COUNT(DISTINCT)
untuk mengukur kardinalitas yang tepat. Pendekatan ini memerlukan lebih banyak memori dan waktu untuk dijalankan, terutama untuk set data besar. APPROX_COUNT_DISTINCT
akan memperkirakan hasil dengan HLL++. Namun,APPROX_COUNT_DISTINCT
tidak mengizinkan pengguna mengonfigurasi akurasi perkiraan.- Untuk menggunakan nilai
precision
kustom, gunakan fungsi HyperLogLog++. Lihat Sketsa HLL++ untuk mengetahui nilaiprecision
yang diizinkan dan interval keyakinan untuk mengetahui presisi standar. sparse precision
adalah parameter lain untuk HLL+. Di BigQuery, nilaisparse precision
ditetapkan keprecision + 5
secara permanen dan tidak dapat ditentukan oleh pengguna.
Penerapan HLL++ di properti Google Analytics 4
Google Analytics 4 menggunakan konfigurasi berikut untuk mengukur kardinalitas metrik terkait.
Metrik | precision |
sparse precision |
---|---|---|
Sesi | 12 | 17 |
Pengguna Aktif | 14 | 25 |
Total Pengguna | 14 | 25 |
Menggunakan Fungsi HLL++ BigQuery dengan data Peristiwa Google Analytics
Jika data peristiwa properti Google Analytics 4 tersedia di BigQuery, Anda dapat mencoba mencocokkan metrik dari UI dengan data BigQuery. Contoh berikut mengasumsikan bahwa:
- ID pelaporan ditetapkan ke
By device only
untuk properti Google Analytics 4. - Kemungkinan sumber perbedaan lainnya, misalnya zona waktu pelaporan, sudah ditangani.
Total Pengguna
Jumlah persis menggunakan COUNT(DISTINCT)
:
SELECT
COUNT(DISTINCT user_pseudo_id) AS exact_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
Jumlah perkiraan menggunakan APPROX_COUNT_DISTINCT
:
SELECT
APPROX_COUNT_DISTINCT(user_pseudo_id) AS approx_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
Anda dapat mereplikasi APPROX_COUNT_DISTINCT
menggunakan fungsi HLL++ BigQuery. Tindakan ini akan menampilkan hasil yang sama atau sangat mirip dengan APPROX_COUNT_DISTINCT
:
SELECT
HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 15)) AS approx_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
Terakhir, untuk mereplikasi data di UI Google Analytics, gunakan precision = 14
:
SELECT
HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 14)) AS total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
Pengguna Aktif
Untuk menghitung jumlah Pengguna Aktif dari tabel ekspor peristiwa BigQuery, Anda harus memfilter peristiwa hanya untuk Pengguna Aktif terlebih dahulu. Cara menerapkan filter Pengguna Aktif tidak dibahas dalam artikel ini.
WITH ActiveUsers AS
(
SELECT
user_pseudo_id
FROM
`bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
<implement active user filter logic>
)
SELECT
HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 14)) AS active_user_count,
FROM ActiveUsers
Sesi
Parameter peristiwa ga_session_id
mengidentifikasi setiap sesi unik untuk masing-masing pengguna. Kombinasi user_pseudo_id
dan ga_session_id
akan bersifat unik di seluruh set data Anda untuk sesi unik. Ini adalah metode standar penghitungan sesi untuk properti Google Analytics 4. Untuk sesi, precision
adalah 12.
SELECT
HLL_COUNT.EXTRACT(
HLL_COUNT.INIT(
CONCAT(
user_pseudo_id,
(SELECT `value` FROM UNNEST(event_params) WHERE key = 'ga_session_id' LIMIT 1).int_value),
12)) AS session_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
Anda dapat menggunakan kueri dalam postingan blog ini dengan contoh Kueri Dasar dan Kueri Lanjutan untuk mendapatkan insight tambahan dari data ekspor peristiwa BigQuery untuk properti Google Analytics 4 Anda. Jika properti Anda menghasilkan jumlah data peristiwa yang signifikan, Anda juga dapat menerapkan fungsi HLL++ untuk memperkirakan kardinalitas metrik lainnya yang biasa Anda gunakan dalam kueri BigQuery. Untuk mempelajari lebih lanjut HLL++ dan alasan mengapa komputasi kardinalitas berbiaya mahal untuk set data besar, baca postingan blog yang mendetail di Blog Google Cloud: Using HLL++ to speed up count-distinct in massive datasets.