0

У меня возникли проблемы с непрерывными запросами в influxdb 0.8.8. Я пытаюсь создать непрерывный запрос, но кажется, что предложения where игнорируются. Я знаю об ограничениях, упомянутых здесь: http://influxdb.com/docs/v0.8/api/continuous_queries.html, но я не считаю, что это будет так.Непрерывные запросы в Influxdb, игнорирующие where where?

Одна строка временных рядов будет содержать такие данные:

{"hex":"06a0b6", "squawk":"3421", "flight":"QTR028 ", "lat":99.867630, "lon":66.447365, "validposition":1, "altitude":39000, "vert_rate":-64,"track":125, "validtrack":1,"speed":482, "messages":201, "seen":219} 

запросе я бегу и работает в следующем:

select * from flight_series where time > now() - 30m and flight !~ /^$/ and validtrack = 1 and validposition = 1; 

Тро это я пытаюсь взять в течение последних 30 минут с текущего времени убедитесь, что поле полета не является пробелом и что дорожка/позиция действительны. Запрос возвращает успешно, но когда я добавляю в

into filtered_log 

часть «где» пункт игнорируется.

Как создать непрерывный запрос, учитывающий вышеупомянутые условия? По крайней мере, как я могу извлечь с одним непрерывным запросом только строки, у которых действительный трек/заголовок установлен в 1, а полет не является пробелом/пустой строкой? Ограничение по времени, которое я мог бы исключить из запроса и перевести в удержание/продолжительность осколка.

Кроме того, могу ли я указать в непрерывном запросе сохранение данных в временной ряд, который находится в другой базе данных (которая имеет более расслабленную политику хранения/продолжительности)?

Спасибо!

Позже изменения:

мне удалось сделать что-то ближе к моей потребности с помощью следующей CQ:

"select time, sequence_number, altitude, vert_rate, messages, squawk, lon, lat, speed, hex, seen from current_flights where ((flight !~ /^$/) AND (validtrack = 1)) AND (validposition = 1) into flight.[flight]" 

Это создает серию для каждого «полета», даже для тех, которые имеют пробел в поле «полет», для которого требуется полет. серия построена.

Как я могу указать политики хранения/продолжительности для серий, генерируемых cq выше? Могу ли я сделать что-то вроде:

"spaces": [ 
    { 
     "name": "flight", 
     "retentionPolicy": "1h", 
     "shardDuration": "30m", 
     "regex": "/.*/", 
     "replicationFactor": 1, 
     "split": 1 
    }, 
... 

, который дал бы мне удержание 1 ч и длительность осколка 30 м?

Я немного смущен тем, где хранятся эти серии, в каком осколочном пространстве?

Спасибо!

PS: Моей конечной целью было бы следующее: Имейте «окно» 15-30 минут максимум при всех полетах, обрабатывайте некоторые данные из них, и после этого периода происходит сброс данных, но в то же время переместить/скопировать его в другую долгосрочную db/серию, которая может использоваться в исторических целях.

ответ

1

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

Я не считаю, что CQ в 0.8 требует агрегации в SELECT, но вам нужно иметь предложение GROUP BY, чтобы сообщить CQ, как часто запускать. Я не уверен, что бы вы сделали GROUP BY, возможно, flight?

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

EDIT: обновления для новых вопросов

Как я мог бы указать удержания/политики продолжительности для серии , порожденного выше сч?

В пространстве 0.8.x пространство, на которое распространяется серия, контролирует политику хранения. Регулярное выражение на пространстве осколков определяет, какие серии принадлежат этому осколку. Регулярное регулярное выражение shard оценивается от самого нового до самого старого, то есть первое созданное пространство shard будет оценено последним регулярным выражением. К сожалению, я знаю, можно ли создавать новые пространства осколков после того, как база данных существует. Смотрите это обсуждение в списке рассылки больше: https://groups.google.com/d/msgid/influxdb/ce3fc641-fbf2-4b39-9ce7-77e65c67ea24%40googlegroups.com

Могу ли я сделать что-то вроде:

"пространств": [ { "имя": "полет", "RetentionPolicy": «1 час », "shardDuration": "30м", "регулярное выражение": "/.*/", "replicationFactor": 1, "раскол": 1 }, ... который дал бы мне сохранение 1h и продолжительность осколка 30 м?

То осколок пространство будет иметь длительность осколка 30 минут, сохраняя данные в течение 1 часа, а это означает любую серию будет существовать только в трех осколках, ток горячей осколок, ток холодного осколок, и осколок ждут удалений ,

Регулярное выражение есть /. /, что означает, что это будет соответствовать любой серии, а не только «полет». серии. Возможно,/flight ../- лучшее регулярное выражение, если вы хотите только те серии, сгенерированные CQ в этом пространстве осколков.

+0

Благодарим вас beckettsean! См. Мое обновленное сообщение. – emmerich