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 chuyên trách về Google Analytics – Tháng 10 năm 2022

Cần phải đ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 đá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 các chỉ số được dùng nhiều nhất bao gồm Số người dùng đang hoạt độngSố phiên. Ví dụ: khi xem Đang hoạt động Số người dùng trong giao diện người dùng Google Analytics cũng như thông qua API dữ liệu, số lượng sẽ là kết quả gần đúng. Việc sử dụng HLL++ cho các chỉ số này đảm bảo hiệu quả hơn với độ chính xác ước tính cao hơn và giới hạn sai số thấp hơn. Chiến dịch này bài đăng trên blog 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 tính năng 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 phép tăng cường được thực hiện qua thuật toán HyperLogLog và dựa trên HyperLogLog trong thực hành: Kỹ thuật thuật toán tiên tiến Thuật toán ước tính số lượng giá trị riêng biệt. Các thay đổi trong tham số precision HLL++ đá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. Tăng sẽ làm giảm lỗi nhưng sẽ tăng mức sử dụng bộ nhớ.

Cách triển khai số lượng riêng biệt trong BigQuery

  • Sử dụng COUNT(DISTINCT) để đo lường lượng số 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 chạy hơn, đặc biệt là đối với các tập dữ liệu lớn.
  • APPROX_COUNT_DISTINCT ước chừng 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 giá trị gần đúng sự chính xác.
  • Để sử dụng các giá trị precision tuỳ chỉnh, hãy sử dụng các hàm HyperLogLog++. Xem HLL++ Sketches đối với các giá trị precision được phép và độ tin cậy cho các độ chính xác thông thường.
  • sparse precision là một tham số khác cho HLL+. Trong BigQuery, giá trị sparse precision không thể xác định được 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 các hàm HLL++ của 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:

  • Đã đặt mã nhận dạng báo cáo thành By device only cho Google Analytics 4 thuộc tính này.
  • Các nguồn có thể gây ra sự khác biệt khác, ví dụ: múi giờ báo cáo, đã địa chỉ email.

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

Số lượng chính xác sử dụ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 theo 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ác hàm HLL++ của BigQuery. Chiến dịch 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 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 phải lọc sự kiện chỉ dành cho Người dùng đang hoạt động. Triển khai chế độ cài đặt Đang hoạt động Bộ lọc Người dù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 cho mỗi người dùng. Tổ hợp user_pseudo_idga_session_id sẽ là riêng biệt trên tập dữ liệu cho các phiên hoạt động riêng biệt. Đây là phương pháp chuẩn của tính số phiên cho tài sản Google Analytics 4. Cho các 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 các truy vấn trong bài đăng trên blog này với Truy vấn cơ bản và Các ví dụ về Truy vấn nâng cao để thu thập thêm thông tin chi tiết từ sự kiện BigQuery xuất dữ liệu cho các tài sản Google Analytics 4. Nếu tài sản của bạn tạo ra 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 lượng số của những chỉ số khác mà bạn thường sử dụng trong BigQuery truy vấn. Để tìm hiểu thêm về HLL++ và lý do việc tính toán lượng số đắt đỏ đối với các tập dữ liệu lớn, hãy đọc bài đăng chuyên sâu trên blog Cloud: Sử dụng HLL++ để tăng tốc độ số lượng khác biệt trong các tập dữ liệu lớn.