我想一些幫助來模型化在艾斯波我的問題一個月的測量:Cumulocity /艾斯波:聚合所有天/周/每天/每週/每月
創建測量在一天內多次,在結束每天,我想彙總所有這種類型的測量數據,按當天創建的數據源進行分組,然後進行計數和求和,然後重新注入新的測量數據。我會在本週結束時和本月底做同樣的事情。
問題是我不知道如何將cron表達式(例如每天午夜說),時間窗口(說我想要過去一天的所有事件)和事件流(to選擇我想要的類型的測量值)。
感謝您的洞察力。我認爲
我想一些幫助來模型化在艾斯波我的問題一個月的測量:Cumulocity /艾斯波:聚合所有天/周/每天/每週/每月
創建測量在一天內多次,在結束每天,我想彙總所有這種類型的測量數據,按當天創建的數據源進行分組,然後進行計數和求和,然後重新注入新的測量數據。我會在本週結束時和本月底做同樣的事情。
問題是我不知道如何將cron表達式(例如每天午夜說),時間窗口(說我想要過去一天的所有事件)和事件流(to選擇我想要的類型的測量值)。
感謝您的洞察力。我認爲
最好的方法是定義一個上下文這樣的持續時間:
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;
的其他範圍的cron的語法是這樣的: 週刊:啓動(0,0,,, 0,0)結束(59,23,,,6,59) 月:開始(0,0,1,,,0)結束(59,23,最後,,,59)
本週刊是週日到週六,所以你可能需要調整數字。以下是關於cron語法的esper文檔中的一部分:http://www.espertech.com/esper/release-5.2.0/esper-reference/html/event_patterns.html#pattern-timer-at
我試圖在1天后做一些類似於結束的事情,但這看起來不起作用,因爲那麼每隔一天只有一個上下文。這就是爲什麼我在1秒前結束了上下文。
您好TyrManuZ,再次感謝您的回答。我想到了這一點,這個想法唯一的問題是,在重啓服務器的情況下,上下文中的所有數據都將丟失,並且由於我的上下文很長(一個月),我認爲它發生的風險可能太高。 –
Cumulocity即將支持esperha,它將在服務器重新啓動後恢復此類語句的狀態。這將解決問題。 – TyrManuZ
只有其他選項是在'pattern [每個定時器:在(0,0,*,*,*,0)]上觸發'並使用函數從數據庫查詢整個數據,然後計算值 – TyrManuZ