#influxdb
#influxdb
Вопрос:
Я новичок в InfluxDB, пожалуйста, помогите мне с этим вопросом. Итак, вопрос
SELECT last(val1), last(val2) FROM powerandlevel where id='$id' and time>1606761000000000000 1d and time<1609093800000000000 1d group by time(1d, -60m-1s)
Я ударил по этому вышеуказанному запросу и получил такой результат
time last last_1
---- ---- ------
2020-11-30T22:59:59Z 92.6 91.4
2020-12-01T22:59:59Z 95.3 94.2
2020-12-02T22:59:59Z 97.7 96.6
2020-12-03T22:59:59Z 101 99.9
2020-12-04T22:59:59Z 103.1 102.1
2020-12-05T22:59:59Z 105.2 104.1
2020-12-06T22:59:59Z 108 106.9
2020-12-07T22:59:59Z 110.5 109.4
2020-12-08T22:59:59Z 113.1 112.1
2020-12-09T22:59:59Z 117.5 112.8
2020-12-10T22:59:59Z 122.4 112.8
2020-12-11T22:59:59Z 127.1 112.8
2020-12-12T22:59:59Z 131.4 112.8
2020-12-13T22:59:59Z 134.8 114.4
2020-12-14T22:59:59Z 137.4 117.1
2020-12-15T22:59:59Z 140.4 120
2020-12-16T22:59:59Z 143.7 123.2
2020-12-17T22:59:59Z 146.8 126.6
2020-12-18T22:59:59Z 149.6 129.2
2020-12-19T22:59:59Z 152.3 132
2020-12-20T22:59:59Z 155.3 135.1
2020-12-21T22:59:59Z 158.6 138.3
2020-12-22T22:59:59Z 161.4 141
2020-12-23T22:59:59Z 163.6 143.3
2020-12-24T22:59:59Z 165.7 145.4
2020-12-25T22:59:59Z 167.9 147.5
2020-12-26T22:59:59Z 171.4 151.1
2020-12-27T22:59:59Z 173.6 153.4
но когда я проверил свой результат с помощью этого запроса
SELECT val1, val2 FROM powerandlevel where id='$id' and time>'2020-12-26T22:59:59Z' limit 10
time val1 val2
---- ----- -----
2020-12-26T22:59:59.677Z 167.9 147.5
2020-12-26T23:00:00.678Z 167.9 147.5
2020-12-26T23:00:01.678Z 167.9 147.5
2020-12-26T23:00:02.679Z 167.9 147.5
2020-12-26T23:00:03.682Z 167.9 147.5
2020-12-26T23:00:04.681Z 167.9 147.5
2020-12-26T23:00:05.677Z 167.9 147.5
2020-12-26T23:00:06.676Z 167.9 147.5
2020-12-26T23:00:07.679Z 167.9 147.5
2020-12-26T23:00:08.677Z 167.9 147.5
теперь, если вы увидите время 2020-12-26T22:59:59 в обоих результатах, вы узнаете, что оба результата имеют разное значение во времени. Даже вы получаете это значение 2020-12-26T22:59:59.677Z 167.9 147.5 в первом результате за 2020-12-25T22:59:59Z. Я заметил, что данные моего запроса верны, но я получаю эти сгруппированные данные в первый раз, но я получаю последние данные за каждый день. Не могли бы вы рассказать мне, как получить последнее время, например, получить последнее значение данных из базы данных.
Заранее спасибо.
Ответ №1:
Вы можете получить последнее значение с LAST
помощью функции, но вы не можете получить временную метку этой последней записи — это не поддерживается, см. https://github.com/influxdata/influxdb/issues/5793
Кстати: group by time(1d)
генерирует одно значение в день, и у него будет время 00:00:00
. Но вы также применяете смещение -60m-1s
, чтобы время «перемещалось» обратно на предыдущий день ( 22:59:59
предыдущий день). Для меня это не имеет смысла.
Комментарии:
1. Спасибо за ответ. Дело в том, что данные, которые я сохранил в influx, находятся в формате UTC, поэтому, когда я получу данные оттуда, я преобразую их в местное время. Из-за этого мне нужно это смещение.
2. И то, что мне нужно. Не могли бы вы сказать мне, как получить последнюю временную метку этой конкретной записи, данные которой я извлекаю
3. @MdEnayat хорошо, я бы попытался использовать docs.influxdata.com/influxdb/v1.7/query_language / … в противном случае вам придется обновлять смещение при переходе на летнее время в этом часовом поясе
4. @MdEnayat как я уже сказал, вы не можете получить последнюю временную метку (только последнее значение! = временная метка) с помощью группировки по времени. Ваш единственный вариант — выбрать данные за определенный день, упорядочить по времени и ограничить 1 — так вы получите самую последнюю запись для этого дневного диапазона времени.
5. не могли бы вы предоставить мне запрос для этого заказа по времени и ограничению 1. это будет полезно, еще раз спасибо.