具有随机时间点的Influxdb派生

时间:2016-01-31 18:42:14

标签: difference derivative influxdb

我有一些随机时间分隔点的值,我希望每一行与它的前一行之间存在差异:

time                    name    value
1440972000000000000     Froid   328
1443736800000000000     Froid   332
1444687200000000000     Froid   333
1445900400000000000     Froid   335
1447110000000000000     Froid   336
1447974000000000000     Froid   337
1448578800000000000     Froid   337.9
1449097200000000000     Froid   338.4
1449702000000000000     Froid   338.7
1450825200000000000     Froid   339.8
1452985200000000000     Froid   341.4
1454194800000000000     Froid   342.4

我想我应该使用衍生函数,但我从来没有正确的单位或价值。

例如:SELECT衍生物(值)FROM water其中" name" =' Froid'

name: water
-----------
time                    derivative
1443736800000000000     1.4467592592592592e-06
1444687200000000000     1.0521885521885521e-06
1445900400000000000     1.6485328058028355e-06
1447110000000000000     8.267195767195768e-07
1447974000000000000     1.1574074074074074e-06
1448578800000000000     1.4880952380952004e-06
1449097200000000000     9.645061728395062e-07
1449702000000000000     4.960317460317649e-07
1450825200000000000     9.793447293447496e-07
1452985200000000000     7.40740740740725e-07
1454194800000000000     8.267195767195768e-07

我想要像:

1443736800000000000     4  # (332 - 328)
1444687200000000000     1  # (333 - 332)
1445900400000000000     2  # (335 - 333)
[...]

我不知道如何处理这个结果。

2 个答案:

答案 0 :(得分:1)

DERIVATIVE是你想要的,但默认情况下它会给出每秒的变化率。您需要每个时间间隔而不是每秒的变化率,因此您需要指定计算速率的时间间隔。您的积分是2764800秒,因此您的查询应为SELECT derivative(value, 2764800) FROM water where "name" = 'Froid'

答案 1 :(得分:0)

我认为DERIVATIVE可能不符合您的想法。另一方面,DIFFERENCE可能是您正在寻找的内容,但它似乎是not implemented yet ..

然而,您可以将continuous queriesLAST结合使用,直到实现DIFFERENCE为止。然而,这有点hacky并且CQ执行的间隔可能需要与您的积分进入的速率相同。

另一种解决方案是简单地获取数据库中的内容,然后在应用程序内部进行计算,这是一种内存中的方法。如果你没有一次获得太多积分,那么它就不应该成为一个问题。