【发布时间】:2024-01-23 17:59:01
【问题描述】:
我有大约 500 个传感器,每个传感器大约每分钟发出一次值。可以假设传感器的值保持不变,直到发出下一个值,从而创建一个时间序列。传感器在何时发出数据时并不同步(因此观察时间戳会有所不同),但所有数据都集中收集并存储在每个传感器上(以允许按传感器子集进行过滤)。
如何生成一个汇总时间序列,以提供来自传感器的数据总和? n (需要在 1 天的一组观察中创建时间序列 - 因此需要考虑每天 24x60x500 的观察)。计算还需要快速,最好在
示例 - 原始输入:
q)n:10
q)tbl:([]time:n?.z.t;sensor:n?3;val:n?100.0)
q)select from tbl
time sensor val
----------------------------
01:43:58.525 0 33.32978
04:35:12.181 0 78.75249
04:35:31.388 0 1.898088
02:31:11.594 1 16.63539
07:16:40.320 1 52.34027
00:49:55.557 2 45.47007
01:18:57.918 2 42.46532
02:37:14.070 2 91.98683
03:48:43.055 2 41.855
06:34:32.414 2 9.840246
我正在寻找的输出应该显示相同的时间戳,以及跨传感器的总和。如果传感器没有在匹配的时间戳处定义记录,则应使用它的先前值(记录仅暗示传感器输出更改的时间)。
预期输出,按时间排序
time aggregatedvalue
----------------------------
00:49:55.557 45.47007 / 0 (sensor 0) + 0 (sensor 1) + 45.47007 (sensor 2)
01:18:57.918 42.46532 / 0 (sensor 0) + 0 (sensor 1) + 42.46532 (new value on sensor 2)
01:43:58.525 75.7951 / 33.32978 + 0 + 42.46532
02:31:11.594 92.43049 / 33.32978 + 16.63539 + 42.46532
02:37:14.070 141.952 / 33.32978 + 16.63539 + 91.98683
03:48:43.055 91.82017 / 33.32978 + 16.63539 + 41.855
04:35:12.181 137.24288 / 78.75249 + 16.63539 + 41.855
04:35:31.388 60.388478 / 1.898088 + 16.63539 + 41.855
06:34:32.414 28.373724 / 1.898088 + 16.63539 + 9.840246
07:16:40.320 64.078604 / 1.898088 + 52.34027 + 9.840246
【问题讨论】:
标签: time-series kdb