Redshift:如何统计用户每次访问中首次浏览的页面数量?
解决方法:统计用户每次访问的新页面数量
步骤1:标记每个页面的首次访问批次
先基于你的first_date表,给每个用户的每个页面标记其首次被访问时的denserank(即该页面第一次出现在用户访问记录里的批次),用窗口函数就能快速实现:
WITH first_page_access AS ( SELECT id, text, denserank, -- 标记当前页面首次被该用户访问的批次 MIN(denserank) OVER (PARTITION BY id, text) AS first_access_rank FROM first_date )
步骤2:统计每个批次的新页面数
筛选出当前批次等于首次访问批次的记录,再按id和denserank分组计数,就能得到该批次中用户首次访问的页面数量:
SELECT id, denserank, COUNT(DISTINCT text) AS new_page_count FROM first_page_access WHERE denserank = first_access_rank GROUP BY id, denserank ORDER BY id, denserank;
补充说明
- 这个方案无需编写复杂的WHERE或CASE分支,仅通过一次窗口函数标记+简单筛选分组即可完成,逻辑清晰且性能高效。
- 使用
COUNT(DISTINCT text)是为了规避同一批次内用户重复访问同一页面的情况;如果你的业务场景中同一批次不会出现重复访问同一页面的情况,也可以直接替换为COUNT(text)。
内容的提问来源于stack exchange,提问作者Matthew JJJ
相关产品推荐
相关产品推荐

