最善のアプローチは、このような期間のコンテキストを定義している:
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秒早く終了させたのです。
こんにちはTyrManuZ、もう一度お返事ありがとうございます。私はそれについて考えました。私が考えている唯一の問題は、サーバーを再起動した場合、コンテキスト内のすべてのデータが失われてしまい、かなり長い文脈(1か月)があるためです。それが起こるリスクが高すぎる可能性があります。 –
Cumulocityはまもなくサーバーの再起動後にそのようなステートメントの状態を復元するesperhaをサポートします。これは問題を解決するだろう。 – TyrManuZ
他のオプションは 'pattern [every timer:at(0、*、*、*、0)]'でトリガーし、データベースからデータ全体を照会して値を計算する関数を使用することだけです – TyrManuZ