2015-05-15 6 views
2

Я хотел бы группировать и оценивать динамические интервалы времени. Аналогичный вопрос: Grouping into interval of 5 minutes within a time range.RethinkDB - Как группировать по агрегированным временным интервалам

Прямо сейчас, я использую запрос:

r.db('windMachine').table('stats3') 
    .between(r.time(2015, 5, 7, 18, 0, 0, "Z"), r.time(2015, 5, 7, 24, 0, 0, "Z"), {index: "date"}) 
    .group([r.row("date").hours(), r.row("date").minutes()]) 
    .avg("TMP0") 

Который возвращает:

[ 
    { 
    "group": [ 
     21, 
     2 
    ], 
    "reduction": 22.802153846153846 
    }, 
    { 
    "group": [ 
     21, 
     3 
    ], 
    "reduction": 22.6628 
    }, 
    { 
    "group": [ 
     21, 
     4 
    ], 
    "reduction": 22.384324324324318 
    } 
] 

Я хотел бы, чтобы группа это дальше, вниз, в 5 минут (или другие) промежутки времени. Каков наилучший способ сделать это?

ответ

2

Я действительно встречался с подобной проблемой, и вот что я сделал:

.group(r.row('date').toEpochTime().sub(r.row('date').toEpochTime().mod(<INTERVAL_IN_SECONDS>)) 

Что это сделать, это время группы по <INTERVAL_IN_SECONDS>

Я не знаю, если это лучший способ для но это работает для меня.

+0

Это работает и для меня, спасибо! Интересно, хотя это самый эффективный способ сделать это. –

+0

RethinkDB в настоящее время не поддерживает 'floor' и' ceil', поэтому я думаю, что это лучшее, что я могу получить. – Codinfox

+0

RethinkDB теперь поддерживает «пол», который вам нужно будет усекать десятичные знаки в эпоху. –

Смежные вопросы