Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQL/BigQuery中固定持续时间的滑动窗口

SQL/BigQuery中固定持续时间的滑动窗口
EN

Stack Overflow用户
提问于 2020-02-26 21:33:01
回答 1查看 152关注 0票数 1

我有一个时间序列(userid, timestamp),我想确定会话。

会话在用户级别由5分钟的固定窗口定义,该窗口为不在先前会话中的每个新行启动(理想情况下,窗口持续时间取决于给定用户的先前行数,但目前我可以接受固定的窗口持续时间)。

代码语言:javascript
运行
AI代码解释
复制
WITH sample AS (
  SELECT 0 user_id, TIMESTAMP('2020-01-01T00:00:00Z') timestamp UNION ALL -- new session
  SELECT 1, TIMESTAMP('2020-01-01T00:00:00Z') UNION ALL -- new session
  SELECT 1, TIMESTAMP('2020-01-01T00:04:00Z') UNION ALL
  SELECT 1, TIMESTAMP('2020-01-01T00:06:00Z') UNION ALL -- new session
  SELECT 1, TIMESTAMP('2020-01-01T00:10:00Z') UNION ALL
  SELECT 1, TIMESTAMP('2020-01-01T00:11:00Z') UNION ALL -- new session
  SELECT 1, TIMESTAMP('2020-01-01T01:00:00Z')           -- new session
)
SELECT * 
FROM sample;

我被卡住了,因为在我的推理中,确定一行是否启动新会话取决于前几行中的"new session“列值。

我的目标是BigQuery,所以理想情况下,它在BQ语法中应该是可行的。

感谢您的帮助/提示!

EN

回答 1

Stack Overflow用户

发布于 2020-02-26 21:38:50

我想你需要lag()和一个累加和:

代码语言:javascript
运行
AI代码解释
复制
select s.*,
       sum(case when prev_ts > timestamp_add(timestamp, interval -5 minute)
                then 0 else 1  -- "1" starts a new session
           end) over (partition by user_id order by timestamp) as session_num
from (select s.*,
             lag(timestamp) over (partition by user_id order by timestamp) as prev_ts
      from sample s
     ) s
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60422894

复制
相关文章
滑动窗口 leetcode_滑动窗口的概念
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
全栈程序员站长
2022/09/22
8620
【滑动窗口专题】结合几何的滑动窗口运用题
这是 LeetCode 上的 「1610. 可见点的最大数目」 ,难度为 「困难」。
宫水三叶的刷题日记
2022/04/06
1.3K0
【滑动窗口专题】结合几何的滑动窗口运用题
滑动窗口
2.用数组内元素ascall和当前位置(或出现的次数)建立新数组。新数组下标为该字符ascall、大小为出现的位置或次数。
开源519
2020/07/23
1.4K0
滑动窗口
滑动窗口
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名,转载请标明出处 最后编辑时间为: 2021/11/02 08:18
用户9347382
2022/01/10
9410
TCP的滑动窗口
TCP滑动窗口在数据发送和接收的安全性保障要依赖于确认重传机制: RTT和RTO是确认重传机制下的两个概念
名字是乱打的
2022/05/13
9720
TCP的滑动窗口
【滑动窗口专题】众多滑动窗口变形题的原题
这是 LeetCode 上的「992. K 个不同整数的子数组」,难度为「困难」。
宫水三叶的刷题日记
2022/04/06
1.3K0
【滑动窗口专题】众多滑动窗口变形题的原题
滑动窗口入门
窗口:也就是一个区间,这个区间可能会增大,也可能会缩小,也可能是固定的。在本题中,我们可以使用队列来表示窗口,这个队列可大可小,要求其最大值。
ACM算法日常
2021/04/02
6060
TCP/IP滑动窗口
T C P使用一种窗口(w i n d o w)机制来控制数据流。当一个连接建立时,连接的每一端分配一个缓冲区来保存输入的数据,并将缓冲区的尺寸发送给另一端。当数据到达时,接收方发送确认,其中包含了自己剩余的缓冲区尺寸。剩余的缓冲区空间的大小被称为窗口( w i n d o w) ,指出窗口大小的通知称为窗口通告(window advertisement) 。接收方在发送的每一确认中都含有一个窗口通告。   如果接收方应用程序读数据的速度能够与数据到达的速度一样快,接收方将在每一确认中发送一个正的窗口通
xiangzhihong
2018/01/30
1.5K0
滑动窗口协议
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/90377225
zy010101
2019/05/25
1.3K0
滑动窗口协议
  为了完成流量控制,TCP使用滑动窗口协议,使用这种方法的时候,发送方和接收方向外通信各使用一个窗口。这个窗口覆盖了缓存的一部分,在缓存中的字节是从应用进程传送来的,在这个窗口中的字节就是可以发送而
Mister24
2018/05/14
9150
window滑动窗口
Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据,会被聚合起来执行计算操作,然后生成的RDD,会作为window DStream的一个RDD。比如下图中,就是对每三秒钟的数据执行一次滑动窗口计算,这3秒内的3个RDD会被聚合起来进行处理,然后过了两秒钟,又会对最近三秒内的数据执行滑动窗口计算。所以每个滑动窗口操作,都必须指定两个参数,窗口长度以及滑动间隔,而且这两个参数值都必须是batch间隔的整数倍。(Spark Streaming对滑动窗口的支持,是比Storm更加完善和强大的)
编程那点事
2023/02/25
7970
window滑动窗口
LeetCode *480. 滑动窗口中位数(滑动窗口)
中位数是有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。
SakuraTears
2022/01/13
3990
【滑动窗口专题】字符串滑动窗口运用题
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 次。
宫水三叶的刷题日记
2022/04/06
7190
Flink滑动窗口原理与细粒度滑动窗口的性能问题
Flink的窗口机制是其底层核心之一,也是高效流处理的关键。Flink窗口分配的基类是WindowAssigner抽象类,下面的类图示出了Flink能够提供的所有窗口类型。
王知无-import_bigdata
2019/12/18
5.2K1
golang刷leetcode 滑动窗口(8)滑动窗口最大值
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。
golangLeetcode
2022/08/02
4990
滑动窗口 leetcode_滑动窗口最多可以有多少帧
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
全栈程序员站长
2022/09/22
4070
【滑动窗口专题】一道经典的滑动窗口笔试高频题
这是 LeetCode 上的「438. 找到字符串中所有字母异位词」,难度为「中等」。
宫水三叶的刷题日记
2022/02/09
6240
【滑动窗口专题】更贴合笔试/面试的滑动窗口综合题
请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。
宫水三叶的刷题日记
2022/04/06
9360
【滑动窗口专题】更贴合笔试/面试的滑动窗口综合题
golang刷leetcode 滑动窗口(4)滑动窗口中位数
中位数是有序序列最中间的那个数。如果序列的大小是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。
golangLeetcode
2022/08/02
5280
java - 实现滑动窗口
package com.jfp.datamiddle.test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.LinkedList; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ExecutorService; import java.uti
夹胡碰
2021/03/18
1.6K0

相似问题

Google BigQuery标准SQL -销售滑动窗口

23

用于滑动窗口聚合的Bigquery

26

bigquery年度周滑动窗口汇总

12

用于28天滑动窗口聚合的BigQuery SQL (无需编写28行SQL)

43

滑动时间窗口上的SQL窗口函数

36
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文