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 động và Số 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ạiprecision + 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_id
và ga_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ản và Truy 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.