MySQL объединяет один запрос в другой для использования в Grafana - PullRequest
0 голосов
/ 19 октября 2018

Я запускаю экземпляр Openhab2 и собираю данные, а также временные метки для важных изменений в сборе данных.Внутри моей таблицы item45 я храню 2 столбца Time and Value, который выглядит следующим образом.

TABLE (item45) Дизайн Скриншот 1 Скриншот 2

Time (datetime,primary) Value (datetime)
...                     ...
2018-10-17 03:08:30     2018-10-17 03:08:30
2018-10-19 00:13:13     2018-10-19 00:13:13
2018-10-19 00:27:58     2018-10-19 00:27:57

Это своего рода дизайн того, как Openhab хранит данные, поэтому я ничего не могу с этим поделать.теперь я пытаюсь использовать эти значения в Grafana так же, как эти:

Пример успешного использования

Моя проблема лежит в Grafana im, использующем для построения запросов.Он отключает графики, если следующая более старая точка находится вне области просмотра.Я пытался справиться с этим с помощью виртуального заполнения пробелов в данных внутри запроса.Например:

Используемый в настоящее время запрос

SELECT 
1 as value,
'Net Reset' as metric,
UNIX_TIMESTAMP(v.gen_date) AS time_sec
from 
  (select DATE_SUB( FROM_UNIXTIME(1539707286), INTERVAL t3*1000 + t2*100 + t1*10 + t0  HOUR) gen_date from
              (select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0
   CROSS JOIN (select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1
   CROSS JOIN (select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2
   CROSS JOIN (select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3
   ) v
LEFT JOIN item45
    ON DATE_FORMAT( Time, '%Y-%m-%dT%H:00:00') = v.gen_date
where $__timeFilter(v.gen_date)
ORDER BY v.gen_date DESC;

КАК вы можете видеть, как я использую одно из заданных здесь "хаков" для генерации почасовых заполняющих данных, которые просто установлены в единицы.

Мне нужна помощь для реализации этого запроса:

Запрос на замену FROM_UNIXTIME (...)

SELECT * FROM item45 ORDER BY Time DESC LIMIT 1

на запрос 1, где FROM_UNIXTIME(1539707286) для установки фактической остановки заполнения будущих данных.

Я работаю на MySQL57-сервере и в настоящее время не могу выполнить обновление до версии 8, чтобы использовать предложение with.

Желаемый вывод

Time                    Value
2018-10-18 21:00:00     1 <- Inserted
2018-10-18 22:00:00     1 <- Inserted
2018-10-18 23:00:00     1 <- Inserted
2018-10-19 00:00:00     1 <- Inserted
2018-10-19 00:13:13     1
2018-10-19 00:27:58     1
...