如何在Apache IoTDB中同时使用group by与常量生成函数编写查询语句
在Apache IoTDB中结合常量生成函数与GROUP BY的解决方案
你遇到的701: Raw data and aggregation hybrid query is not supported错误,核心原因是IoTDB不允许在GROUP BY聚合查询中同时返回聚合结果和未经过聚合处理的原始数据类表达式——你的语句里const()函数被识别为类似原始数据的字段,和聚合函数avg()搭配时触发了这个限制。
要同时使用常量生成和GROUP BY,只需将const()函数包裹在一个聚合函数中,确保每个时间窗口返回单一的常量值,比如使用first_value()或last_value():
select avg(cast(val, 'type'='double')) as val, first_value(const('value'='test', 'type'='text')) as c from root.db1 group by ([2024-02-01T00:00:00,2024-02-20T00:00:00),1h)
注意:const()函数不需要指定第一个参数(你原语句里的const(val, ...)是冗余的),仅需传入value和type参数即可生成常量列。
这样修改后,每个时间窗口的聚合结果都会附带指定的常量值,完全符合IoTDB GROUP BY查询的规则,不会再触发混合查询的错误。
内容的提问来源于stack exchange,提问作者Hester Tso
相关产品推荐
相关产品推荐

