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

如何在BigQuery中过滤重复页面并保留会话访问时序?

解决方案

你需要先为每个会话(session_id)和页面(pagePath)计算首次访问时间,再基于这个时间排序,同时确保会话与页面的组合唯一。修改后的查询语句如下:

SELECT 
  session_id,
  pagePath
FROM (
  SELECT 
    fullVisitorId || '.' || visitStartTime || '.' || visitNumber AS session_id, 
    page.pagePath,
    MIN(DATETIME_ADD(DATETIME(TIMESTAMP_SECONDS(visitStartTime), "America/New_York"), INTERVAL hits.time MILLISECOND)) AS first_page_visit_time
  FROM `xx.xx.ga_sessions_*`,
       UNNEST(hits) AS hits
  WHERE hits.type = "PAGE"
    AND date = '20220403' 
  GROUP BY session_id, pagePath
)
ORDER BY session_id, first_page_visit_time ASC

修改说明:

  • 移除冗余的SELECT DISTINCT:GROUP BY session_id, pagePath已经保证每个会话-页面组合仅出现一次,无需额外去重。
  • 子查询保留首次访问时间:通过MIN()函数获取每个页面在会话中的最早访问时间,作为后续排序的依据。
  • 外层仅返回所需字段:外层查询只选择session_id和pagePath,同时按会话ID和首次访问时间升序排列,确保页面按访问先后顺序展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:15:40