Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 3, 2014 20:50:45

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlalchemy groub by c блоками по времени

Например ведется лог температуры в такую таблицу

table = Table('data', metadata,
              Column('id', Integer, primary_key=True, index=True),
              Column('created', TIMESTAMP, index=True),
              Column('temperature', Float))
Как из нее извлечь среднюю температуру блоками по времени, вот так:
От        До   Средняя температура
11.00   11.10   15.3
11.10   11.20   13.1
11.20   11.30   13.5
То что нужно использовать group_by() понятно, но как сделать разбиение по группах не могу понять.
Вот этим кодом (он не рабочей) хочу создать поле t_from которое будет округлять данные кратные периоду группировки (600 секунд или 10 минут).
time_step = 600
period_from = ...
perion_to = ...
 t_step = (datetime.datetime.min + datetime.timedelta(seconds=time_step)).time()  # convert seconds <type 'int'> to <type 'datetime.time'>
t_from = (((table.c.created - period_from)/t_step)*t_step + table.c.created).label('t_from')
table.select([t_from, table.c.temperature]).where(created.c.created.between(period_from, perion_to))
Как правильно сделать? Может кто подсказку даст?

Отредактировано agryn (Окт. 3, 2014 20:52:49)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version