GA4里的指标并不是都是按实际数量计算,有些是估算。
为什么会有估算值
对于大型数据集衡量确切的非重复计数(即基数)需要大量内存且会影响性能。
GA4是使用 HyperLogLog++ (HLL++) 算法来估算最常用指标的基数,使用 HLL++ 可确保实现较高的性能,同时提高估算准确性并缩小误差范围。
估算指标的影响
估算指标主要有两个影响:
- 估算指标与实际有差异
- 不同报告位置的同一指标数值可能会不同,延伸阅读:GA4中不同报告中的「活跃用户数」不一致
估算指标介绍
会话数
官方对会话数的定义是:GA4会估算唯一会话ID的数量,以此来计算发生的会话数。
BigQuery里的计算:ga_session_id
事件参数用于标识每个用户的唯一会话数。user_pseudo_id
和 ga_session_id
的组合在数据集内对唯一会话来说将是唯一的。这是GA4统计会话数的标准方法。对于会话数,precision
为 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 `table.events_*`
延伸阅读:深入理解 Google Analytics 4 中的会话
活跃用户数
活跃用户数是个估算值,它在不同报告中显示的值可能会不同。
BigQuery里的计算:首先需要对事件进行过滤,才能使系统仅显示活跃用户数。
WITH ActiveUsers AS ( SELECT user_pseudo_id FROM `table.events_*` WHERE (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'engagement_time_msec') > 0 OR (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'session_engaged') = '1' GROUP BY user_pseudo_id ) ) SELECT HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 14)) AS active_user_count, FROM ActiveUsers
延伸阅读:GA4中不同报告中的「活跃用户数」不一致
用户总数
用戶总数是其实也是估算值。
BigQuery里的计算:
SELECT HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 14)) AS total_user_count, FROM `table.events_*`
延伸阅读:Google Analytics 4 中识别用户的方式:身份空间