GA4里的指标并不是都是按实际数量计算,有些是估算。
对于大型数据集衡量确切的非重复计数(即基数)需要大量内存且会影响性能。
GA4是使用 HyperLogLog++ (HLL++) 算法来估算最常用指标的基数,使用 HLL++ 可确保实现较高的性能,同时提高估算准确性并缩小误差范围。
估算指标主要有两个影响:
GA4里的估算值指标有会话数、活跃用户数、用户总数。
官方对会话数的定义是:GA4会估算唯一会话ID的数量,以此来计算发生的会话数。
BigQuery里的计算:ga_session_id 事件参数用于标识每个用户的唯一会话数。user_pseudo_id 和 ga_session_id 的组合在数据集内对唯一会话来说将是唯一的。这是GA4统计会话数的标准方法。对于会话数,precision 为 12。(会话数的BigQuery和用户总数的对调了)
SELECT HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id,14)) AS total_user_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用戶总数是其实也是估算值。
BigQuery里的计算:
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_*`