Как выбрать данные с минимальным временным интервалом между результатами - PullRequest
0 голосов
/ 29 января 2020

Я не уверен, как лучше задать этот вопрос. Я ищу данные, но с минимальным интервалом времени между результатами. Например:

Это измерение:

time                    field     
2015-08-18T00:00:00Z    12            
2015-08-18T00:00:00Z    1             
2015-08-18T00:06:00Z    11           
2015-08-18T00:06:00Z    3            
2015-08-18T05:54:00Z    2             
2015-08-18T06:00:00Z    1             
2015-08-18T06:06:00Z    8
2015-08-18T06:12:00Z    7

Этот запрос:

select sum(*) from measurement where field > 0 вернет сумму всех строк. Я хотел бы иметь возможность указать минимальный интервал между результатами и совпадать только в первой строке в наборе строго синхронизированных строк. Ex. Минимальный 8-минутный интервал будет соответствовать только этим строкам (и приведет к сумме 22):

time                    field     
2015-08-18T00:00:00Z    12                    
2015-08-18T05:54:00Z    2                     
2015-08-18T06:06:00Z    8

Есть ли способ получить ожидаемый результат от influenxdb?

Единственная альтернатива, которую я могу придумать, - это просто вернуть все строки без агрегатной функции sum (), а затем l oop через результаты и выполнить много сравнений времени или математических вычислений в моем приложении.

1 Ответ

0 голосов
/ 29 января 2020

Вероятно, не с InfluxQL. InfluxQL имеет функцию elapsed, которая возвращает время, прошедшее между последовательными точками данных https://docs.influxdata.com/influxdb/v1.7/query_language/functions/#elapsed
Возможно, это единственная функция, которая имеет отношение ко времени, но я не могу придумать, как применить это то, что вам нужно.

Возможно, вам повезет больше с функцией window Flux https://v2.docs.influxdata.com/v2.0/query-data/guides/window-aggregate/ Я недостаточно знаком, чтобы сказать, как, если это вообще возможно.

Выполнение этого в вашем приложении может быть способом go.

...