2016-07-06 135 views
0

我想一些幫助來模型化在艾斯波我的問題一個月的測量:Cumulocity /艾斯波:聚合所有天/周/每天/每週/每月

創建測量在一天內多次,在結束每天,我想彙總所有這種類型的測量數據,按當天創建的數據源進行分組,然後進行計數和求和,然後重新注入新的測量數據。我會在本週結束時和本月底做同樣的事情。

問題是我不知道如何將cron表達式(例如每天午夜說),時間窗口(說我想要過去一天的所有事件)和事件流(to選擇我想要的類型的測量值)。

感謝您的洞察力。我認爲

回答

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; 

的其他範圍的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秒前結束了上下文。

+0

您好TyrManuZ,再次感謝您的回答。我想到了這一點,這個想法唯一的問題是,在重啓服務器的情況下,上下文中的所有數據都將丟失,並且由於我的上下文很長(一個月),我認爲它發生的風險可能太高。 –

+0

Cumulocity即將支持esperha,它將在服務器重新啓動後恢復此類語句的狀態。這將解決問題。 – TyrManuZ

+0

只有其他選項是在'pattern [每個定時器:在(0,0,*,*,*,0)]上觸發'並使用函數從數據庫查詢整個數據,然後計算值 – TyrManuZ

相關問題