基于行数据动态创建并标记固定时长的事件Bucket
事件时间桶分配问题
需求说明
需将数据行分配至固定时长的时间桶(Bucket),规则如下:
- 桶的起始时间为首个未被其他桶覆盖的事件发生时间
- 桶为左闭右闭区间,时长固定(以分钟为单位)
- 每个桶需用触发其创建的事件名称标记
示例演示
0 1 2 3 4 5 6 7 8 9 ... -- 时间(分钟) a b b a b b -- 事件 |___| |___| |___| -- 时间桶
(注:上述示例中桶大小为3分钟)
算法逻辑
- 检测到事件时:
- 若当前无生效时间桶,创建一个持续固定时长的桶,并将该事件分配至该桶
- 若当前处于某个生效桶内,直接将事件分配至该桶
输入输出示例
输入数据
value | time -------|------ a | 1 b | 2 b | 6 a | 7 b | 8 b | 9
输出结果
value | time | bucket_value ----------------------------- a | 1 | a b | 2 | a b | 6 | b a | 7 | b b | 8 | b b | 9 | b
尝试过的未成功方案
- 逐行判断状态进行标注
- 合并连续/重叠范围后按要求拆分
内容的提问来源于stack exchange,提问作者Northernlights
相关产品推荐
相关产品推荐

