iotdb icon indicating copy to clipboard operation
iotdb copied to clipboard

能否支持对不固定子节点的函数运算

Open CritasWang opened this issue 3 years ago • 0 comments

Is your feature request related to a problem? Please describe. 当我查询一些最新数据时,比如查询最新的10条,可以通过order by time desc limit 10。 但是有时候需要对查询回来的每一行的数据做运算,比如求和、取平均值等等。 当子节点明确时 可以通过 select s1+s2+s3 from root.data.g_0.d_0 order by time desc limit 10; 但现实的场景中子节点是不固定的,名称也是未知的。 可以通过目前的group by对子节点进行聚合后进行函数运算,但是无法支持取最近10个时间序列每一个时间点的单独计算。

Describe the solution you'd like 是否可以增加一些函数用来对子节点的值进行计算。比如 增加 node_sum 函数 比如 select node_sum(*) from root.data.g_0.d_0.* order by time desc limit 10; +-----------------------------+-------------------------------------------------------------------+ | Time| node_sum(root.data.g_0.d_0.)| +-----------------------------+-------------------------------------------------------------------+ |2022-10-18T16:41:24.195+08:00| 0.0| |2022-10-18T16:41:09.195+08:00| 0.0| |2022-10-18T16:40:54.195+08:00| 0.0| |2022-10-18T16:40:39.195+08:00| 0.0| |2022-10-18T16:40:24.195+08:00| 0.0| |2022-10-18T16:40:09.195+08:00| 0.0| |2022-10-18T16:39:54.195+08:00| 5.36E8| |2022-10-18T16:39:39.822+08:00| 5.82E8| |2022-10-18T16:39:24.195+08:00| 0.0| |2022-10-18T16:39:09.195+08:00| 0.0| +--------------------------------+----------------------------------------------------------------+ Describe alternatives you've considered 现在可以查询出来后通过遍历每一行、每一个子节点来进行计算。 或者通过采集间隔,计算出时间点 结合 group by (),level=来进行查询, 比如: 5s采集一次,取最近10条,当前时间为2022-10-18T17:23:54,则50s前为2022-10-18T17:23:04 select * from root.data.g_0.d_0. where time > 2022-10-18T17:23:04 group by ([2022-10-18T17:23:04, 2022-10-18T17:23:54), 5s),level=1,2,3

Additional context

CritasWang avatar Oct 18 '22 08:10 CritasWang