2016-07-06 4 views
0

Я хотел бы некоторую помощь modelize моей проблемы в Esper:Cumulocity/Esper: Совокупный весь день/неделю/измерение месяца каждый день/неделю/месяц

Я создаю ИЗМЕРЕНИЕ несколько раз в день, в конце каждый день я хотел бы объединить все измерения этого типа, сгруппированные по источнику, созданному в этот день, и сделать подсчет и сумму и повторно ввести это в новые измерения. Я бы сделал то же самое в конце недели и в конце месяца.

Проблема в том, что я не знаю, как совместить выражение cron (например, каждый день в полночь), временное окно (чтобы сказать, что я хочу все событие прошедшего дня) и поток событий (до выберите измерения типа, который я хочу).

Спасибо за понимание.

ответ

0

Лучший подход, я думаю, является определение контекста для длительностей, как это:

create context DailyMeasurementAggregation 
    context DailySourcePartition 
    partition by measurement.source.value from MeasurementCreated, 
    context DailyTimerPartition 
    start (0,0,*,*,*,0) 
    end (59,23,*,*,*,59); 


context DailyMeasurementAggregation 
select 
    count(m) as count, 
    sum(getNumber(m, "myMeasurement.M.value")) as sum 
from MeasurementCreated m 
where getObject(m, "myMeasurement.M") is not null 
output last when terminated; 

Синтаксис хрон для других диапазонов будет выглядеть так: еженедельно: начало (0,0, ,, 0,0) конец (59,23, ,, 6,59) в месяц: начало (0,0,1, ,, 0) конец (59,23, наконец, ,, 59)

Еженедельный это воскресенье до субботы, поэтому, возможно, вам нужно настроить цифры. Вот часть документации esper о синтаксисе cron: http://www.espertech.com/esper/release-5.2.0/esper-reference/html/event_patterns.html#pattern-timer-at

Я попытался сделать что-то вроде конца через 1 день, но это, похоже, не сработает, потому что тогда есть контекст только через день. Вот почему я закончил контекст на 1 секунду раньше.

+0

Здравствуйте, TyrManuZ, спасибо за ваш ответ еще раз. Я подумал об этом, единственная проблема, с которой я столкнулся, заключается в том, что в случае перезагрузки сервера все данные в контексте будут потеряны, и поскольку у меня будет довольно длинный контекст (месяц), я думаю, что риск для него может быть слишком высоким. –

+0

Cumulocity скоро поддержит esperha, которая восстановит состояние таких операторов после перезапуска сервера. Это решило бы проблему. – TyrManuZ

+0

Только другая опция - запускать на 'pattern [каждый таймер: at (0,0, *, *, *, 0)]' и использовать функции для запроса всех данных из базы данных, а затем вычислять значения – TyrManuZ

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