Я графический с графана (2.6.0) и у меня есть база данных InfluxDB (0.10.2) со следующими данными в нем:график InfluxDB и графана используя полночь как 0 на Y-оси производной
> select * from "WattmeterMainskwh" where time > now() - 5m
name: WattmeterMainskwh
-----------------------
time value
1457579891000000000 15529.322
1457579956000000000 15529.411
1457580011000000000 15529.425
1457580072000000000 15529.460
1457580135000000000 15529.476
...etc...
Эти данные собирают мое семейное потребление киловатт, измеренное с помощью шкалы кВтч, которая постоянно увеличивает стоимость использования в течение нескольких месяцев или лет. Я не могу с легкостью сбросить счетчик и не хочу этого делать.
Моя цель - создать график, который показывает мое ежедневное использование кВт-ч в течение 24-часовых периодов, начиная с полуночи, или, как минимум, показывая относительный кВт-ч в течение отображаемого интервала. Этот тип графиков был бы полезен и во многих других случаях, где я мог бы представить себе «ошибки в течение дня» или «посетители с момента открытия» или «Сброс BGP за календарную неделю», но счетчик сбора не был сброшен до нуля при сбросе или перерыве интервала времени. Такой подсчет на самом деле довольно распространен в моем опыте.
Этот график работы, но не показывает мне, что я ищу:
SELECT derivative(mean("value")) FROM "WattmeterMainskwh" WHERE $timeFilter GROUP BY time($interval) fill(null)
что граф просто показывает разницу между одной пробы и в предыдущем примере. То, что я хочу, - это постоянно увеличивающаяся линия, начинающаяся с левой стороны графика и возрастающая к правой стороне графика, с нулем в качестве нижней части оси Y и график, начинающийся с нуля при самом дальнем левом значении Х.
Этот график также работает и показывает мне правильную кривую, но она выключена на пятнадцать тысяч или около того. Пока это самое близкое к тому, что я хочу, но поскольку это постоянно увеличивающийся счетчик, который нельзя сбросить, мне нужно вычесть часть из оси Y. В идеале, я хотел бы вычесть все, что было в предыдущей полуночи из каждого образца, чтобы получить относительное число, основанное на дне, а не на абсолютной основе на все время.
SELECT sum("value") FROM "WattmeterMainskwh" WHERE $timeFilter GROUP BY time($interval) fill(null)
И вот граф из этого предыдущего заявления:
Эта попытка не работает - я, видимо, не может взять сумму производной группы:
SELECT sum(derivative(mean("value"))) FROM "WattmeterMainskwh" WHERE $timeFilter GROUP BY time($interval) fill(null)
Это тоже не работает - я не могу выполнять функции внутри «производного»:
SELECT derivative(sum("value")-first("value")) FROM "WattmeterMainskwh" WHERE $timeFilter GROUP BY time($interval) fill(null)
Конечно, я мог бы просто создать новое значение, в котором были применены вычисления, прежде чем я его ввел в InfluxDB, но это кажется мне излишним и небрежным способом решения этой проблемы, а также будучи довольно негибким, если я хочу посмотреть на другие интервалы по прихоти. Я надеюсь, что есть какой-то способ сделать это более элегантно в комбинации InfluxDB & Grafana, но я просто не могу найти его с условиями поиска, которые я использовал, или мышлением, которое я поставил для интерпретации документация.
Возможно ли использовать этот тип графиков с помощью InfluxDB/Grafana? Насколько я могу судить, непрерывный запрос не является решением, а отсутствие вложенных SELECT делает даже хакерские способы сделать это не очевидным для меня.
БОНУС: Было бы здорово, чтобы график показывался полночь каждую ночь в качестве «нулевого» местоположения, вместо «нуля», являющегося первой точкой отображаемого интервала, поэтому, глядя на пять дней обычных данных, пять различных «волн» увеличения ежедневного использования совокупной энергии, при этом значение волны Y возвращается к нулю в 12:00:01 в каждый день. Но я возьму все, что смогу.
ОК, я получил это ранее, а затем отказался от CQ из-за отсутствия возможности выполнить вложенный запрос для перезапуска моих счетчиков. Как заставить производную CQ использовать значение с предыдущей полуночи как «ноль»? –
Похоже, вам нужно что-то большее, чем то, что доступно в функциях InfluxQL по умолчанию. [Kapacitor] (https://influxdata.com/time-series-platform/kapacitor/) является инструментом обработки потока в стеке TICK и поддерживает произвольные [пользовательские функции] (https://docs.influxdata.com /kapacitor/v0.10/nodes/u_d_f_node/). – beckettsean