2015-06-30 2 views
1

Я хотел бы написать баллы в базу данных притока 0.8 со значениями времени, указанными в секундах через HTTP. Вот точка выборки в формате JSON:Как записывать точки в influxdb 0.8 со временем в секундах

[ 
    { 
     "points": [ 
      [ 
       1435692857.0, 
       897 
      ] 
     ], 
     "name": "some_series", 
     "columns": [ 
      "time", 
      "value" 
     ] 
    } 
] 

документации неясно, что формат значения времени должно быть и как указать influxdb чего ожидать (нано или милли секунд?). В настоящее время я использую параметр запроса: precision=s

Это похоже на работу, сервер возвращает код состояния HTTP 200, как ожидалось. При обращении к базе данных с использованием интерфейса администрирования infux с помощью select * from some_series, данные в таблице возвращаются с ожидаемой меткой времени. На графике, однако, ось времени индексируется с долями секунд, и запросы, подобные select * from some_series where time > now() - 1h, не дают никаких результатов.

Я предполагаю, что что-то не так со временными метками. Я попытался умножить свое значение на 1000, но затем ничего не вставляется в базу данных без видимых ошибок.

В чем проблема?

ответ

0

Я нашел решение! Проблема была лишь частично с точностью. Ваш ответ был прав, параметр запроса называется time_precision, и я должен отправлять целые числа вместо поплавков. Который был, вероятно, первым, что я пытался без результатов ...

Однако из-за некоторых проблем с часовыми поясами, мои значения времени, где в будущем относительно времени сервера и по умолчанию, любой оператор выбора включает в себя where time < now() заявление. Таким образом, на самом деле значения были записаны в базу данных, но не отображаются из-за скрытого оператора where. Решение заключалось в том, чтобы сообщить базе данных о возврате «будущих» значений:

select value from some_series where time < now() + 1h 
+0

Если ответ выше, вы должны отметить его как принятый ответ :) – petersv

1

По умолчанию поставленные временные метки считаются в миллисекундах. Я думаю, что ваши записи по умолчанию равны миллисекундам, потому что параметр строки запроса должен быть time_precision=s, а не precision=s.

Подробнее см. В разделе «Точность времени на письменных данных» на https://influxdb.com/docs/v0.8/api/reading_and_writing_data.html.

Я также считаю, что значение time должно быть целым числом, а не плавающим. Я не уверен, как объяснить другие поведения, когда временная метка кажется правильной датой и умножение на 1000 не решает проблему, но мне интересно, связано ли это с написанием поплавков.

Для получения дополнительной помощи свяжитесь с командой поддержки InfluxDB по электронной почте [email protected]