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

如何通过BigQuery筛选同时触发两个指定事件的Google Analytics用户

解决方法:统计同时触发两个事件的用户

你的原查询用UNION ALL合并了两个独立条件的用户统计结果,但这只能得到分别满足单个条件的用户数。要找出同时触发两个事件的用户,需要筛选出同时满足两个条件的用户交集,以下是两种可行的BigQuery SQL写法:

方法一:分组后用HAVING筛选

SELECT COUNT(DISTINCT user_pseudo_id) AS users_both_events
FROM `*****` t,
UNNEST(event_params) AS event_param
WHERE event_name = 'select_content'
GROUP BY user_pseudo_id
HAVING SUM(CASE WHEN event_param.key = 'content_type' AND event_param.value.string_value = 'Q12' THEN 1 ELSE 0 END) > 0
   AND SUM(CASE WHEN event_param.key = 'content_id' AND event_param.value.string_value = 'Option_C' THEN 1 ELSE 0 END) > 0

逻辑说明:

  • 按user_pseudo_id分组,聚焦单个用户的所有事件参数
  • 用CASE语句分别标记用户是否触发了两个目标条件,SUM结果大于0表示该用户存在对应事件
  • HAVING子句筛选出同时满足两个条件的用户,最后统计这类用户的总数

方法二:子查询标记后筛选

SELECT COUNT(DISTINCT user_pseudo_id) AS users_both_events
FROM (
  SELECT user_pseudo_id,
         MAX(CASE WHEN event_param.key = 'content_type' AND event_param.value.string_value = 'Q12' THEN 1 ELSE 0 END) AS has_q12,
         MAX(CASE WHEN event_param.key = 'content_id' AND event_param.value.string_value = 'Option_C' THEN 1 ELSE 0 END) AS has_option_c
  FROM `*****`,
  UNNEST(event_params) AS event_param
  WHERE event_name = 'select_content'
  GROUP BY user_pseudo_id
)
WHERE has_q12 = 1 AND has_option_c = 1

逻辑说明:

  • 子查询中按用户分组,用MAX标记用户是否触发过对应条件(只要触发过一次就标记为1)
  • 外层查询筛选出两个标记都为1的用户,统计总数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:52:36