You need to enable JavaScript to run this app. BigQuery按用户维度计算相邻登录事件时间差的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery按用户维度计算相邻登录事件时间差的实现方法

原查询问题修正
  • 语法错误:TIMESTAMP_DIFF()函数的括号嵌套逻辑错误,错误将窗口函数返回结果与时间单位共同包裹在第二层括号内,不符合函数传参规则
  • 场景遗漏:未限定仅统计event = 'Login'的事件,会将非登录行为纳入间隔计算
  • 冗余处理:示例中存在同一用户同一时间戳的重复登录记录,未做去重会产生无意义的0值间隔
修正后查询语句
SELECT
  user_id,
  timestamp,
  -- 按用户分区、登录时间升序排序,计算当前登录与上一次登录的分钟差
  TIMESTAMP_DIFF(
    timestamp,
    LAG(timestamp) OVER (PARTITION BY user_id ORDER BY timestamp),
    MINUTE
  ) AS time_diff
FROM `your-project.your-dataset.your-table` -- 替换为实际业务表的全路径
WHERE event = 'Login' -- 仅筛选登录事件
-- 去重:同一用户同一时间戳的重复登录仅保留1条,避免无效0间隔
QUALIFY ROW_NUMBER() OVER (PARTITION BY user_id, timestamp) = 1
ORDER BY user_id, timestamp

注:如果业务场景需要保留同用户同一时刻的所有重复登录记录,可删除QUALIFY子句,此时重复时间戳对应的time_diff会返回0。

基于示例数据的输出结果
user_idtimestamptime_diff备注
aaa2021-02-20 00:00:00 UTCNULL用户aaa的首次登录记录
aaa2021-02-20 00:01:00 UTC1与上一次登录间隔1分钟
aaa2021-02-20 00:50:00 UTC49与上一次登录间隔49分钟
bbb2021-02-20 00:02:00 UTCNULL用户bbb的首次登录记录
bbb2021-02-20 00:13:00 UTC11与上一次登录间隔11分钟
ccc2021-02-20 00:02:00 UTCNULL用户ccc的首次登录记录
ccc2021-02-20 00:46:00 UTC44与上一次登录间隔44分钟

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 06:36:04