IoTDB 1.3.2:多聚合函数联合查询时结果错位问题
问题解答
是否为已知缺陷?
这是Apache IoTDB 1.3.2的已知缺陷,属于聚合查询中包含计算表达式(如max_value - min_value)时的结果列映射错误问题,官方后续版本已修复该bug。
临时SQL调整方案(不升级版本)
通过子查询将每个聚合/计算项单独计算,再合并结果,避免列值错位:
SELECT t1.depthOfDischarge, t2.StkVavg, t3.StkVdiff, t4.StkTavg, t5.StkTdiff FROM (SELECT max_value(StkSoc) - min_value(StkSoc) AS depthOfDischarge FROM `root.soms.s5.d862` WHERE `time` >= 1758902400000 AND `time` <= 1758954766049) t1, (SELECT max_value(StkVavg) AS StkVavg FROM `root.soms.s5.d862` WHERE `time` >= 1758902400000 AND `time` <= 1758954766049) t2, (SELECT max_value(StkVdiff) AS StkVdiff FROM `root.soms.s5.d862` WHERE `time` >= 1758902400000 AND `time` <= 1758954766049) t3, (SELECT max_value(StkTavg) AS StkTavg FROM `root.soms.s5.d862` WHERE `time` >= 1758902400000 AND `time` <= 1758954766049) t4, (SELECT max_value(StkTdiff) AS StkTdiff FROM `root.soms.s5.d862` WHERE `time` >= 1758902400000 AND `time` <= 1758954766049) t5
版本升级建议
强烈建议升级至IoTDB 1.3.3及以上版本,或直接迁移到更稳定的2.x系列版本。1.3.3版本已修复该聚合查询列错位的问题,后续版本还优化了聚合性能、兼容性及稳定性,能彻底解决这类问题。
内容的提问来源于stack exchange,提问作者Yueyue Wang




