Я использую postgres (RDS) для хранения данных временных рядов.Postgresql временной интервал
Скажем, мои данные выглядят следующим образом:
- метки времени: (индекс и ключевые раздела)
- Источник: Index Integer
- данных: Binary JSON содержит данные
timestamp | source | data ---------------------+----------+------------------ 2017-01-24 19:24:41 | 1 | { some jsonb } 2017-01-24 19:25:41 | 1 | { some jsonb } 2017-01-24 19:25:41 | 2 | { some jsonb } 2017-01-24 19:26:41 | 3 | { some jsonb } 2017-01-24 19:32:41 | 1 | { some jsonb } 2017-01-24 19:33:41 | 2 | { some jsonb } 2017-01-24 19:45:41 | 3 | { some jsonb } 2017-01-24 19:50:41 | 1 | { some jsonb } 2017-01-24 19:56:41 | 1 | { some jsonb } 2017-01-24 20:01:41 | 1 | { some jsonb }
Я бы хотел для сортировки данных по source
и для разделения данных по интервалу, скажем, на 15 минут. Я также хотел бы round
время разделения его на интервал.
До сих пор я получил
SELECT date_trunc('hour', timestamp) + date_part('minute', timestamp)::int/15 * interval '15 min' AS fifteen_minutes, data
FROM MY_TABLE
where source=1
GROUP BY data, fifteen_minutes
ORDER BY fifteen_minutes desc
Который возвращает
fifteen_minutes | source | data ---------------------+----------+------------------ 2017-01-24 19:15:00 | 1 | { some jsonb } 2017-01-24 19:15:00 | 1 | { some jsonb } 2017-01-24 19:30:00 | 1 | { some jsonb } 2017-01-24 19:45:00 | 1 | { some jsonb } 2017-01-24 19:45:00 | 1 | { some jsonb } 2017-01-24 20:00:00 | 1 | { some jsonb }
Вопрос заключается в том, что я все еще получаю несколько результатов для каждого интервала. Я хотел бы distinct
на интервале и получить наиболее близкое метку времени
В идеале я хотел бы получить: (один результат на интервал)
fifteen_minutes | source | data ---------------------+----------+------------------ 2017-01-24 19:15:00 | 1 | { some jsonb } 2017-01-24 19:30:00 | 1 | { some jsonb } 2017-01-24 19:45:00 | 1 | { some jsonb } 2017-01-24 20:00:00 | 1 | { some jsonb }
Любая лучшая идея? Спасибо!
Пожалуйста, пост ожидаемого вывода на основе приведенных выше данных – GurV
Для одного источника и любого 15-минутного ведра, как вы решить, какое значение из «данных» использовать? –
«ближайшее» значение для ex ' от '2017-01-24 19: 24: 41' или' 2017-01-24 19: 25: 41' => '19: 24: 41' ближе всех к 19: 15. В настоящее время код обрабатывает эту логику по карте, уменьшая результаты –