Phương pháp ước tính số lượng riêng biệt trong Google Analytics

Minhaz Kazi, Chuyên gia hỗ trợ nhà phát triển, Google Analytics – Tháng 10 năm 2022

Việc đo lường số lượng riêng biệt chính xác (tức là số lượng giá trị riêng biệt) cho các tập dữ liệu lớn đòi hỏi bộ nhớ đáng kể và ảnh hưởng đến hiệu suất. Tài sản Google Analytics 4 sử dụng thuật toán HyperLogLog++ (HLL++) để ước tính số lượng giá trị riêng biệt cho hầu hết các chỉ số được sử dụng, bao gồm cả Số người dùng đang hoạt độngSố phiên. Ví dụ: khi xem Số người dùng đang hoạt động trong giao diện người dùng Google Analytics cũng như thông qua Data API, số lượng này sẽ là giá trị gần đúng. Việc sử dụng HLL++ cho các chỉ số này đảm bảo hiệu suất tốt hơn với độ chính xác ước tính cao hơn và giới hạn lỗi thấp hơn. Bài đăng trên blog này cung cấp thông tin chi tiết về cách sử dụng HLL++ trong các tài sản Google Analytics 4 và cách bạn có thể sao chép một số ước tính bằng cách sử dụng dữ liệu xuất sự kiện BigQuery.

Giới thiệu về HLL++

HLL++ ước tính số lượng giá trị riêng biệt trong khi sử dụng ít bộ nhớ hơn và cải thiện hiệu suất. HLL++ có các điểm cải tiến được thực hiện dựa trên thuật toán HyperLogLog và dựa trên HyperLogLog in hành: Kỹ thuật giải thuật của một thuật toán ước tính lượng tử hiện đại. Các thay đổi trong tham số precision HLL++ sẽ đánh đổi mức sử dụng bộ nhớ so với độ chính xác của số liệu thống kê đã tính toán. Việc tăng giá trị tham số sẽ làm giảm lỗi, nhưng sẽ làm tăng mức sử dụng bộ nhớ.

Triển khai số lượng riêng biệt trong BigQuery

  • Sử dụng COUNT(DISTINCT) để đo lường số lượng giá trị riêng biệt chính xác. Phương pháp này đòi hỏi nhiều bộ nhớ hơn và sẽ mất nhiều thời gian hơn để chạy, đặc biệt là đối với các tập dữ liệu lớn.
  • APPROX_COUNT_DISTINCT ước tính kết quả bằng HLL++. Tuy nhiên, APPROX_COUNT_DISTINCT không cho phép người dùng định cấu hình độ chính xác gần đúng.
  • Để sử dụng các giá trị precision tuỳ chỉnh, hãy dùng các hàm HyperLogLog++. Xem HLL++ Sketches để biết các giá trị precision được phép và khoảng thời gian tin cậy đối với độ chính xác thông thường.
  • sparse precision là một thông số khác cho HLL+. Trong BigQuery, giá trị sparse precision không thể xác định bởi người dùng và được cố định tại precision + 5.

Triển khai HLL++ trong tài sản Google Analytics 4

Google Analytics 4 sử dụng cấu hình sau để đo lường số lượng giá trị riêng biệt của các chỉ số có liên quan.

Chỉ số precision sparse precision
Số phiên 12 17
Số người dùng đang hoạt động 14 25
Tổng số người dùng 14 25

Sử dụng hàm HLL++ trong BigQuery với dữ liệu Sự kiện của Google Analytics

Nếu dữ liệu sự kiện của tài sản Google Analytics 4 có trong BigQuery, bạn có thể thử so khớp các chỉ số từ giao diện người dùng với dữ liệu BigQuery. Các ví dụ sau đây giả định:

  • Giá trị nhận dạng báo cáo được đặt thành By device only cho tài sản Google Analytics 4.
  • Các nguồn có thể gây ra sự khác biệt khác, chẳng hạn như múi giờ báo cáo, đã được giải quyết.

Tổng số người dùng

Cách đếm chính xác bằng COUNT(DISTINCT):

SELECT
  COUNT(DISTINCT user_pseudo_id) AS exact_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

Số lượng gần đúng sử dụng APPROX_COUNT_DISTINCT:

SELECT
  APPROX_COUNT_DISTINCT(user_pseudo_id) AS approx_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

Bạn có thể sao chép APPROX_COUNT_DISTINCT bằng cách sử dụng các hàm HLL++ của BigQuery. Thao tác này sẽ trả về kết quả giống hệt hoặc rất giống với 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_*`

Cuối cùng, để sao chép dữ liệu trong giao diện người dùng Google Analytics, hãy sử dụng 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_*`

Số người dùng đang hoạt động

Để tính toán số lượng Số người dùng đang hoạt động từ bảng xuất sự kiện BigQuery, trước tiên, bạn phải lọc các sự kiện chỉ dành cho Người dùng đang hoạt động. Triển khai bộ lọc Người dùng đang hoạt động nằm ngoài phạm vi của bài viết này.

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

Phiên

Thông số sự kiện ga_session_id xác định từng phiên riêng biệt cho từng người dùng. Tổ hợp user_pseudo_idga_session_id sẽ là duy nhất trên tập dữ liệu của bạn đối với các phiên duy nhất. Đây là phương pháp chuẩn để tính số phiên cho các tài sản Google Analytics 4. Đối với phiên hoạt động, precision là 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_*`

Bạn có thể sử dụng truy vấn trong bài đăng trên blog này cùng với các ví dụ về Truy vấn cơ bảnTruy vấn nâng cao để có thêm thông tin chi tiết từ dữ liệu xuất sự kiện BigQuery cho tài sản Google Analytics 4. Nếu tài sản của bạn tạo ra một lượng dữ liệu sự kiện đáng kể, bạn cũng có thể triển khai các hàm HLL++ để ước tính số lượng giá trị riêng biệt của những chỉ số khác mà bạn thường dùng trong các truy vấn BigQuery. Để tìm hiểu thêm về HLL++ và lý do việc tính toán lượng số lại đắt đỏ đối với các tập dữ liệu lớn, hãy đọc bài đăng trên blog chuyên sâu trên Cloud Blog: Sử dụng HLL++ để tăng tốc độ đặc biệt về số lượng trong các tập dữ liệu lớn.