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

如何在Snowflake中识别首次访问用户并添加标记列

解决方案:标记访客首次访问记录

首先,你的核心需求是为每个访客的首次访问标记为1,后续所有访问标记为0。你之前使用ROW_NUMBER()时遇到的问题,是没有按VisitorID进行分区处理,导致行号是全局排序,而非针对每个访客单独计算访问顺序。

原始数据表格

VisitorIDDate
Kristin2020-03-01
Kristin2020-03-05
Kristin2020-03-07
PL2020-03-07
Mithil2020-03-06
Kristin2020-03-02

正确的Snowflake SQL查询

SELECT
  VisitorID,
  Date,
  CASE
    WHEN ROW_NUMBER() OVER (PARTITION BY VisitorID ORDER BY Date ASC) = 1 THEN 1
    ELSE 0
  END AS is_first_visit
FROM PRODUCT_VISITS_UNIQ
ORDER BY VisitorID, Date;

代码逻辑解释

  • PARTITION BY VisitorID:将数据按访客ID拆分分组,确保每个访客的访问记录单独计算行号,不会和其他访客的记录混排。
  • ORDER BY Date ASC:在每个访客的分组内,按访问日期升序排列,保证首次访问的记录会被分配到行号1的位置。
  • CASE条件判断:当行号为1时标记为1(代表首次访问),其余情况标记为0(代表重复访客)。

查询结果示例

VisitorIDDateis_first_visit
Kristin2020-03-011
Kristin2020-03-020
Kristin2020-03-050
Kristin2020-03-070
Mithil2020-03-061
PL2020-03-071

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:47:46