powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выборка с прореживанием по дате
3 сообщений из 3, страница 1 из 1
Выборка с прореживанием по дате
    #38941092
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.

суть задачи - "проредить" данные, записанные в таблицу с нужным интервалом времени "прореживания" (например 10 мин).
(есть поле data_date timestamp)

в таблицу пишутся данные от датчика (ретроспективно). Может писаться неравномерно по времени - например за час может быть 10 значений, а может и не быть вовсе, а потом и все 100 значений за следующий час..

Нужно выбрать данные за некоторый период, но не все - а скажем чтобы каждая последующая запись была не менее чем через ХХ минут от предыдущей.

Как сделать это шустрее и чтобы итоговые результаты запроса были максимально на равные промежутки времени разнесены?
т.е. скажем промежуток времени между соседними записями был максимально близок к указанному интервалу (10 мин например).
(в таблице несколько миллионов записей и их число постоянно растет)
...
Рейтинг: 0 / 0
Выборка с прореживанием по дате
    #38941161
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twistfireмаксимально на равные промежутки времени разнесеныЕсли исходить из оптимальной минимизации ско по скользящей сетке, то эта задача на миллионах быстро не решается.
Исходить из жесткости критерия "не меньше", то здесь упрощенный start of group через оконные функции или рекурсию.
Более тривиальное, но при достаточной частоте событий малоотклоняющееся от оптимума решение - элементарная группировка по округлению к десяти минутам.
...
Рейтинг: 0 / 0
Выборка с прореживанием по дате
    #38942520
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Как сделать это шустрее
При наличии индекса по data_date попробуйте идею Быстрый подсчет distinct values по индексированным полям , Loose indexscan . Только вам нужно будет заменить условие "WHERE col > t.col" на "WHERE col > t.col + ХХ минут".

> чтобы итоговые результаты запроса были максимально на равные промежутки времени разнесены
А вот с этим вижу проблему. Разные комбинации выбираемых точек придется проверить. Какая из них "максимально равно разнесенная". Кстати, что это формально означает.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выборка с прореживанием по дате
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]