Skip to content

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

@CritasWang

Description

@CritasWang

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions