Что эквивалентно SELECT first (столбец), last (столбец) в языке запросов Flux?

Что было бы эквивалентными запросами потока для

SELECT first(column) as first, last(column) as last FROM measurement ?

SELECT last(column) - first(column) as column FROM measurement ?

(Я имею в виду FluxQL, новый язык запросов, разработанный InfluxData)

Существуют функции first () и last (), но я не могу найти пример для использования обеих в одном запросе.

Это документация по FluxQL для лучшего ознакомления:

https://docs.influxdata.com/flux/v0.50/introduction/getting-started

https://v2.docs.influxdata.com/v2.0/query-data/get-started/


person Malik Rizwan    schedule 23.08.2020    source источник


Ответы (1)


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

Функция spread () выводит разницу между минимальным и максимальным значениями в указанном столбце.

Однако вы запрашиваете разницу между первым и последним значениями в потоке, и, похоже, для этого нет встроенной функции (вероятно, потому, что ожидается, что большинство потоков будут динамическими в диапазоне). Для этого вы можете написать собственную функцию агрегатора, как в аналогичном ответе. Или вы можете объединить два запроса вместе, а затем почувствовать разницу:

data = from(bucket: "example-bucket") |> range(start: -1d) |> filter(fn: (r) => r._field == "field-you-need")

temp_earlier_number = data |> first() |> set(key: "_field", value: "delta")
temp_later_number = data |> last() |> set(key: "_field", value: "delta")

union(tables: [temp_later_number, temp_earlier_number])
  |> difference()

Это создает две таблицы с полем с именем delta, а затем объединяет их вместе, в результате чего получается таблица с двумя строками: одна представляет первое значение, а другая - последнее. Затем мы берем разницу между этими двумя строками. Если вам не нужны отрицательные числа, просто вычтите их в правильном порядке (или используйте math.abs).

person gMale    schedule 03.12.2020
comment
Распространение решит проблему для Max-Min, но не в последнюю очередь - сначала я попробую настраиваемую логику и обновлю здесь. - person Malik Rizwan; 03.12.2020