You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GA4-BigQuery:如何基于user_pseudo_id去重获取Total Users数据?

解决GA4与BigQuery中下载按钮点击事件用户数不一致的问题

问题背景

我们的着陆页下载按钮通过Firebase标签追踪点击行为,GA4后台显示该事件的Total Users为737,但将数据同步到BigQuery后:

  • 直接查询事件数得到1030(与GA4的Event count匹配)
  • 用count(DISTINCT user_pseudo_id)得到671,和GA4的737存在明显差异

可能的原因

  1. 用户身份合并逻辑差异:GA4会自动合并同一用户的多个user_pseudo_id(比如用户清除缓存、更换设备后生成的新ID),但BigQuery原始数据中这些ID是独立的,直接去重会低估用户数。
  2. 查询范围不匹配:BigQuery查询的日期、事件名称、设备过滤条件和GA4后台查看的范围不一致,导致数据样本不同。
  3. 用户ID未被利用:如果网站/应用有登录系统并设置了user_id,GA4会优先用user_id合并跨设备用户,但BigQuery查询若只依赖user_pseudo_id,会忽略这部分合并逻辑。
  4. 事件数据缺失:部分点击事件的user_pseudo_id为空,GA4后台会对这类数据做特殊处理,但BigQuery中直接去重会排除这些事件关联的用户。

解决办法

1. 严格对齐查询范围

确保BigQuery的查询条件和GA4后台完全一致:

  • 日期范围:使用_TABLE_SUFFIX匹配GA4查看的时间段
  • 事件名称:确认追踪下载按钮的事件名(比如download_button_click)准确无误
  • 设备类型:不要误过滤移动端/桌面端数据

示例SQL:

SELECT
  COUNT(*) AS event_count,
  COUNT(DISTINCT user_pseudo_id) AS distinct_pseudo_users
FROM `your-project.analytics_123456789.events_*`
WHERE event_name = 'download_button_click'
  AND _TABLE_SUFFIX BETWEEN '20240501' AND '20240531' -- 替换为GA4对应的日期

2. 结合用户ID统计

如果业务中使用了user_id,优先用user_id合并用户,缺失时再用user_pseudo_id:

SELECT
  COUNT(DISTINCT IF(user_id IS NOT NULL, user_id, user_pseudo_id)) AS aligned_users
FROM `your-project.analytics_123456789.events_*`
WHERE event_name = 'download_button_click'
  AND _TABLE_SUFFIX BETWEEN '20240501' AND '20240531'

3. 使用GA4预计算的用户表

GA4同步到BigQuery的users_*表是预计算的用户维度数据,更贴近后台的Total Users统计逻辑。查询触发过目标事件的用户数:

SELECT
  COUNT(DISTINCT user_pseudo_id) AS ga4_total_users
FROM `your-project.analytics_123456789.users_*`
WHERE _TABLE_SUFFIX BETWEEN '20240501' AND '20240531'
  AND EXISTS (
    SELECT 1 FROM UNNEST(event_params)
    WHERE key = 'event_name' AND value.string_value = 'download_button_click'
  )

4. 检查数据完整性

排查是否存在user_pseudo_id为空的事件,这类数据可能是GA4统计但BigQuery直接去重时遗漏的:

SELECT
  COUNT(*) AS total_events,
  COUNT(DISTINCT user_pseudo_id) AS valid_pseudo_users,
  COUNT(CASE WHEN user_pseudo_id IS NULL THEN 1 END) AS null_pseudo_events
FROM `your-project.analytics_123456789.events_*`
WHERE event_name = 'download_button_click'
  AND _TABLE_SUFFIX BETWEEN '20240501' AND '20240531'

如果存在大量null_pseudo_events,需要检查Firebase标签的触发逻辑,确保每个点击事件都正确携带用户ID参数。


内容的提问来源于stack exchange,提问作者Teddy Kossoko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:42:35