将mysql不规则时间序列数据转换为常规序列

时间:2016-06-27 14:48:53

标签: php mysql

我有一张温度数据表,每隔5-15分钟由多个传感器更新。 数据基本上是这样的:唯一ID,设备(传感器ID),时间戳,值(浮点数) 传感器没有准确的时钟,所以读数注定会随着时间的推移而倾斜,所以我无法在mysql中逐个使用像小时一样读取最后24小时的温度数据。 我作为php程序员的解决方案是制作一个预处理器,读取所有未经处理的读数并加入它们"在一张桌子里。 除了我之外,还有其他人需要"缩减规模" x分钟/小时读取每小时一个,用于表示图形。

我的问题是如何从一个或多个读数计算圆形小时值。

例如,我有超过2.5小时的12个读数,并且我需要每个整个小时显示所有这些读数的值。

数据:

Date                 Device  Value
2016-06-27 12:15:15, TA,     23.5
2016-06-27 12:30:19, TA,     23.1
2016-06-27 12:45:35, TA,     22.9
2016-06-27 13:00:55, TA,     22.5
2016-06-27 13:05:15, TA,     22.8
2016-06-27 13:35:35, TA,     23.2

我对统计数学没那么多,所以"标准偏差"对我来说,这些都是俄罗斯的城市。

此外,设备有时会进入睡眠状态,但并不总能传输温度。

请随意让我在问题中添加信息,因为我不确定你们需要回答这些问题。

最重要的部分是: 1.我正在使用MySQL,并且不会改变。 2.我希望在PHP中提供解决方案(或提示),但许多其他语言的提示也有助于我的理解。我主要是一名PHP程序员,所以用这种语言的答案将非常受欢迎。

编辑:我想指出几点。 因为从传感器记录的时间数据可能不准确,所以我依赖于SQL插入时间。这样,时间仅由一个设备控制,即插入数据的控制器。

例如,如果我在24小时内选择30个时间戳/值对,我希望"结合"这些到24个时间戳/值对,使用平均值来组合溢出的数据。 我解释不太好,但我希望这更清楚。

此外,既可以采用干净的SQL方式,也可以通过PHP循环30行来生成24小时的数据行。

我的目标是每小时有一行,具有准确的时间戳和温度值。主要是因为大多数图形库都期望这种输入。特别是当我在图表中有多个系列时。

在某些时候,我可能会发现显示图表是有用的,让我们说最近六个小时,准确度为15分钟。

线索是我不想改变原始数据,只是找到一种从中提取/计算线性结果的方法。

1 个答案:

答案 0 :(得分:0)

我将如何处理这个问题;

获取一天的起始值; div并在'之间做一个' ' SQL'在MySQL中,每小时都在进步。所以第一个' sql'就像;

'从表格中选择avg(temp_value),日期为01/01/2016 00:00:00至01/01/2016 00:59:99'和小时的进展。

sql是不正确的,整个24小时的时间段可以通过编程方式写出来,但我认为这会让你开始。