【发布时间】:2019-05-31 12:40:18
【问题描述】:
假设我们有一个名为 sensors 的键空间和一个名为 sensor_per_row 的表。 该表具有以下结构:
sensor_id | ts | value
在这种情况下,senor_id 表示分区键,ts(即创建记录的日期)表示集群键。
select sensor_id, value , TODATE(ts) as day ,ts from sensors.sensor_per_row
这个选择的结果是
sensor_id | value | day | ts
-----------+-------+------------+---------------
Sensor 2 | 52.7 | 2019-01-04 | 1546640464138
Sensor 2 | 52.8 | 2019-01-04 | 1546640564376
Sensor 2 | 52.9 | 2019-01-04 | 1546640664617
如何按 ts 对数据进行分组,更具体地说,按日期对它们进行分组,并使用 cqlsh 返回表中每一行的日平均值。例如:
sensor_id | system.avg(value) | day
-----------+-------------------+------------
Sensor 2 | 52.52059 | 2018-12-11
Sensor 2 | 42.52059 | 2018-12-10
Sensor 3 | 32.52059 | 2018-12-11
我猜一种方法是使用 udf(用户定义函数),但这个函数只运行一行。是否可以在 udf 中选择数据? 另一种方法是使用 java 等,每天进行多次查询,或者将其他联系点中的数据作为休息网络服务处理,但我现在不知道它的效率......有什么建议吗?
【问题讨论】: