2016-01-31 9 views
1

У меня есть какое-то значение со случайными временными отделенными точками и я хотел бы разницу между каждой строкой с его предыдущей строка: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 воды, где "имя" = 'Фройд'

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) 
[...] 

Я понятия не имею, что делать, чтобы иметь этот результат.

ответ

0

Я думаю, DERIVATIVE может быть не так, как вы думаете. DIFFERENCE мощи с другой стороны, будет то, что вы ищете, но мне кажется, что это not implemented yet ..

Вы могли бы, вероятно, однако использовать continuous queries в сочетании с LAST для достижения этой цели, пока РАЗНИЦА не получает реализована. Однако это немного взломано, и интервал выполнения CQ, вероятно, должен быть таким же, как и скорость, с которой ваши точки поступают.

Другим решением было бы просто получить то, что у вас есть в БД, а затем сделать расчет внутри вашего приложения, вид подхода в памяти. Если у вас слишком много очков, которые вы получаете сразу, это не должно быть проблемой.

+1

Спасибо за это объяснение. В качестве обходного пути я заполнил базу данных средним значением между двумя точками, чтобы иметь одинаковый временной интервал между каждой точкой. – Maxux

1

DERIVATIVE - это то, что вы хотите, но по умолчанию оно дает скорость изменения в секунду. Вы хотите скорость изменения за интервал, а не за секунду, поэтому вам нужно указать временной интервал, по которому рассчитывается ставка. Ваши баллы 2764800 секунд друг от друга, поэтому ваш запрос должен быть SELECT derivative(value, 2764800) FROM water where "name" = 'Froid'

Смежные вопросы