2016-07-06 13 views
0

私はエスパーに私の問題をmodelizeするいくつかの助けが欲しい:Cumulocity /エスパー:集計すべての日/週/月の測定毎日/週/月

私はの終わりには、測定を複数回日を作成毎日、このタイプのすべての測定値を集計し、その日に作成されたソース別にグループ化し、合計と合計を計算して新しい測定値に再注入したいと思います。私は週末と月末に同じことをするでしょう。

問題cron式(毎日真夜中など)と時間ウィンドウ(過去1日のすべてのイベントが必要)とイベントストリーム(私が望むタイプの測定値を選択してください)。

あなたの洞察に感謝します。私が思う

答えて

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の構文に関するエパードキュメントの一部です:http://www.espertech.com/esper/release-5.2.0/esper-reference/html/event_patterns.html#pattern-timer-at 私は1日後に終わりのようなことをしようとしましたが、これは1日おきのコンテキストしかないので動作しないようです。それで私は文脈を1秒早く終了させたのです。

+0

こんにちはTyrManuZ、もう一度お返事ありがとうございます。私はそれについて考えました。私が考えている唯一の問題は、サーバーを再起動した場合、コンテキスト内のすべてのデータが失われてしまい、かなり長い文脈(1か月)があるためです。それが起こるリスクが高すぎる可能性があります。 –

+0

Cumulocityはまもなくサーバーの再起動後にそのようなステートメントの状態を復元するesperhaをサポートします。これは問題を解決するだろう。 – TyrManuZ

+0

他のオプションは 'pattern [every timer:at(0、*、*、*、0)]'でトリガーし、データベースからデータ全体を照会して値を計算する関数を使用することだけです – TyrManuZ

関連する問題