我有一個非常簡單的問題來建模,我沒有Esper的經驗,所以我可能會錯誤的方式,所以我想一些見解。Esper非常簡單的上下文和彙總
這裏是場景:我有一個事件流「ParkingEvent」,有兩種類型的事件「SpotTaken」和「SpotFree」。因此,我有一個Esper 上下文,它們都是由id分隔的,並以「SpotTaken」類型的開始事件和「SpotFree」類型的結束事件爲邊界。這個想法是用一個傳感器監測一個停車位,然後彙總數據來計算該點已經被佔用的次數以及佔用的時間。
就是這樣,沒有時間窗口或任何東西,所以它看起來很簡單,但我拼湊數據。下面是我到目前爲止的代碼:
create context ParkingSpotOccupation
context PartionBySource
partition by source from SmartParkingEvent,
context ContextBorders
initiated by SmartParkingEvent(
type = "SpotTaken") as startEvent
terminated by SmartParkingEvent(
type = "SpotFree") as endEvent;
@Name("measurement_occupation")
context ParkingSpotOccupation
insert into CreateMeasurement
select
e.source as source,
"ParkingSpotOccupation" as type,
{
"startDate", min(e.time),
"endDate", max(e.time),
"duration", dateDifferenceInSec(max(e.time), min(e.time))
} as fragments
from
SmartParkingEvent e
output
snapshot when terminated;
我得到了相同的數據,最小值和最大值,所以我猜我做財產以後是錯誤的。
當我使用context.ContextBorders.startEvent.time和context.ContextBorders.endEvent.time而不是min和max時,不會觸發measurement_occupation語句。
如何創建許多SmartParkindEvents而上下文是開放的?如果只有一個你的結果是有道理的。你可以刪除輸出的最後一行,然後創建幾個SmartParkingEvents?它應該每次輸出。 – TyrManuZ