Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL将增量数据合并为完整数据集_Mysql - Fatal编程技术网

MySQL将增量数据合并为完整数据集

MySQL将增量数据合并为完整数据集,mysql,Mysql,我正在为家庭自动化系统开发数据记录器。当某事物的状态发生变化时,它会以key=>value格式定期从HA控制器接收数据。我想将其转储到MySQL数据库中 当HA控制器发送此数据时,它并不包括对象的每个属性。示例如下所示: 初始回报 stdClass Object ( [name] => Washing Machine [altid] => 10 [id] => 31 [category] => 3 [subcategory] => 0 [room] =&

我正在为家庭自动化系统开发数据记录器。当某事物的状态发生变化时,它会以key=>value格式定期从HA控制器接收数据。我想将其转储到MySQL数据库中

当HA控制器发送此数据时,它并不包括对象的每个属性。示例如下所示:

初始回报

stdClass Object
(
 [name] => Washing Machine
 [altid] => 10
 [id] => 31
 [category] => 3
 [subcategory] => 0
 [room] => 2
 [parent] => 1
 [status] => 1
 [light] => 30
 [kwh] => 30.2700
 [state] => -1
 [comment] =>
 [watts] => 108.5
)
增量更新

stdClass Object
(
 [altid] => 10
 [id] => 31
 [subcategory] => 0
 [room] => 2
 [parent] => 1
 [status] => 1
 [light] => 30
 [kwh] => 30.2700
 [state] => -1
 [comment] =>
 [watts] => 96.7
)
如您所见,稍后的更新不包括对象的名称或类别。对于其他对象类,可能会缺少其他属性

我的问题是,记录这些数据的最佳方式是什么,这样我就可以运行查询来检索每个属性在单个时间点的状态?可能是为了创建一个视图而进行的一些有意义的查询


感谢您的帮助

,因为它总是为您提供ID(希望如此),您可以在事件发生时查找缺少的属性,并在保存之前用缺少的信息填充您的记录。您需要从以前的事件中进行选择,或者在一些类别和名称的主表中已经创建了设备的定义

另一种方法是不关心缺少的度量,而是在UI/绘图/报告阶段处理这些度量。您可以构建一个UI,该UI知道ID31是洗衣机,并且可以随后绘制随时间变化的所有属性。通过查看以前的值或选择在0处绘制图表,UI可以继续绘制任何不存在的值

这样做的话,构建一个能够在任何时间点识别任何值的单一查询将非常棘手,因为它必须一直向后扫描,直到找到一个值为止。但是,再一次,在图形的意义上,它真的没有那么重要,因为您希望有一个足够大的日期范围来容纳缺少的值


将数据保存到时间序列数据库(如influx db)而不是关系数据库中也可能会使您受益。

因为它总是为您提供ID(希望如此),您可以在事件发生时查找缺失的属性,并在保存前用缺失的信息填充记录。您需要从以前的事件中进行选择,或者在一些类别和名称的主表中已经创建了设备的定义

另一种方法是不关心缺少的度量,而是在UI/绘图/报告阶段处理这些度量。您可以构建一个UI,该UI知道ID31是洗衣机,并且可以随后绘制随时间变化的所有属性。通过查看以前的值或选择在0处绘制图表,UI可以继续绘制任何不存在的值

这样做的话,构建一个能够在任何时间点识别任何值的单一查询将非常棘手,因为它必须一直向后扫描,直到找到一个值为止。但是,再一次,在图形的意义上,它真的没有那么重要,因为您希望有一个足够大的日期范围来容纳缺少的值


将数据保存到时间序列数据库(如Inflox db)而不是关系数据库中也可能会使您受益。

我最终在另一篇SO文章中找到了解决方案:


smdrager给出的最重要的答案是我使用的。表中只有几行与数千行之间的速度似乎没有差别。

我最终在另一篇SO帖子中找到了解决方案:

smdrager给出的最重要的答案是我使用的。表中只有几行和数千行的速度似乎没有差别