考慮下列事件流和上下文的定義:艾斯波輸出解釋
create schema EventCreated(
source String,
type String,
time String,
value Integer
);
create context Trip
context bySource
partition by source from EventCreated,
context byEvents
initiated by EventCreated(
type = "IgnitionOn") as startEvent
terminated by EventCreated(
type = "IgnitionOff") as endEvent;
我想,當我的情況下結束,選擇開始和結束日期,即從startEvent「時間」屬性和endEvent。
我第一次嘗試是這樣的:
context Trip
select
context.byEvents.startEvent.time as startTime,
context.byEvents.endEvent.time as endTime
from
EventCreated e
output
snapshot when terminated;
然而,當我嘗試了,我不得不爲的結果是一個「空」的說法:
At: 2016-10-07 10:20:00.000
Statement: Stmt-3
嘗試幾次後,我意識到如果我沒有從EventCreated中選擇任何東西,輸出總是空的,例如,如果我這樣做:
context Trip
select
avg(e.value) as averageValue,
context.byEvents.startEvent.time as startTime,
context.byEvents.endEvent.time as endTime
from
EventCreated e
output
snapshot when terminated;
然後,我確實得到了不空的結果(與同一事件進來的,當然):
At: 2016-10-07 10:20:00.000
Statement: Stmt-3
Insert
Stmt-3-output={averageValue=3.0, startTime='2016-10-07T10:00:00.000', endTime=(null)}
所以,我的第一個問題是一個:有什麼語法我前人的精力用,如果我不想從事件中選擇任何事物,僅在事件結束時從事件本身中選擇事件?快照是錯誤的關鍵字嗎?有沒有辦法只從上下文中選擇某些東西,而不是事件流?儘管我可以從我的「啓動」事件(在我的上下文聲明中由「由......啓動」聲明的)中檢索數據,但我永遠無法從「終止」事件中檢索數據。我在這裏做錯了什麼?
我知道我可以做到這一點:
context Trip
select
context.byEvents.startEvent.time as startTime,
e.time as endTime
from
EventCreated e
output
last when terminated;
,但我真的很想知道有什麼錯我的語法會感覺是正確的。
如果我使用.win:keepall(),每個事件都有一個輸出,那不是我想要的。我想爲我的上下文輸出一個「彙總」輸出,但沒有彙總數據,只是我的第一個和最後一個事件的一些細節。 我不明白如何用你的例子寫下我的問題,請你詳細說明一下嗎? –
@IterableUnbound可以在這裏工作。 – goodie