我有事件的序列是這樣的:艾斯波計數的重複事件模式
- 事件A開始序列
- 多個事件乙發生
- 事件C停止序列
我用一種模式[每個A - >(B直到C)]做了它,它似乎是正確的(你怎麼看?)。但我努力從序列中出現的B事件中檢索和聚合信息。我想簡單地有一個計數,也許一些avgs,但似乎沒有工作(example1返回1,示例2返回0和示例3返回null,即使我的B事件存在)。
insert into CreateMeasurement
select
C.source as source,
"carDrivingAnalyse" as type,
C.time as time,
{
"example1", count(*),
"example2", count(B),
"example3", B.countOf()
} as fragments
from pattern [
every A = EventCreated(
type = "Ignition",
getString(A, "Ignition.status") = "ON")
-> (
B = EventCreated(
type = "DrivingEvent",
source = A.source,
getString(B, "DrivingEvent.prop1") = getString(A, "Ignition.prop1"),
getNumber(B, "DrivingEvent.prop2") = getNumber(A, "Ignition.prop2"))
until C = EventCreated(
type = "Ignition",
getString(C, "Ignition.status") = "OFF",
source = A.source,
getString(C, "Ignition.prop1") = getString(A, "Ignition.prop1"),
getNumber(C, "Ignition.prop2") = getNumber(A, "Ignition.prop2"))
)
]
感謝您的回答,我正在閱讀esper文檔,並試圖編寫上下文,但我已經在努力翻譯我的模式。看,我簡化了我的例子,說事件B和C必須有相同的來源作爲A,但實際上他們有更多的屬性來檢查(我編輯了我的原始帖子),現在我無法複製getString/getNumber功能在我的上下文中。 –
另外,條件計數呢?類似於「e.countOf(event - > getNumber(event,」c8y_HarshBehavior.speed「)> 100)」除非這不起作用。 –
我會把getNumber(事件,「c8y_HarshBehavior.speed」)> 100到where子句 – TyrManuZ