关于Apache IoTDB SESSION函数GAP参数边界定义的技术问询
Apache IoTDB 2.0.5 SESSION函数GAP边界调整问题
我使用Apache IoTDB 2.0.5版本,尝试用SESSION函数做会话窗口分析,但查询结果和预期不符,对GAP参数的边界定义存在疑问。
原始数据
select * from bid +-----------------------------+--------+-----+ | `time` | stock_id|price| +-----------------------------+--------+-----+ |2021-01-01T09:05:00.000+08:00| AAPL |100.0| |2021-01-01T09:07:00.000+08:00| AAPL |103.0| |2021-01-01T09:09:00.000+08:00| AAPL |102.0| +-----------------------------+--------+-----+
当前查询语句及结果
SELECT * FROM SESSION( DATA => bid PARTITION BY stock_id ORDER BY `time`, TIMECOL => '`time`', GAP => 2m); +-----------------------------+-----------------------------+-----------------------------+--------+-----+ | window_start | window_end | `time` | stock_id|price| +-----------------------------+-----------------------------+-----------------------------+--------+-----+ |2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL |100.0| |2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL |103.0| |2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL |102.0| +-----------------------------+-----------------------------+-----------------------------+--------+-----+
问题说明
AAPL的三条数据(09:05、09:07、09:09)被分到同一个会话窗口,说明GAP=2m是将≤2分钟的时间间隔视为同一会话。但我的预期是:当时间差恰好等于2分钟时开启新会话——09:05和09:07属于同一窗口(差值=2分钟),但09:09与09:07差值恰好为2分钟,应开启新窗口。
直接将GAP设为1.99m的方式不够稳健,可能引入数据偏差或精度问题。请问如何调整SQL查询,实现当时间差等于指定GAP值时开启新会话的分组行为?
内容的提问来源于stack exchange,提问作者Wu Shanhe
相关产品推荐
相关产品推荐

