#postgresql #grafana
#postgresql #графана
Вопрос:
Структуры в разных точках мира работают посменно, и я хочу выполнять вычисления за смену, но у меня проблема — временные метки. Я их не понимаю.
в БД они находятся в UTC
в графане по местному времени / времени браузера
первая смена начинается с 05:00 до 13:00 по местному времени
, вторая смена начинается с 13:00 до 21:00 по местному времени
Я бы не знал смещения от UTC, поэтому я могу вручную переместить время начала и окончания смены.
Я думаю, что это может помочь мне добиться агрегации по сдвигу, если я присвою номер сдвига строке. В этом случае я хочу сделать, это взять смещение от UTC из настройки времени браузера в фильтре времени графаны.
мой подход, который вызвал у меня проблему:
WITH base AS (
SELECT "Timestamp" AS time,
extract('hour' FROM to_timestamp("Timestamp"/1000)) AS h,
[some_metric]
FROM [table]
WHERE $__unixEpochFilter("Timestamp"/1000)
), shifts AS (
SELECT *,
CASE
WHEN (h >= 5 AND h < 13 ) THEN 1
WHEN (h = 13 AND h >= 21) THEN 2
ELSE 3
END AS shift_nr
FROM base
)
-- what I want to be able to do in the end
SELECT shift_nr, avg([some_metric])
FROM shifts
GROUP BY shift_nr
как вы можете видеть из вывода intermediate ( select * from shifts
)
время столбца в порядке — после настроек часового пояса grafana — время браузера
столбец h сам по себе в порядке, потому что он отражает UTC в БД, но это не то, что я хочу. Я хочу извлечь час из столбца времени, но независимо от того, как я переписываю запрос, я всегда извлекаю время UTC.
столбец shift_nr не в порядке — он должен указывать сдвиг 1 вместо 3
Это единственный подход, который я смог придумать. Скорее всего, есть более простой способ — я прочитал много потоков, и ни один из них, похоже, не подходит / не подходит для меня.
Если вы думаете о другом подходе — пожалуйста, просветите меня!
Если вы знаете, как я мог бы присвоить номер сдвига строке на основе начала сдвига (05h, 13h) и окончания (13h, 22h) в соответствующее местное время, когда временная метка в БД сохраняется в UTC, но настройки времени в графане соответствуют времени браузера — пожалуйста, скажите.
Любая помощьприветствуется! Спасибо!
Комментарии:
1. » Я бы не знал смещения от UTC » — это, похоже, актуальная проблема. Для любого решения вы должны знать часовой пояс конкретной фабрики. Обойти это невозможно.
2. Я понимаю. У меня также есть подозрения, что слишком хочется, чтобы был способ извлечь часовой пояс из браузера через postgresql в графане. Спасибо за письмо! 🙂