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 động và Số 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ạ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 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_id
và ga_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.