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

如何在BigQuery中实现COUNTIFS等效功能?按用户统计特定事件次数

特定事件触发次数统计解决方案

要统计每个用户满足特定条件的事件触发次数,核心问题是正确解析嵌套的event_params参数——你之前的无效语句,就是因为直接引用了type(它是event_params内的子参数,并非顶层列)。以下是具体实现方法:

核心逻辑

针对不同事件的条件,先从event_params中提取目标参数值,再结合event_name做判断,最后用COUNTIF或SUM(CASE...)完成统计(两种写法效果一致)。

示例1:统计qr_interactions

需满足event_name = 'qr_click'且event_params中view参数值为qr_screen:

SELECT
  user_id,
  COUNTIF(
    event_name = 'qr_click'
    AND EXISTS(
      SELECT 1 FROM UNNEST(event_params)
      WHERE key = 'view' AND value.string_value = 'qr_screen'
    )
  ) AS qr_interactions
FROM
  `你的表名`
GROUP BY
  user_id

示例2:统计admin_navigation

需满足event_name = 'tap_navigation'且event_params中type参数值匹配指定列表:

SELECT
  user_id,
  SUM(
    CASE
      WHEN event_name = 'tap_navigation'
        AND EXISTS(
          SELECT 1 FROM UNNEST(event_params)
          WHERE key = 'type' AND REGEXP_CONTAINS(value.string_value, 'card|profile|settings|clubs')
        )
      THEN 1
      ELSE 0
    END
  ) AS admin_navigation
FROM
  `你的表名`
GROUP BY
  user_id

多事件合并统计

如果要同时统计多个事件,把多个统计字段放在同一查询即可:

SELECT
  user_id,
  -- 统计qr交互次数
  COUNTIF(
    event_name = 'qr_click'
    AND EXISTS(
      SELECT 1 FROM UNNEST(event_params)
      WHERE key = 'view' AND value.string_value = 'qr_screen'
    )
  ) AS qr_interactions,
  -- 统计导航点击次数
  SUM(
    CASE
      WHEN event_name = 'tap_navigation'
        AND EXISTS(
          SELECT 1 FROM UNNEST(event_params)
          WHERE key = 'type' AND REGEXP_CONTAINS(value.string_value, 'card|profile|settings|clubs')
        )
      THEN 1
      ELSE 0
    END
  ) AS admin_navigation
FROM
  `你的表名`
GROUP BY
  user_id

注意事项

  • 替换你的表名为实际数据表名称;
  • 根据event_params中参数的类型,选择value.string_value/value.int_value/value.float_value等对应字段;
  • UNNEST(event_params)是展开数组类型参数列表的关键,用于访问嵌套的键值对。

内容的提问来源于stack exchange,提问作者A.Y

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:02:26