2017-06-05 115 views
0

我試圖寫一個簡單的神功查詢檢測模式 如:「冰」,「霜」「X」「Y」「蘋果」「水」SiddhiQL模式和窗口查詢

,事件冰& (6)

問題是下面的查詢是不是限制window.length(6)我怎麼能實現這個?

from every ((s1=windowedStream[s1.val=='ice']-> s2= windowedStream[s2.val=='cream']) 
      -> (a1=windowedStream[a1.val=='apple'] -> a2 = windowedStream[a2.val =='water'])) 
select s1.meta_timestamp, s1.val 
insert into filteredStream 

回答

0

根據現有符號,Siddhi允許您僅限於基於時間窗口的模式。請參考以下內容。

https://docs.wso2.com/display/CEP420/SiddhiQL+Guide+3.1#SiddhiQLGuide3.1-Pattern

作爲一種變通方法來限制基於一個長度窗口上的圖案,可能會引入稱爲索引一個第三屬性的「windowedStream」,其中指數反映事件到達的順序(即,第一索引事件是1,第二個事件的索引是2等等)。然後,下面的查詢將捕獲在6個事件的長度窗口內發生的模式。

from every ((s1=tempStream[s1.val=='ice']-> s2= tempStream[s2.val=='cream']) 
     -> (a1=tempStream[a1.val=='apple'] -> a2 = tempStream[a2.val =='water' and a2.index- s1.index <= 6])) 
select s1.meta_timestamp, s1.val 
insert into filteredStream; 

希望這會有所幫助。

+0

感謝,但問題是我要創建的滑動窗口和滑動窗口我想如果一個事件跟隨另一例如以檢測: A(如下)B和C(如下)d 冰(如下)奶油和蘋果(下面)水 在6窗口進一步基本上窗口將被視爲一個塊來檢測它保存的模式 – ha93

+0

據我瞭解,你希望這種模式發生在長度爲6的滑動窗口內,對嗎?如果是這樣的話,那麼給定的替代方案應該起作用。 –

+0

是的,謝謝你的工作^ _ ^,你知道任何類型的CEP儀表板,我可以在發生這種事件時發佈警報嗎? – ha93