Apache IoTDB 2.0.8聚合查询排序异常及时间排序无意义问题咨询
Apache IoTDB 2.0.8 时间窗口聚合后排序报错问题解决
问题原因
IoTDB 2.0.8的SQL解析逻辑存在局限:当对时间窗口分组聚合的结果使用别名排序时,会错误地将排序字段判定为原始数据列,而非聚合计算后的字段,因此抛出"原始数据与聚合混合查询不支持"的异常。
解决方案
方法1:用子查询包裹聚合结果,在外层排序
通过子查询先完成时间窗口聚合计算,再在外层对聚合结果执行排序,可规避解析逻辑的问题:
select * from ( select count(s1) as cnt, `time` from `root.post3.d1` group by ([1,6),2ms) ) order by cnt
执行后会得到按聚合结果cnt排序的输出:
+-----------------------------+-----+ | `Time`| cnt | +-----------------------------+-----+ |1970-01-01T08:00:00.005+08:00| 1| |1970-01-01T08:00:00.001+08:00| 2| |1970-01-01T08:00:00.003+08:00| 2| +-----------------------------+-----+ Total line number = 3
方法2:升级IoTDB到2.1.0及以上版本
IoTDB在2.1.0版本中修复了该语法兼容问题,升级后直接执行你最初的SQL语句即可正常运行:
select count(s1) as cnt from `root.post3.d1` group by ([1,6),2ms) order by cnt
内容的提问来源于stack exchange,提问作者Hsin-Yuan Huang
相关产品推荐
相关产品推荐

