php - 将mysql不规则时间序列数据转换为正则序列

标签 php mysql

我有一个温度数据表,由多个传感器每 5-15 分钟更新一次。 数据本质上是这样的:唯一 ID、设备(传感器 ID)、时间戳、值( float ) 传感器没有准确的时钟,所以读数注定会随着时间的推移而出现偏差,所以我无法在 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 插入时间。这样,时间仅由一台设备控制,即插入数据的 Controller 。

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

此外,我会喜欢一种干净的 SQL 方式来执行此操作,但也会喜欢一种 PHP 方式循环遍历 30 行以生成 24 整小时的数据行。

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

在某些时候,我可能会发现以 15 分钟的精度显示过去六个小时的图表很有用。

线索是我不想更改原始数据,只是想办法从中提取/计算线性结果。

最佳答案

我会如何处理这个问题;

取日起始值; 01/01/2016 00:00:00 并在 MySQL 中执行“between”“sql”,每小时进行一次。所以第一个“sql”就像;

'从日期介于 01/01/2016 00:00:00 和 01/01/2016 00:59:99 之间的表中选择 avg(temp_value)' 并按小时进行。

sql 不正确,整个 24 小时周期都可以通过编程方式写出,但我认为这将是您前进的起点。

关于php - 将mysql不规则时间序列数据转换为正则序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38057029/

相关文章:

javascript - 如何在模态中将ajax数据插入表中

php - Eden mail php imap 连接失败

mysql检索数据给出限制和子限制

php - 单击按钮时如何将特定 HTML 表行值插入到 MySql 中

php - PDO插入和执行

php - Zend Framework 2 - 表单元素装饰器

java - 构建一个可以在移动和 Web 应用程序之间同时传输数据的服务器端 API

mysql - 如何在 Ruby On Rails 3 中为 MySQL 表设置别名?

php - 按喜欢对 Facebook 评论插件进行排序

mysql - 我的 mysql 函数有一个错误