Perkiraan jumlah unik di Google Analytics

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 nilai precision yang diizinkan dan interval keyakinan untuk mengetahui presisi standar.
  • sparse precision adalah parameter lain untuk HLL+. Di BigQuery, nilai sparse precision ditetapkan ke precision + 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.