如何平衡天鹅座中的行模式和列模式?

时间:2015-05-22 14:02:38

标签: fiware fiware-orion fiware-cygnus

我有一个每小时传输数据的气象站。在那个小时内,它进行了四次录音(每15分钟一次)。在我目前的情况下,我使用attr_persistence=row将数据存储在MySql数据库中。

使用行模式,我得到默认生成的列:

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分钟一次)是不可能的,首先是因为我需要节省电池电量,更重要的是因为在出现问题时有了帖子,它会立刻发送所有录音。

因此,如果整整一天没有发送任何数据,气象站将立即发送所有24 * 4读数......

1 个答案:

答案 0 :(得分:1)

建议的解决方案是使用MySQL的body { font-family: 'Roboto',Arial,sans-serif; color: #4B8A4B; background-color: #001900; } [main] paper-toolbar { background-color: #004C00; color: #001900; } [drawer] a { width: 100%; } [drawer] paper-toolbar { height: 265px; } [drawer] paper-toolbar div { overflow: hidden; position: relative; } #content { padding-left: 15px; padding-right: 15px; } [drawer] { border-right: thin #000 inset; -moz-border-right-colors: #000; background: #001900; } 函数,以便将存储的基于字符串的“timeRecorded”属性转换为真正的MySQL时间戳类型。

然而,由于STR_TO_DATE的“行”属性持久性模式,表中每4行会出现“timeRecorded”属性。在这种情况下,我认为您可以使用MySQL中的OrionMySQLSink关键字,以便只获得每4行,例如(不是MySQL专家):

ROWNUM

另一种方法是转到“列”模式(在这种情况下,你必须自己配置de table)。通过使用此模式,您将拥有一个包含所有4个属性的行,其中一个属性是“timeRecorded”属性。在这种情况下,您可以通过直接将“timeRecorded”列的类型指定为Timestamp而不是Text来配置表。这样,您将避免使用SELECT STR_TO_DATE( attrValue, '%m/%d/%Y' ) FROM def_servpath_0004_weatherstation where (ROWNUM / 4 = 0); 部分。