我有一个每小时传送数据的气象站。在这一小时内,它会进行四次记录(每15分钟一次)。在我目前的情况下,我使用attr_persistence=row
在我的MySql数据库中存储数据。
使用row模式,我得到默认生成的列:
recvTimeTs | recvTime | entityId | entityType | attrName | attrType | attrValue | attrMd
但是我的气象站给我发来了以下数据:
| attrName | attrValue
timeRecorded 14:30:0,22.5.2015
measurement1 18.799
measurement2 94.0
measurement3 1.19
这些attrValue在数据库中表示为字符串。
有没有办法将三个测量值保留在行模式,而将timeRecorded切换到列模式?如果不是,那么我的选择是什么?
这一切的重点是查询时间记录值,但我不能查询日期,因为它是字符串。
作为附注:让气象站在记录数据后立即发送数据(每15分钟发送一次)是不可能的,首先是因为我需要节省电池电量,更重要的是因为在post出现问题的情况下,它会立即发送所有记录。
发布于 2015-05-27 22:32:28
建议的解决方案是使用MySQL的STR_TO_DATE
函数,以便将存储的基于字符串的"timeRecorded“属性转换为实际的MySQL时间戳类型。
然而,由于OrionMySQLSink
的"timeRecorded“属性持久化模式,表中每4行就会出现一次"row”属性。在这种情况下,我认为您可以使用MySQL中的ROWNUM
关键字,以便仅获取每4行,类似于(不是MySQL专家):
SELECT STR_TO_DATE( attrValue, '%m/%d/%Y' ) FROM def_servpath_0004_weatherstation where (ROWNUM / 4 = 0);
这样,您就可以避免STR_TO-DATE
部件。
https://stackoverflow.com/questions/30398783
复制相似问题