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